FindBugs 未经检查的选角投诉

问题描述 投票:0回答:2

考虑以下代码:

 public void broadcast(FacesEvent event)
    throws AbortProcessingException {

    if(!(event instanceof WrapperEvent)) {
      super.broadcast(event);
      return;
    }

    // Sets up the correct context and fire our wrapped event.
    GridWrapperEvent revent = (GridWrapperEvent)event; // FindBugs is complaining here 
    int oldRowIndex = getRowIndex();
    int oldColumnIndex = getColumnIndex();
    boolean oldClientIdRewritting = clientIdRewritting;
    setClientIdRewritting(revent.isClientIdRewritting());

    setActiveCell(revent.getRowIndex(), revent.getColumnIndex());

    FacesEvent rowEvent = revent.getFacesEvent();
    rowEvent.getComponent().broadcast(rowEvent);
    setActiveCell(oldRowIndex, oldColumnIndex);
    setClientIdRewritting(oldClientIdRewritting);
  }

FindBugs 正在抱怨注释行。我能做些什么吗? FindBugs 是这么说的:

未检查/未确认演员表 此演员阵容未经检查,并非全部 所转换类型的实例可以转换为它正在转换的类型 投射到。确保您的程序逻辑确保此转换将 不会失败。

java findbugs
2个回答
6
投票

如果您知道

event
将始终是
GridWrapperEvent
,则可以忽略该警告。否则,您可以将强制转换(以及依赖于它的逻辑)包装在像

这样的检查中
if (event instanceof GridWrapperEvent) {
  // ...
}

事实上,您已经在这样做了,但是对于(我认为)更通用的

WrapperEvent
类。也许您可以调整该检查而不是添加新的检查。


0
投票

您可以使用

spotbugs-exclude.xml
跳过误报警告

<?xml version="1.0" encoding="UTF-8"?>
<FindBugsFilter>
    <Match>
        <!-- Unchecked cast warning -->
        <Bug pattern="BC_UNCONFIRMED_CAST"/>
        <Class name="com.example.MyClass"/> <!-- Specify your class name -->
        <Method name="someMethod"/> <!-- Specify your method name -->
    </Match>
</FindBugsFilter>
© www.soinside.com 2019 - 2024. All rights reserved.