【问题标题】:How can I get PMD result report as java object from code?如何从代码中获取 PMD 结果报告作为 java 对象?
【发布时间】:2018-04-07 07:24:52
【问题描述】:

我正在编写 PMD 包装器之类的东西(目标是使用 PMD 检查 java 代码,但具有某些功能),pmd-corepmd-java 包含在我的项目中,例如外部库,我正在执行 PMD 等方式:

int violations = PMD.doPMD(configuration);

doPMD 返回发现的违规数量。通过在PMDConfiguration 中配置reportFormat,我们可以将输出设置为System.out 或使用其中一种可用的报告格式(如xml、html、文本等)进行归档,但是...

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

【问题讨论】:

    标签: java pmd


    【解决方案1】:

    您可以使用自定义Renderer

    1. 创建net.sourceforge.pmd.renderers.Renderer 的自定义实现
    2. 在您的 configuration 调用 setReportFormat 时传递您的自定义渲染器的完全限定名称(即:"my.organization.package.InMemoryRenderer"
    3. 按照您的方式运行分析

    在分析过程中,您的渲染器将被实例化一次,并且将为每个文件的结果调用renderFileReport(Report) 方法。 Reporthas method's to obtain and iterate over violations, config and execution errors

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-15
      • 1970-01-01
      • 2018-08-06
      • 1970-01-01
      • 2012-03-24
      • 1970-01-01
      • 2012-03-08
      • 1970-01-01
      相关资源
      最近更新 更多