问题标签 [findbugs]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
272 浏览

static-analysis - 维护 FindBugs 错误历史

FindBugs 提供了一种对错误进行数据挖掘的方法。这看起来很有趣,因为它有助于在各种修订中发现错误趋势。我想做的是:

每次提交到版本控制时,都会运行 FindBugs 并生成报告。是否可以生成从所有这些报告中获取数据并显示趋势的报告?有没有人做过类似的事情?

0 投票
2 回答
4317 浏览

ant - 使用 FindBugs ant 任务查找源路径

我正在尝试让 FindBugs ant 任务在生成的报告中包含源信息。

据我所知, ${package.srcdir} 属性的值是正确的;它指向源树的根目录,因此 ${package.srcdir}/com/mydomain/MyClass.java 是源文件的路径。

生成的报告包含一个<SrcDir>与给定 ant 任务的源路径匹配的元素,因此显然该<sourcePath>元素由 findbugs 任务处理。尽管如此,XML 报告中的包统计信息仅包含sourceFile="&lt;Unknown&gt;".

我错过了一些明显的东西吗?

0 投票
5 回答
13645 浏览

java - C/C++ 是否有 Findbugs 和/或 PMD 等价物?

我最近被问及Coverity Prevent的替代方案,用于包含 C/C++ 和 Java 的代码库。显然,在 Java 方面,可用的免费工具包括 Findbugs(编译代码分析)和 PMD(静态代码分析)。它们非常强大,尤其是当您开始研究与 IDE 的集成时(同样,它是免费的)。

但是,当您开始使用各种编译器、体系结构等进入 C/C++ 领域时,事情就变得很冒险了。

我已经为 Java 端提出了多种工具,包括 Findbugs 和 PMD。当考虑使用以下指标时,我正在寻找的是 C/C++ 方面的最佳选择:

  1. 价格:免费更好,但可以被更好的价值击败。但是,按代码行收费的定价模型令人恐惧。
  2. 功能集:这个工具如何让我的生活更美好?在我签入之前,在我们发布代码之前,它以什么方式检测我的错误?
  3. 可用性:我可以在办公桌上使用该工具吗?我可以分享报告和/或调查结果吗?我可以将该工具与 Fogbugz(我们在我的小组中使用)集成吗?我可以将该工具集成到 CruiseControl(或同等产品)中吗?

最终的工具将是像 Findbugs 和 PMD 的组合一样有用和可用的东西,具有相同的功能集,每个座位都是零美元。

0 投票
2 回答
836 浏览

java - Findbugs + JSR305:指定默认行为的可能性?

注意:我所说的那些注释是由 JSR305 指定的。

我有最新的 Findbugs (1.3.9), 当某些用 @Nonnull 注释的字段被分配为 null 时,它会正确发现错误。

但是,在我的项目中,“非空逻辑”是默认情况。我会说 null 仅在 5% 的情况下被明确允许

因此,用@Nonnull 注释 95% 的字段会非常不方便。我宁愿用 @Nullable 注释这 5% 的字段。

我试图用@Nonnull 注释整个包,它不会改变任何东西。

那么,以某种方式可以指定默认逻辑吗?

0 投票
2 回答
7759 浏览

java - 代码分析器:PMD 和 FindBugs

1.关于PMD:

1.1 如何设置 PMD 检查,忽略其中的一些,例如“变量名称太短或太长”、“删除空构造函数等” - 如果我这样做,则会出现另一个警告,说明该类必须有一些静态方法。基本上,这个类是空的,以供以后开发,我现在喜欢这样。

1.2 是否有必要遵循此警告建议?

1.3 那应该是什么意思?

1.4 这个呢?我很想改变这一点,但目前我没有想到关于改变:

2.关于 FindBugs:

2.1 在声明之后的某个时刻写入静态字段真的有那么糟糕吗?以下代码给了我一个警告:

其中appCalendar是一个静态变量。

2.2 此代码:

给出警告:

哪里objBRdrBufferedReader(FileReader)。会发生什么?readLine()可以为空吗?代码嵌套在while (objBRdr.ready())测试中,到目前为止,我在那里的问题为零。

Update1:​​当我将代码替换为以下内容时,2.2 已修复:

0 投票
1 回答
230 浏览

eclipse-plugin - FindBugs eclipse 插件类位置

是否可以像在 findbugs ant 任务中一样指定类位置?

或者是否有另一种方法来排除类文件的目录(我们将测试类编译到不同的目录并且不想在这些目录上使用 findbugs)

PV戈迪恩

0 投票
3 回答
1580 浏览

java - 在 BlockedQueue 上同步

我有一个正在审查的代码片段(使用FindBugs)。

}

当我在这段代码上运行 FindBugs 时,它抱怨 -

此方法对作为 java.util.concurrent 包(或其子类)中的类的实例的对象执行同步。这些类的实例有自己的并发控制机制,这些机制与关键字 synchronized 的使用不同且不兼容。

如果我注释掉同步的代码段synchronized(q){,它会抱怨 -

此方法调用 Object.notify() 或 Object.notifyAll() 而不明显持有对象上的锁。在不持有锁的情况下调用 notify() 或 notifyAll() 将导致抛出 IllegalMonitorStateException

我将如何实现此方法以使其通过 FindBugs 验证?在并发课程的情况下,上述实现是否适用于通知?

谢谢你。

0 投票
3 回答
3112 浏览

java - 简单的、普遍感兴趣的、基于代码分析器的 Java 问题

好的,在使用PMDFindBugs代码分析器审查了一些代码之后,我能够对审查过的代码进行很大的更改。但是,有些事情我不知道如何解决。我将在下面重复它们,并且(为了更好地参考)我会给每个问题一个数字。随意回答任何/所有问题。谢谢你的耐心。

1. 即使我已经删除了一些规则,但重新评估代码后相关的警告仍然存在。知道为什么吗?


2.请看声明:

以及 getter 和 setter 对对象的引用:

现在,我想知道为什么第一个声明没有给我任何关于 PMD 的警告,而第二个声明却给了我以下警告:

有关该警告的更多详细信息,请点击此处


3. 这是另一个警告,也是由 PMD 给出的:

有关该警告的更多详细信息,请点击此处

现在,我同意这一点,但是如果我写这样的东西怎么办:

我倾向于同意这条规则,但如果代码的性能表明存在多个退出点,我该怎么办?


4. PMD 给了我这个:

当我声明类似:

如果我删除了对 null 的赋值,我会删除这个信息(警告级别是信息),但是..我从 IDE 收到一个错误,说变量可能在稍后的代码中未初始化。所以,我有点坚持。压制警告是你能做的最好的事情吗?


5. PMD警告:

这是 GUI 组件的单一使用的情况或返回复杂对象的方法的情况。在 catch() 部分中将结果分配给 null 是为了避免返回不完整/不一致的对象。是的,应该使用 NullObject,但在某些情况下我不想这样做。那我应该取消那个警告吗?


6. FindBugs 警告 #1:

在方法中

静态变量

该变量允许我测试表单是否已经创建并且是否可见,并且在某些情况下我需要强制重新创建表单。我在这里看不到其他选择。有什么见解吗?(MyClass 实现了 Listener,因此重写了 handleEvent() 方法)。


7. FindBugs 警告 #2:

此警告基于其他类的简单导入显示。我是否需要重构这些导入以使此警告消失?还是问题出在 MyClass2 中?

好的,现在说得够多了……期待更新,基于更多的发现和/或你的答案。谢谢。

0 投票
2 回答
8769 浏览

java - 如何在安装时在 maven 中自动运行 findbugs

将findbugs 插件添加到 maven 很容易,这样如果我这样做它就会运行

但是,我希望它随时运行

就像单元测试一样。也就是说,如果 findbugs 发现任何错误,我不希望安装成功。我有办法做到这一点吗?

0 投票
5 回答
21862 浏览

java - MALICIOUS_CODE EI_EXPOSE_REP 中

我对我所有的代码运行 findbugs 并且只处理最重要的东西。我终于解决了最重要的问题,现在正在查看细节。我有一个简单的实体,比如用户:

这个类是不完整的,所以不要对我说它缺少serialVersionUID其他标准的东西,我只是关心birthDate安全漏洞。

现在,根据 findbugs 报告,由于我返回对可变对象的引用,因此存在潜在的安全风险。但在实践中,这真的很重要吗?

http://findbugs.sourceforge.net/bugDescriptions.html#EI_EXPOSE_REP

我想在这种情况下我仍然没有真正看到问题所在。我应该传入 along并从中设置日期吗?

沃尔特