如何从代码中将PMD结果报告作为java对象获取?

时间:2018-04-06 13:25:54

标签: java pmd

我正在写类似PMD包装器(目标是使用PMD检查java代码,但具有某些功能),pmd-corepmd-java包含在我的项目中,如外部库和我'以这种方式执行PMD:

int violations = PMD.doPMD(configuration);

doPMD返回找到的违规次数。通过在reportFormat中配置PMDConfiguration,我们可以将输出设置为System.out或使用其中一种可用的报告格式(如xml,html,text等)进行归档,但是...... < / p>

如何将PMD结果(所有源文件都已处理)报告为java对象?也许,有可能获得list<>所有RuleViolations或其他东西。

1 个答案:

答案 0 :(得分:2)

您可以使用自定义Renderer

  1. 创建net.sourceforge.pmd.renderers.Renderer
  2. 的自定义实现
  3. configuration电话setReportFormat上传递自定义渲染器的完全确认名称(即:"my.organization.package.InMemoryRenderer"
  4. 运行分析,就像你正在做的那样
  5. 在分析过程中,您的渲染器将仅实例化一次,并且将为每个文件的结果调用renderFileReport(Report)方法。 Report has method's to obtain and iterate over violations, config and execution errors

    如您所愿,这些是作为POJO提供的。

    您将无法访问Renderer实例,但您可以将数据存储在静态成员中(确保在PMD运行多线程分析时保持线程安全!)并提供静态getter。