-
Notifications
You must be signed in to change notification settings - Fork 25
如何检查 Java 项目
NaiveSystems Analyze 社区版将陆续集成多个可对 Java 项目进行静态分析的工具。
PMD 是一个开源的静态代码分析工具,旨在帮助开发者发现和修复 Java、JavaScript、PLSQL、XML 和 XSL 代码中的常见编码错误。PMD执行静态代码分析不需要实际运行代码,也不需要对代码进行编译。
PMD 支持的所有 Java 规则在 Java Rules,它将规则分为了八大类:Best Practices(bestpractices)、Code Style(codestyle)、Design(design)、Documentation(documentation)、Error Prone(errorprone)、Multithreading(multithreading)、Performance(performance)、Security(security)。
我们可以通过自定义规则集的方式来运行 PMD,示例代码在//pmd/java/assignment_to_non_final_static
,也可在 pmd-demo 上试用。
- 在
.naivesystems
文件夹新建pmd_java_rules
,它将自定义所要检查的 built-in 的规则合集。
errorprone/AssignmentToNonFinalStatic
上面只包含了一个 Error Prone 类别的 AssignmentToNonFinalStatic 这一个 built-in 的规则。如需检查更多的规则,将更多的规则以相同的格式列在此文件中。
NaiveSystems Analyze 将根据此文件自动生成一个 PMD 所需要的*.xml
文件,路径在 output/logs/pmd_java_rules.xml
。
-
运行镜像得到 PMD 的规则结果,将保存至
output/results.nsa_results
。在这个过程中,它将生成一个 SARIF 格式的中间文件,保存至output/logs/pmd_java_results.json
。 -
(Optional)如果需要
go test
测试,在*test.go
里调用runner.RunPMD
:
runner.RunPMD(tc.Srcdir, srcDir, logDir, testlib.GetPMDBinPath())
Error Prone 专注于识别并修复 Java 代码中的潜在错误和不良实践,它将在代码编译过程中进行静态分析。
对于 Maven 项目,需要将pom.xml
中添加配置至maven-compiler-plugin
:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
<configuration>
<source>8</source>
<target>8</target>
<encoding>UTF-8</encoding>
<compilerArgs>
<arg>-XDcompilePolicy=simple</arg>
<arg>-Xplugin:ErrorProne</arg>
</compilerArgs>
<annotationProcessorPaths>
<path>
<groupId>com.google.errorprone</groupId>
<artifactId>error_prone_core</artifactId>
<version>${error-prone.version}</version>
</path>
<!-- Other annotation processors go here.
If 'annotationProcessorPaths' is set, processors will no longer be
discovered on the regular -classpath; see also 'Using Error Prone
together with other annotation processors' below. -->
</annotationProcessorPaths>
</configuration>
</plugin>
</plugins>
</build>
详细的安装步骤及更多的参数配置请参见:https://errorprone.info/docs/installation。
NaiveSystems Analyze 将自动完成 Error Prone 的安装与配置,用户只需要:
- 在
.naivesystems
文件夹新建error_prone_rules
,指定需要检查的 bug pattern id。Error Prone 支持的所有规则在 Bug Patterns。
CollectionIncompatibleType
- 运行镜像得到 Error Prone 的规则结果,将同样保存至
output/results.nsa_results
。
可在 error-prone-demo 上试用。