标签: findbugs

有没有办法忽略一个FindBugs警告?

对于PMD,如果要忽略特定警告,可以使用// NOPMD该行来忽略该行.

FindBugs有类似的东西吗?

java warnings findbugs suppress-warnings

183
推荐指数
6
解决办法
9万
查看次数

关闭某些代码关闭Sonar

是否可以关闭特定代码块的声纳(www.sonarsource.org)测量值,哪一个不想测量?

一个例子是Findbugs输出的"保留堆栈跟踪"警告.离开服务器时,我可能只想将消息传递回客户端,不包括我刚捕获的实际异常,如果客户端不知道该异常(因为客户端没有JAR,那么例如包含例外).

java findbugs jenkins sonarqube

130
推荐指数
6
解决办法
14万
查看次数

PMD和FindBugs有什么区别?

有一个问题比较PMD和CheckStyle.但是,我找不到PMD和FindBugs之间差异/相似性的细分.我认为一个关键的区别是PMD适用于源代码,而FindBugs适用于编译的字节码文件.但就能力而言,它应该是一种选择还是选择,还是相互补充?

java static-analysis findbugs pmd

104
推荐指数
2
解决办法
4万
查看次数

是否为Checkstyle,PMD,FindBugs更换SonarQube?

我们正在从头开始研究一个Web项目,并且正在研究以下静态代码分析工具.

  • 约定(Checkstyle)
  • 不良做法(PMD)
  • 潜在的错误(FindBugs)

该项目建立在Maven之上.我没有使用多种工具来实现这一目的,而是在寻找一个灵活的解决方案并且遇到了SonarQube.

我们是否可以通过SonarQube实现Checkstyle,PMD和Findbugs的结果?

findbugs checkstyle pmd sonarqube

101
推荐指数
6
解决办法
6万
查看次数

Checkstyle与PMD

我们将静态分析工具引入到我们的Java产品的构建系统中.我们正在使用Maven2,因此CheckstylePMD集成是免费的.然而,就强制执行基本样式规则而言,这两个工具之间的功能似乎存在很大的重叠.

利用这两者有益处吗?我不想维护2个工具,如果一个工作.如果我们选择一个,我们应该使用哪一个?为什么?

我们还计划使用FindBugs.我们应该看看其他静态分析工具吗?

更新:共识似乎是PMD比CheckStyle更受欢迎.我没有看到使用两者的充分理由,我不想维护2套规则文件,因此我们可能会专门针对PMD.我们还将引入FindBugs,也许最终,Macker将实施架构规则.

java static-analysis findbugs checkstyle pmd

83
推荐指数
9
解决办法
6万
查看次数

如何处理Findbugs"可序列化类中的非瞬态非可序列化实例字段"?

考虑下面的课程.如果我针对它运行Findbugs,它将在第5行给出一个错误("可序列化类中的非瞬态非可序列化实例字段")但不在第7行.

1 public class TestClass implements Serializable {
2
3  private static final long serialVersionUID = 1905162041950251407L;
4
5  private Set<Integer> mySet;      // Findbugs error
6
7  private HashSet<Integer> myOtherSet;
8
9 }
Run Code Online (Sandbox Code Playgroud)

这是正确的,因为java.util.Set从不在其层次结构中实现Serializable,而java.util.HashSet也是如此.但是,最佳做法是针对接口而不是具体实现进行编码.

我怎样才能最好地处理这件事?

我可以在第3行添加@Suppresswarnings(justification ="No bug",values ="SE_BAD_FIELD").我的实际代码中有很多集合和列表,我担心它会丢失我的代码太多.

还有更好的方法吗?

java serialization findbugs

53
推荐指数
5
解决办法
6万
查看次数

延迟初始化不正确

Findbug告诉我,我使用了不正确的延迟初始化.

public static Object getInstance() {
    if (instance != null) {
        return instance;
    }

    instance = new Object();
    return instance;
}
Run Code Online (Sandbox Code Playgroud)

我没有看到任何错误.这是findbug的错误行为,还是我错过了什么?

java findbugs

53
推荐指数
3
解决办法
3万
查看次数

发现依赖于默认编码

我正在从FindBugs获得以下bug,

发现依赖于MyClass.print(String)中的默认编码:String.getBytes()

方法

protected void print (String str) {
{
private OutputStream outStream = null;
.....
outStream.write(str.getBytes());
.......
}
Run Code Online (Sandbox Code Playgroud)

请告诉我这是什么错误?我们如何解决这个问题?

提前致谢

findbugs

51
推荐指数
1
解决办法
5万
查看次数

如何使用Gradle FindBugs插件生成HTML输出

使用Gradle FindBugs插件,如何以HTML格式生成输出?

FindBugsExtension确实有一些配置设置.

findbugs {
    toolVersion = "2.0.1"
    sourceSets = [sourceSets.main]
    ignoreFailures = true
    reportsDir = file("$project.buildDir/findbugsReports")
    effort = "max"
    reportLevel = "high"
    visitors = ["FindSqlInjection", "SwitchFallthrough"]
    omitVisitors = ["FindNonShortCircuit"]
    includeFilter = file("$rootProject.projectDir/config/findbugs/includeFilter.xml")
    excludeFilter = file("$rootProject.projectDir/config/findbugs/excludeFilter.xml")
}
Run Code Online (Sandbox Code Playgroud)

但是没有输出属性可以设置为findbugs anttask.

html findbugs gradle

50
推荐指数
1
解决办法
2万
查看次数

连接关闭时ResultSet未关闭?

我一直在对我们的宠物项目之一进行代码审查(主要使用像FindBugs这样的工具),FindBugs将以下代码标记为错误(伪代码):

Connection conn = dataSource.getConnection();

try{
    PreparedStatement stmt = conn.prepareStatement();
    //initialize the statement
    stmt.execute();
    ResultSet rs =  stmt.getResultSet();
    //get data
}finally{
    conn.close();
}
Run Code Online (Sandbox Code Playgroud)

错误是此代码可能不会释放资源.我发现ResultSet和Statement没有关闭,所以我最后关闭了它们:

finally{
    try{
        rs.close()
    }catch(SqlException se){
        //log it
    }
    try{
        stmt.close();
    }catch(SqlException se){
        //log it
    }
    conn.close();
}
Run Code Online (Sandbox Code Playgroud)

但是我在很多项目中遇到过上述模式(来自不少公司),没有人关闭ResultSet或Statements.

在Connection关闭时,您是否遇到没有关闭ResultSet和Statements的麻烦?

我发现只有这个,它指的是Oracle在关闭Connections时关闭ResultSet的问题(我们使用Oracle db,因此我的更正).java.sql.api在Connection.close()javadoc中什么也没说.

java findbugs jdbc

49
推荐指数
6
解决办法
6万
查看次数