如何从代码中获取 PMD 结果报告作为 java 对象?
How can I get PMD result report as java object from code?
我正在写类似 PMD 包装器的东西(目标是使用 PMD 检查 java 代码,但具有某些功能),pmd-core
和 pmd-java
包含在我的项目中像外部库,我正在以这种方式执行 PMD:
int violations = PMD.doPMD(configuration);
doPMD
returns 发现的违规次数。通过在 PMDConfiguration
中配置 reportFormat
,我们可以将输出设置为 System.out
或使用可用报告格式之一(如 xml、html、文本等)的文件.), 但是...
如何将 PMD 结果(所有源文件的处理结果)报告为 java 对象?也许,可以获得所有 RuleViolations 或其他东西的 list<>
。
您可以使用自定义 Renderer
。
- 创建
net.sourceforge.pmd.renderers.Renderer
的自定义实现
- 在您的
configuration
调用 setReportFormat
中传递自定义渲染器的完全限定名称(即:"my.organization.package.InMemoryRenderer"
)
- 运行分析,跟你一样
在分析过程中,您的渲染器将只实例化一次,并且将为每个文件的结果调用 renderFileReport(Report)
方法。 Report
has method's to obtain and iterate over violations, config and execution errors.
如您所愿,这些是作为 POJO 提供的。
您将无权访问 Renderer
实例,但您可以将数据存储在静态成员中(确保将 thread-safety 保留为 PMD 运行 的多线程分析! ) 并提供静态 getter.
我正在写类似 PMD 包装器的东西(目标是使用 PMD 检查 java 代码,但具有某些功能),pmd-core
和 pmd-java
包含在我的项目中像外部库,我正在以这种方式执行 PMD:
int violations = PMD.doPMD(configuration);
doPMD
returns 发现的违规次数。通过在 PMDConfiguration
中配置 reportFormat
,我们可以将输出设置为 System.out
或使用可用报告格式之一(如 xml、html、文本等)的文件.), 但是...
如何将 PMD 结果(所有源文件的处理结果)报告为 java 对象?也许,可以获得所有 RuleViolations 或其他东西的 list<>
。
您可以使用自定义 Renderer
。
- 创建
net.sourceforge.pmd.renderers.Renderer
的自定义实现
- 在您的
configuration
调用setReportFormat
中传递自定义渲染器的完全限定名称(即:"my.organization.package.InMemoryRenderer"
) - 运行分析,跟你一样
在分析过程中,您的渲染器将只实例化一次,并且将为每个文件的结果调用 renderFileReport(Report)
方法。 Report
has method's to obtain and iterate over violations, config and execution errors.
如您所愿,这些是作为 POJO 提供的。
您将无权访问 Renderer
实例,但您可以将数据存储在静态成员中(确保将 thread-safety 保留为 PMD 运行 的多线程分析! ) 并提供静态 getter.