我正在写类似PMD包装器(目标是使用PMD检查java代码,但具有某些功能),pmd-core
和pmd-java
包含在我的项目中,如外部库和我'以这种方式执行PMD:
int violations = PMD.doPMD(configuration);
doPMD
返回找到的违规次数。通过在reportFormat
中配置PMDConfiguration
,我们可以将输出设置为System.out
或使用其中一种可用的报告格式(如xml,html,text等)进行归档,但是...... < / p>
如何将PMD结果(所有源文件都已处理)报告为java对象?也许,有可能获得list<>
所有RuleViolations或其他东西。
答案 0 :(得分:2)
您可以使用自定义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
实例,但您可以将数据存储在静态成员中(确保在PMD运行多线程分析时保持线程安全!)并提供静态getter。