pmd:pmd

注意:这个目标应该用作 Maven 报告。

全名

org.apache.maven.plugins:maven-pmd-plugin:3.16.0:pmd

说明

根据插件中设置的规则集和配置创建 PMD 站点报告。除了站点报告之外,它还可以生成以下任何格式的 pmd 输出文件:xml、csv 或 txt。

属性

  • 需要执行一个 Maven 项目。
  • 需要对范围内的工件进行依赖解析:test
  • 自版本:2.0

必需参数

姓名 类型 自从 描述
<输出目录> 文件 2.0 最终 HTML 报告的输出目录。请注意,仅当目标直接从命令行运行或在默认生命周期期间运行时,才会评估此参数。如果目标作为站点生成的一部分间接运行,则使用在 Maven 站点插件中配置的输出目录。
用户属性是project.reporting.outputDirectory
<目标目录> 文件 2.0 中间 XML 报告的输出目录。
用户属性是project.build.directory

可选参数

姓名 类型 自从 描述
<聚合> 布尔值 2.2 已弃用。从 3.15.0 开始,请改用目标pmd:aggregate-pmdpmd:aggregate-cpd
默认值为false
用户属性是聚合
<分析缓存> 布尔值 3.8 启用分析缓存,从而加快 PMD。这需要一个缓存文件,其中包含上次 PMD 运行的结果。因此,只有在运行之间未清理此文件时,缓存才有效。
默认值为false
用户属性是pmd.analysisCache
<分析缓存位置> 细绳 3.8 分析缓存的位置(如果已启用)。此文件包含上次 PMD 运行的结果,不得在连续 PMD 运行之间进行清理。否则缓存没有被使用。如果文件不存在,则 PMD 会像未启用缓存一样执行并分析所有文件。否则只会再次分析更改的文件。
默认值为${project.build.directory}/pmd/pmd.cache
用户属性是pmd.analysisCacheLocation
<基准> 布尔值 3.1 控制 PMD 是否将跟踪基准信息。
默认值为false
用户属性是pmd.benchmark
<基准输出文件名> 细绳 3.1 基准输出文件名。
默认值为${project.build.directory}/pmd-benchmark.txt
用户属性是pmd.benchmarkOutputFilename
<compileSourceRoots> 列表 3.7 指定要用于 PMD 的源目录的位置。默认为project.compileSourceRoots
默认值为${project.compileSourceRoots}
<excludeFromFailureFile> 细绳 3.7 列出要从失败中排除的类和规则的文件。对于 PMD,这是一个属性文件。对于 CPD,这是一个文本文件,其中包含允许复制的类的逗号分隔列表。
用户属性是pmd.excludeFromFailureFile
<排除根​​> 文件[] 2.2 应排除的项目源目录。
<不包括> 列表 2.2 要从检查中排除的文件列表。可以包含 Ant 风格的通配符和双通配符。请注意,这些排除模式仅在源文件相对于其源根目录的路径上运行。换句话说,文件是根据它们的包和/或类名排除的。如果要排除整个源根目录,请改用参数excludeRoots
<格式> 细绳 2.0 除 HTML 报告外,还设置输出格式类型。必须是以下之一:“none”、“csv”、“xml”、“txt”或要使用的 PMD 渲染器的完整类名。有关可用的渲染器,请参阅 net.sourceforge.pmd.renderers 包 javadoc。在任何情况下都会生成 XML,因为检查目标需要这种格式(pmd:check、pmd:aggregator-check、pmd:cpd-check、pmd:aggregator-cpd-check)。
默认值为xml
用户属性是格式
<包括测试> 布尔值 2.2 在测试上运行 PMD。
默认值为false
<includeXmlInSite> 布尔值 3.0 是否在站点中包含 PMD/CPD 生成的 xml 文件。
默认值为false
<包括> 列表 2.2 检查时要包含的文件列表。可以包含 Ant 风格的通配符和双通配符。默认为 **\/*.java。
<jdk工具链> 地图 3.14.0

允许配置用于通过 maven 工具链运行 PMD 的 jvm。这允许使用一个 jvm 构建项目并使用另一个 jvm 执行 PMD 的配置。这会否决 maven-toolchain-plugin 选择的工具链。

例子:

(有关更多信息, 请参阅工具链指南)

<configuration>
       ...
       <jdkToolchain>
           <version>1.11</version>
       </jdkToolchain>
   </configuration>

   <configuration>
       ...
       <jdkToolchain>
           <version>1.8</version>
           <vendor>zulu</vendor>
       </jdkToolchain>
   </configuration>
   
注意:至少需要 Maven 3.3.1
<语言> 细绳 3.0 PMD 分析的编程语言。当前有效值为javajavascriptjsp
默认值为java
<链接外部参照> 布尔值 2.0 将违规行号链接到源外部参照。如果正在使用 jxr 插件,将自动创建链接。
默认值为true
用户属性是linkXRef
<最低优先级> 整数 2.1 规则优先级阈值;优先级低于此的规则将不会被评估。
默认值为5
用户属性是minimumPriority
<输出编码> 细绳 2.5 编写非 HTML 报告时的文件编码。
默认值为${project.reporting.outputEncoding}
用户属性是outputEncoding
<renderProcessingErrors> 布尔值 3.9.0 还将处理错误呈现到 HTML 报告中。处理错误是 PMD 在执行规则时遇到的问题。它可以在规则执行期间解析错误或异常。处理错误表明 PMD 中存在错误,并且提供的信息有助于报告和修复 PMD 中的错误。
默认值为true
用户属性是pmd.renderProcessingErrors
<renderRuleViolationPriority> 布尔值 3.10.0 还将规则优先级呈现到 HTML 报告中。
默认值为true
用户属性是pmd.renderRuleViolationPriority
<renderViolationsByPriority> 布尔值 3.12.0 在 HTML 报告中添加一个部分,除了按文件分组外,还按规则优先级对发现的违规进行分组。
默认值为true
用户属性是pmd.renderViolationsByPriority
<规则集> 细绳[] 2.0 要使用的 PMD 规则集。有关可用规则的​​列表,请参阅Stock Java 规则集。默认为此 maven 插件 ( /rulesets/java/maven-pmd-plugin-default.xml ) 提供的自定义规则集。
<规则集目标目录> 文件 3.13.0 在执行 PMD 之前,已配置的规则集被解析并复制到此目录中。

注意:在 3.13.0 之前,默认为 ${project.build.directory}。


默认值为${project.build.directory}/pmd/rulesets
用户属性是pmd.rulesetsTargetDirectory
<showPmdLog> 布尔值 3.9.0 将 PMD 日志重定向到 maven 注销。启用后,PMD 日志输出将重定向到 maven,以便它与所有其他日志输出一起在控制台中可见。此外,如果 maven 以调试标志(-X--debug)启动,则 PMD 记录器也配置为进行调试。
默认值为true
用户属性是pmd.showPmdLog
<跳过> 布尔值 2.1 跳过 PMD 报告生成。通过“-Dpmd.skip=true”在命令行上最有用。
默认值为false
用户属性是pmd.skip
<skipEmptyReport> 布尔值 3.1 如果没有发现违规或重复,则跳过 PMD/CPD 报告生成。默认为false

注意:在3.13.0 版本中,默认值从true更改为 false 。


默认值为false
<skipPmdError> 布尔值 3.1 每个默认的 pmd 执行错误都会被忽略,不会破坏整个
默认值是true
用户属性是pmd.skipPmdError
<源编码> 细绳 2.3 读取 Java 源代码时使用的文件编码。
默认值为${project.build.sourceEncoding}
用户属性是编码
<抑制标记> 细绳 3.4 用于指示是否应禁止 RuleViolation 的源级别标记。如果未设置,将使用 PMD 的默认值,即NOPMD。另请参阅PMD 抑制警告
用户属性是pmd.suppressMarker
<targetJdk> 细绳 2.0 要分析的目标JDK。应该与编译器插件中使用的源相匹配。默认 PMD版本的有效值当前为1.3、1.4、1.5、1.6、1.7、1.8、9、10、11、12、13、14、15、1617_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

您可以通过将 PMD 指定为依赖项来覆盖默认 PMD 版本,请参阅在运行时升级 PMD

注意:此参数仅在语言参数设置为java时使用。


默认值为${maven.compiler.source}
用户属性是targetJdk
<testSourceRoots> 列表 3.7 包含要用于 PMD 的测试源的目录。默认为project.testCompileSourceRoots
默认值为${project.testCompileSourceRoots}
<类型分辨率> 布尔值 3.0 控制是否应将项目的编译/测试类路径传递给 PMD 以启用其类型解析功能。
默认值为true
用户属性是pmd.typeResolution
<外部参照位置> 文件 2.0 要链接到的外部参照的位置。
默认值为${project.reporting.outputDirectory}/xref
<外部参照测试位置> 文件 2.0 要链接到的测试外部参照的位置。
默认值为${project.reporting.outputDirectory}/xref-test

参数详情

<聚合>

已弃用。从 3.15.0 开始,请改用目标pmd:aggregate-pmdpmd:aggregate-cpd
是在根目录构建聚合报告,还是构建单独的报告。
  • 类型布尔值
  • : 2.2
  • 要求
  • 用户属性聚合
  • 默认值

<分析缓存>

启用分析缓存,从而加快 PMD。这需要一个缓存文件,其中包含上次 PMD 运行的结果。因此,只有在运行之间未清理此文件时,缓存才有效。
  • 类型布尔值
  • : 3.8
  • 要求
  • 用户属性pmd.analysisCache
  • 默认值

<分析缓存位置>

分析缓存的位置(如果已启用)。此文件包含最后一次 PMD 运行的结果,不得在连续 PMD 运行之间清理。否则缓存没有被使用。如果文件不存在,则 PMD 会像没有启用缓存一样执行并分析所有文件。否则只会再次分析更改的文件。
  • 类型java.lang.String
  • : 3.8
  • 要求
  • 用户属性pmd.analysisCacheLocation
  • 默认值${project.build.directory}/pmd/pmd.cache

<基准>

控制 PMD 是否将跟踪基准信息。
  • 类型布尔值
  • : 3.1
  • 要求
  • 用户属性pmd.benchmark
  • 默认值

<基准输出文件名>

基准输出文件名。
  • 类型java.lang.String
  • : 3.1
  • 要求
  • 用户属性pmd.benchmarkOutputFilename
  • 默认值${project.build.directory}/pmd-benchmark.txt

<compileSourceRoots>

指定要用于 PMD 的源目录的位置。默认为project.compileSourceRoots
  • 类型java.util.List
  • : 3.7
  • 要求
  • 默认值${project.compileSourceRoots}

<excludeFromFailureFile>

列出要从失败中排除的类和规则的文件。对于 PMD,这是一个属性文件。对于 CPD,这是一个文本文件,其中包含允许复制的类的逗号分隔列表。
  • 类型java.lang.String
  • : 3.7
  • 要求
  • 用户属性pmd.excludeFromFailureFile

<排除根​​>

应排除的项目源目录。
  • 类型java.io.File[]
  • : 2.2
  • 要求

<不包括>

要从检查中排除的文件列表。可以包含 Ant 风格的通配符和双通配符。请注意,这些排除模式仅在源文件相对于其源根目录的路径上运行。换句话说,文件是根据它们的包和/或类名排除的。如果要排除整个源根目录,请改用参数excludeRoots
  • 类型java.util.List
  • : 2.2
  • 要求

<格式>

除 HTML 报告外,还设置输出格式类型。必须是以下之一:“none”、“csv”、“xml”、“txt”或要使用的 PMD 渲染器的完整类名。有关可用的渲染器,请参阅 net.sourceforge.pmd.renderers 包 javadoc。在任何情况下都会生成 XML,因为检查目标需要这种格式(pmd:check、pmd:aggregator-check、pmd:cpd-check、pmd:aggregator-cpd-check)。
  • 类型java.lang.String
  • : 2.0
  • 要求
  • 用户属性格式
  • 默认值xml

<包括测试>

在测试上运行 PMD。
  • 类型布尔值
  • : 2.2
  • 要求
  • 默认值

<includeXmlInSite>

是否在站点中包含 PMD/CPD 生成的 xml 文件。
  • 类型布尔值
  • : 3.0
  • 要求
  • 默认值

<包括>

检查时要包含的文件列表。可以包含 Ant 风格的通配符和双通配符。默认为 **\/*.java。
  • 类型java.util.List
  • : 2.2
  • 要求

<jdk工具链>

允许配置用于通过 maven 工具链运行 PMD 的 jvm。这允许使用一个 jvm 构建项目并使用另一个 jvm 执行 PMD 的配置。这会否决 maven-toolchain-plugin 选择的工具链。

例子:

(有关更多信息, 请参阅工具链指南)

<configuration>
       ...
       <jdkToolchain>
           <version>1.11</version>
       </jdkToolchain>
   </configuration>

   <configuration>
       ...
       <jdkToolchain>
           <version>1.8</version>
           <vendor>zulu</vendor>
       </jdkToolchain>
   </configuration>
   
注意:至少需要 Maven 3.3.1
  • 类型java.util.Map
  • 3.14.0
  • 要求

<语言>

PMD 分析的编程语言。当前有效值为javajavascriptjsp
  • 类型java.lang.String
  • : 3.0
  • 要求
  • 默认值java

<链接外部参照>

将违规行号链接到源外部参照。如果正在使用 jxr 插件,将自动创建链接。
  • 类型布尔值
  • : 2.0
  • 要求
  • 用户属性linkXRef
  • 默认值

<最低优先级>

规则优先级阈值;优先级低于此的规则将不会被评估。
  • 类型整数
  • : 2.1
  • 要求
  • 用户属性minimumPriority
  • 默认值5

<输出目录>

最终 HTML 报告的输出目录。请注意,仅当目标直接从命令行运行或在默认生命周期期间运行时,才会评估此参数。如果目标作为站点生成的一部分间接运行,则使用在 Maven 站点插件中配置的输出目录。
  • 类型java.io.File
  • : 2.0
  • 要求
  • 用户属性project.reporting.outputDirectory

<输出编码>

编写非 HTML 报告时的文件编码。
  • 类型java.lang.String
  • : 2.5
  • 要求
  • 用户属性输出编码
  • 默认值${project.reporting.outputEncoding}

<renderProcessingErrors>

还将处理错误呈现到 HTML 报告中。处理错误是 PMD 在执行规则时遇到的问题。它可以在规则执行期间解析错误或异常。处理错误表明 PMD 中存在错误,并且提供的信息有助于报告和修复 PMD 中的错误。
  • 类型布尔值
  • 3.9.0
  • 要求
  • 用户属性pmd.renderProcessingErrors
  • 默认值

<renderRuleViolationPriority>

还将规则优先级呈现到 HTML 报告中。
  • 类型布尔值
  • 3.10.0
  • 要求
  • 用户属性pmd.renderRuleViolationPriority
  • 默认值

<renderViolationsByPriority>

在 HTML 报告中添加一个部分,除了按文件分组外,还按规则优先级对发现的违规进行分组。
  • 类型布尔值
  • 3.12.0
  • 要求
  • 用户属性pmd.renderViolationsByPriority
  • 默认值

<规则集>

要使用的 PMD 规则集。有关可用规则的​​列表,请参阅Stock Java 规则集。默认为此 maven 插件 ( /rulesets/java/maven-pmd-plugin-default.xml ) 提供的自定义规则集。
  • 类型java.lang.String[]
  • : 2.0
  • 要求

<规则集目标目录>

在执行 PMD 之前,已配置的规则集被解析并复制到此目录中。

注意:在 3.13.0 之前,默认为 ${project.build.directory}。

  • 类型java.io.File
  • 3.13.0
  • 要求
  • 用户属性pmd.rulesetsTargetDirectory
  • 默认值${project.build.directory}/pmd/rulesets

<showPmdLog>

将 PMD 日志重定向到 maven 注销。启用后,PMD 日志输出将重定向到 maven,以便它与所有其他日志输出一起在控制台中可见。此外,如果 maven 以调试标志(-X--debug)启动,则 PMD 记录器也配置为进行调试。
  • 类型布尔值
  • 3.9.0
  • 要求
  • 用户属性pmd.showPmdLog
  • 默认值

<跳过>

跳过 PMD 报告生成。通过“-Dpmd.skip=true”在命令行上最有用。
  • 类型布尔值
  • : 2.1
  • 要求
  • 用户属性pmd.skip
  • 默认值

<skipEmptyReport>

如果没有发现违规或重复,则跳过 PMD/CPD 报告生成。默认为false

注意:在3.13.0 版本中,默认值从true更改为 false 。

  • 类型布尔值
  • : 3.1
  • 要求
  • 默认值

<skipPmdError>

每个默认的 pmd 执行错误都会被忽略,不会破坏整体
  • 类型布尔值
  • : 3.1
  • 要求
  • 用户属性pmd.skipPmdError
  • 默认值

<源编码>

读取 Java 源代码时使用的文件编码。
  • 类型java.lang.String
  • : 2.3
  • 要求
  • 用户属性编码
  • 默认值${project.build.sourceEncoding}

<抑制标记>

用于指示是否应禁止 RuleViolation 的源级别标记。如果未设置,将使用 PMD 的默认值,即NOPMD。另请参阅PMD 抑制警告
  • 类型java.lang.String
  • : 3.4
  • 要求
  • 用户属性pmd.suppressMarker

<目标目录>

中间 XML 报告的输出目录。
  • 类型java.io.File
  • : 2.0
  • 要求
  • 用户属性project.build.directory

<targetJdk>

要分析的目标JDK。应该与编译器插件中使用的源相匹配。默认 PMD版本的有效值当前为1.3、1.4、1.5、1.6、1.7、1.8、9、10、11、12、13、14、15、1617_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

您可以通过将 PMD 指定为依赖项来覆盖默认 PMD 版本,请参阅在运行时升级 PMD

注意:此参数仅在语言参数设置为java时使用。

  • 类型java.lang.String
  • : 2.0
  • 要求
  • 用户属性targetJdk
  • 默认值${maven.compiler.source}

<testSourceRoots>

包含要用于 PMD 的测试源的目录。默认为project.testCompileSourceRoots
  • 类型java.util.List
  • : 3.7
  • 要求
  • 默认值${project.testCompileSourceRoots}

<类型分辨率>

控制是否应将项目的编译/测试类路径传递给 PMD 以启用其类型解析功能。
  • 类型布尔值
  • : 3.0
  • 要求
  • 用户属性pmd.typeResolution
  • 默认值

<外部参照位置>

要链接到的外部参照的位置。
  • 类型java.io.File
  • : 2.0
  • 要求
  • 默认值${project.reporting.outputDirectory}/xref

<外部参照测试位置>

要链接到的测试外部参照的位置。
  • 类型java.io.File
  • : 2.0
  • 要求
  • 默认值${project.reporting.outputDirectory}/xref-test