【问题标题】:Ease of writing custom rules in (Java) static code analysis tools易于在 (Java) 静态代码分析工具中编写自定义规则
【发布时间】:2011-08-06 08:02:25
【问题描述】:

目前我在一个团队工作,其中多个项目的源代码 (Java) 必须通过静态代码分析工具进行分析

但我想编写可以添加到工具提供的现有规则集的自定义规则(这些规则主要涉及与源代码中的文本/字符串匹配的正则表达式)。

特别是保持我应该能够轻松编写/添加我自己的自定义规则的观点,这些规则可以与工具的现有规则列表一起使用。

谁能建议我应该使用以下列表中的哪个工具(或工具组合)?

  1. PMD
  2. 检查样式
  3. 查找错误

已编辑:感谢Ira 的指导。我正在寻找与 Sonar 一起使用的静态代码分析工具。我希望现在问题很清楚了。

【问题讨论】:

  • 测试覆盖工具的自定义规则?我不认为他们中的大多数人都有这样的概念。您列出的工具不是代码覆盖工具。可以举个例子吗?
  • 就像 ira 说的,你可能是指静态分析工具。 sonar 结合了 pmd、checkstyle 和 findbugs,让您轻松启用/禁用规则。但我不知道编写自己的规则。尤其是因为工具 1-3 在分析代码的方式上完全不同。
  • 您可以排除 Findbugs。 FindBugs 适用于字节码而不是源代码。我认为 PMD 是您想要的。
  • 感谢大家的宝贵cmets。我的错误是,这个问题并非没有混淆。我编辑过同样的。欢迎任何答案。

标签: findbugs checkstyle pmd sonarqube


【解决方案1】:

【讨论】:

  • 注意到这里的前两个链接现在断开了
【解决方案2】:

我已经使用所有这些工具很多年了,我会推荐它们!

Checkstyle、Findbugs 和 PMD 都与声纳很好地集成,这三个都允许创建自定义检查,并且所有三个都允许在声纳中使用这些自定义检查。

PMD 可能使创建新检查变得最容易,但与其他检查相比,它也略有限制。 Findbugs 需要 .class 文件,但由于整个过程通常集成到某种形式的自动构建过程中,所以没问题。 Checkstyle 是我使用最多的工具,因为它既轻巧又强大。

每个工具都有一些其他工具没有的检查。特别是 Findbugs 有一些非常复杂的检查,多次以积极的方式让我感到惊讶。通过结合声纳中所有三种工具的优势,您可以构建一个强大的静态代码分析系统,真正帮助您的开发团队。

【讨论】:

    【解决方案3】:

    我使用与 Sonar 集成的 FindBugs 和 PMD。 我不鼓励使用 CheckStyke,因为它引入了一种并非所有开发人员都喜欢的格式样式。

    FundBugs 非常完整,帮助我找到了很多 bug。我建议将 FindBugs 与持续集成工具集成,例如 hudson (http://www.eclipse.org/hudson/)。

    Hudson 支持 FindBugs、CheckStyle 和 PMD。

    【讨论】:

    • Checkstyle 可以检查的不仅仅是格式化。我通常禁用与格式相关的检查,并改用自动代码格式化程序。但格式化只是 Checkstyle 的一小部分。
    猜你喜欢
    • 1970-01-01
    • 2011-01-10
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 2012-10-08
    • 1970-01-01
    相关资源
    最近更新 更多