Pmd

API 文档Pmd

对 Java 源代码文件运行一组静态代码分析规则,并生成发现的问题报告。

属性

属性描述
classpath

用于分析类的编译类路径。此类路径上的类在分析期间使用,但本身不被分析。这仅在 PMD 5.2.1 或更高版本中得到良好支持。

consoleOutput

是否将 PMD 结果写入 System.out

excludes

排除模式集。

ignoreFailures
孵化中

指定当此任务执行的验证失败时构建是否中断。

includes

包含模式集。

incrementalAnalysis

控制是否使用增量分析。这仅在 PMD 6.0.0 或更高版本中支持。有关更多详细信息,请参见 https://docs.pmd-code.org/pmd-doc-6.55.0/pmd_userdocs_incremental_analysis.html

javaLauncher
孵化中

用于启动工作进程的 Java 启动器

maxFailures

在停止构建之前允许的最大失败数。默认为 0,这意味着在任何失败时停止构建。0 及以上的值有效。如果

maxHeapSize
孵化中

工作进程的最大堆大小。如果未指定,Gradle 将提供最大堆大小。支持类似于命令行选项 -Xmx 的单位,例如 "1g"

minHeapSize
孵化中

工作进程的最小堆大小。如果未指定,则不设置最小堆大小。支持类似于命令行选项 -Xms 的单位,例如 "1g"

pmdClasspath

包含要使用的 PMD 库的类路径。

reports

此任务要生成的报告。

ruleSetConfig

要使用的自定义规则集(如果有)。它取代了 ruleSetFiles,但目前不支持多个规则集。有关如何编写规则集,请参见官方文档

ruleSetFiles

要使用的自定义规则集文件。有关如何编写规则集文件,请参见官方文档。如果您只想使用自定义规则集,必须清空 ruleSets

ruleSets

要使用的内置规则集。请参见官方列表以获取内置规则集。

rulesMinimumPriority

指定规则优先级的阈值。

source

应用包含和排除模式后,此任务的源。忽略不存在的源文件。

targetJdk

PMD 使用的目标 JDK。

threads

指定 PMD 使用的线程数。

方法

方法描述
exclude(excludeSpec)

添加一个排除规范。此方法可以多次调用以追加新的规范。给定闭包会接收 FileTreeElement 作为其参数。该闭包应返回 true 或 false。示例

exclude(excludes)

添加一个 ANT 风格的排除模式。此方法可以多次调用以追加新的模式,并且可以在一次调用中指定多个模式。如果没有提供排除模式,则不会排除任何文件。如果提供了排除模式,则文件必须不匹配任何排除模式才能被处理。

exclude(excludes)

添加一个 ANT 风格的排除模式。此方法可以多次调用以追加新的模式,并且可以在一次调用中指定多个模式。如果没有提供排除模式,则不会排除任何文件。如果提供了排除模式,则文件必须不匹配任何排除模式才能被处理。

exclude(excludeSpec)

添加一个排除规范。此方法可以多次调用以追加新的规范。如果没有提供排除模式,则不会排除任何文件。如果提供了排除模式,则文件必须不匹配任何排除模式才能被处理。

include(includeSpec)

添加一个包含规范。此方法可以多次调用以追加新的规范。给定闭包会接收 FileTreeElement 作为其参数。如果没有提供包含模式,则此容器中的所有文件都将被包含。如果提供了包含模式,则文件必须至少匹配一个包含模式或规范才能被包含。

include(includes)

添加一个 ANT 风格的包含模式。此方法可以多次调用以追加新的模式,并且可以在一次调用中指定多个模式。如果没有提供包含模式,则此容器中的所有文件都将被包含。如果提供了包含模式,则文件必须至少匹配一个包含模式才能被处理。

include(includes)

添加一个 ANT 风格的包含模式。此方法可以多次调用以追加新的模式,并且可以在一次调用中指定多个模式。如果没有提供包含模式,则此容器中的所有文件都将被包含。如果提供了包含模式,则文件必须至少匹配一个包含模式才能被处理。

include(includeSpec)

添加一个包含规范。此方法可以多次调用以追加新的规范。如果没有提供包含模式,则此容器中的所有文件都将被包含。如果提供了包含模式,则文件必须至少匹配一个包含模式或规范才能被包含。

reports(configureAction)

配置此任务要生成的报告。

source(sources)

为此任务添加一些源。给定的源对象将根据 Project.files(java.lang.Object[]) 进行评估。

脚本块

描述
reports

配置此任务要生成的报告。

属性详情

FileCollection classpath

用于分析类的编译类路径。此类路径上的类在分析期间使用,但本身不被分析。这仅在 PMD 5.2.1 或更高版本中得到良好支持。

使用 pmd 插件时的默认值
sourceSet.outputsourceSet.compileClasspath

boolean consoleOutput

是否将 PMD 结果写入 System.out

使用 pmd 插件时的默认值
project.pmd.consoleOutput

Set<String> excludes

排除模式集。

boolean ignoreFailures

注意:此属性正在孵化中,将来可能在 Gradle 版本中更改。

指定当此任务执行的验证失败时构建是否中断。

Set<String> includes

包含模式集。

Property<Boolean> incrementalAnalysis

控制是否使用增量分析。这仅在 PMD 6.0.0 或更高版本中支持。有关更多详细信息,请参见 https://docs.pmd-code.org/pmd-doc-6.55.0/pmd_userdocs_incremental_analysis.html

使用 pmd 插件时的默认值
false

Property<JavaLauncher> javaLauncher

注意:此属性正在孵化中,将来可能在 Gradle 版本中更改。

用于启动工作进程的 Java 启动器

Property<Integer> maxFailures

在停止构建之前允许的最大失败数。默认为 0,这意味着在任何失败时停止构建。0 及以上的值有效。如果

ignoreFailures

设置时,此值将被忽略,构建将继续(允许无限次失败)。

使用 pmd 插件时的默认值
project.pmd.maxFailures

Property<String> maxHeapSize

注意:此属性正在孵化中,将来可能在 Gradle 版本中更改。

工作进程的最大堆大小。如果未指定,Gradle 将提供最大堆大小。支持类似于命令行选项 -Xmx 的单位,例如 "1g"

Property<String> minHeapSize

注意:此属性正在孵化中,将来可能在 Gradle 版本中更改。

工作进程的最小堆大小。如果未指定,则不设置最小堆大小。支持类似于命令行选项 -Xms 的单位,例如 "1g"

FileCollection pmdClasspath

包含要使用的 PMD 库的类路径。

使用 pmd 插件时的默认值
project.configurations.pmd

PmdReports reports(只读)

此任务要生成的报告。

TextResource ruleSetConfig

要使用的自定义规则集(如果有)。它取代了 ruleSetFiles,但目前不支持多个规则集。有关如何编写规则集,请参见官方文档

    ruleSetConfig = resources.text.fromFile(resources.file("config/pmd/myRuleSets.xml"))
使用 pmd 插件时的默认值
project.pmd.ruleSetConfig

FileCollection ruleSetFiles

要使用的自定义规则集文件。有关如何编写规则集文件,请参见官方文档。如果您只想使用自定义规则集,必须清空 ruleSets

    ruleSetFiles = files("config/pmd/myRuleSet.xml")
使用 pmd 插件时的默认值
project.pmd.ruleSetFiles

List<String> ruleSets

要使用的内置规则集。请参见官方列表以获取内置规则集。

    ruleSets = ["basic", "braces"]
使用 pmd 插件时的默认值
project.pmd.ruleSets

Property<Integer> rulesMinimumPriority

指定规则优先级的阈值。

使用 pmd 插件时的默认值
project.pmd.rulesMinimumPriority

FileTree source(只读)

应用包含和排除模式后,此任务的源。忽略不存在的源文件。

源的 PathSensitivity 配置为 PathSensitivity.ABSOLUTE。如果您的源限制较少,请通过在子类中重写此方法来进行相应的更改。

使用 pmd 插件时的默认值
sourceSet.allJava

TargetJdk targetJdk

PMD 使用的目标 JDK。

使用 pmd 插件时的默认值
project.pmd.targetJdk

Property<Integer> threads

指定 PMD 使用的线程数。

使用 pmd 插件时的默认值
1

方法详情

SourceTask exclude(Closure excludeSpec)

添加一个排除规范。此方法可以多次调用以追加新的规范。给定闭包会接收 FileTreeElement 作为其参数。该闭包应返回 true 或 false。示例

copySpec {
  from 'source'
  into 'destination'
  //an example of excluding files from certain configuration:
  exclude { it.file in configurations.someConf.files }
}

如果没有提供排除模式,则不会排除任何文件。如果提供了排除模式,则文件必须不匹配任何排除模式才能被处理。

SourceTask exclude(Iterable<String> excludes)

添加一个 ANT 风格的排除模式。此方法可以多次调用以追加新的模式,并且可以在一次调用中指定多个模式。如果没有提供排除模式,则不会排除任何文件。如果提供了排除模式,则文件必须不匹配任何排除模式才能被处理。

SourceTask exclude(String... excludes)

添加一个 ANT 风格的排除模式。此方法可以多次调用以追加新的模式,并且可以在一次调用中指定多个模式。如果没有提供排除模式,则不会排除任何文件。如果提供了排除模式,则文件必须不匹配任何排除模式才能被处理。

SourceTask exclude(Spec<FileTreeElement> excludeSpec)

添加一个排除规范。此方法可以多次调用以追加新的规范。如果没有提供排除模式,则不会排除任何文件。如果提供了排除模式,则文件必须不匹配任何排除模式才能被处理。

SourceTask include(Closure includeSpec)

添加一个包含规范。此方法可以多次调用以追加新的规范。给定闭包会接收 FileTreeElement 作为其参数。如果没有提供包含模式,则此容器中的所有文件都将被包含。如果提供了包含模式,则文件必须至少匹配一个包含模式或规范才能被包含。

SourceTask include(Iterable<String> includes)

添加一个 ANT 风格的包含模式。此方法可以多次调用以追加新的模式,并且可以在一次调用中指定多个模式。如果没有提供包含模式,则此容器中的所有文件都将被包含。如果提供了包含模式,则文件必须至少匹配一个包含模式才能被处理。

SourceTask include(String... includes)

添加一个 ANT 风格的包含模式。此方法可以多次调用以追加新的模式,并且可以在一次调用中指定多个模式。如果没有提供包含模式,则此容器中的所有文件都将被包含。如果提供了包含模式,则文件必须至少匹配一个包含模式才能被处理。

SourceTask include(Spec<FileTreeElement> includeSpec)

添加一个包含规范。此方法可以多次调用以追加新的规范。如果没有提供包含模式,则此容器中的所有文件都将被包含。如果提供了包含模式,则文件必须至少匹配一个包含模式或规范才能被包含。

PmdReports reports(Action<? super PmdReports> configureAction)

配置此任务要生成的报告。

SourceTask source(Object... sources)

为此任务添加一些源。给定的源对象将根据 Project.files(java.lang.Object[]) 进行评估。

脚本块详情

reports { }

配置此任务要生成的报告。

委托给
来自 reportsPmdReports