问题标签 [pmd]

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 投票
17 回答
68054 浏览

java - Checkstyle 与 PMD

我们正在为我们的 Java 产品的构建系统中引入静态分析工具。我们使用的是 Maven2,所以CheckstylePMD集成是免费的。然而,在执行基本样式规则方面,这两个工具之间的功能似乎有很大的重叠。

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

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

更新:共识似乎是 PMD 优于 CheckStyle。我看不出同时使用两者的充分理由,而且我不想维护两组规则文件,因此我们可能会专门针对 PMD。我们还将引入 FindBugs,也许最终还会引入 Macker 来执行架构规则。

0 投票
7 回答
1270 浏览

java - 检测作为参数传递的对象的变化值

我现在正在使用看起来像这样的代码

我认为更改作为参数传递的对象是不好的做法。是否有检测这种代码的工具?我查看了 findbugs、pmd 和 checkstyle,但找不到任何检查。

PS对不起不好的例子。

0 投票
3 回答
1005 浏览

java - 您知道将强制执行休眠最佳实践的 PMD 或 Checkstyle 规则吗?

例如,不通过字符串操作等来构建查询。

0 投票
5 回答
28408 浏览

java - 非瞬态类成员的 Java PMD 警告

在线的:

我收到以下 PMD 警告:

找到非瞬态、非静态成员。请标记为瞬态或提供访问器。

有人可以解释为什么会出现此警告及其含义吗?(我知道如何解决它,我不明白它为什么在那里......)

我也在许多其他成员声明中得到了这个......


编辑:我的课程绝对不是 bean,也不是可序列化的......

0 投票
2 回答
6433 浏览

java - PMD规则DataflowAnomalyAnalysis奇数

我有以下 JUnit 测试:

并且 PMD 给出了以下违规行为:

我文件中的第 36 行是定义方法的行:

我不明白这些违规行为在说什么。我应该在哪里定义这三个变量?为什么 AnnouncerThread 不在违规中?它的声明方式与我尝试重新排序声明无济于事的方式相同。

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 投票
1 回答
1078 浏览

pmd - 用于检查 html/jsp 文件的 PMD 规则

我想创建一个 PMD 规则来检查任何文件(txt、html、jsp 等)中的正则表达式。该规则不使用 Java 或 XPath 结构。

想法是读取文件并根据分析的行添加违规行为。我不知道如何使用规则方法来做到这一点......

任何想法?

谢谢,

安德烈

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 回答
4084 浏览

java - PMD - 检查过多的公共方法(但不包括构造函数和 getter/setter)

我希望添加一个 PMD 检查以确保一个类没有太多公共方法,但我不希望将构造函数和 getter/setter 包含在检查中。

ExcessivePublicCount 检查包括构造函数、getter/setter 和公共变量,我看不到自定义它的方法。

TooManyMethods 检查不包括 getter/setter,但包括其他所有内容(包括私有方法)。检查的 XPath 代码如下。

任何人都可以帮助我修改它以实现我想要的,或者建议另一种方法来使用 PMD 做到这一点?

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 中?

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