Java 在一个应用程序中使用大量静态分析工具
现在,我们有很多java静态代码分析工具 例如:Java 在一个应用程序中使用大量静态分析工具,java,sonarqube,code-analysis,findbugs,pmd,Java,Sonarqube,Code Analysis,Findbugs,Pmd,现在,我们有很多java静态代码分析工具 例如: 偏振模色散 持续专业发展 芬德布格斯 方格 声纳 JDepend 等等 在一个应用程序中使用所有这些工具是否好(如果使用maven,我们将在负面场景中失败构建)。它们是可互换的还是检查结果大致相同?或者只是过度? 这些工具可能有一些类别?我只使用FindBugs-greate工具。Realy有助于确定问题/潜在问题的位置 但有时您的代码应该以FindBugs提供冗余错误/警告的方式实现。我想可以用一些注释来抑制它 但是你永远不会用这个工具来代
- 偏振模色散
- 持续专业发展
- 芬德布格斯
- 方格
- 声纳
- JDepend
这些工具可能有一些类别?我只使用FindBugs-greate工具。Realy有助于确定问题/潜在问题的位置 但有时您的代码应该以FindBugs提供冗余错误/警告的方式实现。我想可以用一些注释来抑制它
但是你永远不会用这个工具来代替好的代码检查。我只使用FindBugs-greate工具。Realy有助于确定问题/潜在问题的位置 但有时您的代码应该以FindBugs提供冗余错误/警告的方式实现。我想可以用一些注释来抑制它
但是你永远不会用这个工具来代替好的代码检查。这取决于你想要执行的规则集。使用其他工具只有在提供额外检查时才有意义。另一个问题是,您必须以一种方式配置所有工具,使它们不会使用相互矛盾的规则进行检查。最后,您将得到大量冗余警告。
结论:尽量找到一套最少的工具来提供您需要的所有检查。这取决于您想要执行的规则集。使用其他工具只有在提供额外检查时才有意义。另一个问题是,您必须以一种方式配置所有工具,使它们不会使用相互矛盾的规则进行检查。最后,您将得到大量冗余警告。
结论:尽量找到一组最少的工具来提供您需要的所有检查。Sonar的目的是获得所有核心分析引擎(如PMD、Findbugs、Checkstyle)的结果,因此Sonar嵌入了所有这些工具以及更多工具 因此,我的建议是建立一个基于声纳的连续检查服务器,不要担心任何其他工具,因为声纳可以让您充分利用所有工具
您可以阅读以下关于持续检查的博客:Sonar的目的是获取所有核心分析引擎(如PMD、Findbugs、Checkstyle)的结果,这就是Sonar嵌入所有这些工具以及更多工具的原因 因此,我的建议是建立一个基于声纳的连续检查服务器,不要担心任何其他工具,因为声纳可以让您充分利用所有工具
您可以阅读以下关于持续检查的博客:它们不可交换,但您不需要在同一个应用程序中使用它们 类别:
它们不可交换,但您不需要在同一应用程序中全部交换 类别:
在(用于Maven项目的复合静态分析工具)中,我们使用Checkstyle、PMD、FindBugs和一些自定义规则。在某些地方,它们相互冲突,我们必须通过禁用其中一个中的某些规则来解决这些冲突。除此之外,这三个开源静态分析器共存并实施最重要(也是最简单)的设计原则。在(Maven项目的复合静态分析工具)中,我们使用Checkstyle、PMD、FindBugs和一些自定义规则。在某些地方,它们相互冲突,我们必须通过禁用其中一个中的某些规则来解决这些冲突。除此之外,这三个开源静态分析器共存于一起,并强制执行最重要(也是最简单)的设计原则。虽然它们在一定程度上帮助了开发人员,但这些报告中的大多数都是为了向项目经理和客户炫耀。如果Sonar包含PMD,为什么要全部使用它们,Checkstyle和FindBugs?我不打算全部使用它们,我只是想看看它们的区别。据我所知,仅使用sonar是最好的方法。虽然它们在一定程度上帮助了开发人员,但这些报告中的大多数都是为了向项目经理和客户炫耀。如果sonar包含PMD、Checkstyle和FindBugs,为什么要全部使用它们?我不打算全部使用它们,我只是想看看它们之间的区别。据我所知,仅使用声纳的最佳方法是+1。它可以通过FindBugs
@SuppressWarnings
注释进行抑制。参数是在查看错误详细信息时可以看到的唯一字符串标识符。注释名称与java.lang.SuppressWarnings相同,这有点令人讨厌。因此,在同一类中使用这两个函数时,必须使用完全限定的函数。+1可以使用FindBugs@SuppressWarnings
注释来抑制它。参数是在查看错误详细信息时可以看到的唯一字符串标识符。注释名称与java.lang.SuppressWarnings相同,这有点令人讨厌。因此,当这两个函数在同一个类中使用时,必须使用完全限定的函数。