PMD使用gradle排除模式

Gui*_*ino 3 pmd gradle

我正在尝试在Gradle中为PMD任务创建一些排除模式.

我的任务是以下一个方式生成的:

/* Allows generation of pmd config  */
allprojects {
    apply plugin: 'pmd'
}
gradle.projectsEvaluated {

    subprojects.each() { project ->


        if (project.hasProperty('android')) {

            project.task("runPmd", type: Pmd) {

                description "Run pmd"
                group 'verification'

                source = fileTree("${project.projectDir}/src/main/java")
                ruleSetFiles = files("${project.rootDir}/build-tools/pmd.xml")
                ignoreFailures = true

                reports {
                    xml.enabled = true
                    html.enabled = true
                }
            }

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

而ruleSet是:

<?xml version="1.0" encoding="UTF-8"?>
<ruleset name="MyCompany ruleset"
    xmlns="http://pmd.sourceforge.net/ruleset/2.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 http://pmd.sourceforge.net/ruleset_2_0_0.xsd">

    <description>
        MyCompany ruleset for Android PMD
    </description>

  <exclude-pattern>.*/org/jivesoftware/.*</exclude-pattern>
  <exclude-pattern>.*/net/java/.*</exclude-pattern>

...rules...
</ruleset>
Run Code Online (Sandbox Code Playgroud)

但在我的报告中,我得到了: 报告

难道我做错了什么?检查这个答案似乎我正在定义exclude-pattern权利,但pmd正在分析这些文件.

Kav*_*avi 8

我遇到了同样的问题,添加一个空的ruleSets []属性似乎为我解决了.
确保定义实际要在规则集文件中应用的规则 - ruleSet即将它们从属性块移动到文件(如果有的话).

这就是我的任务生成的样子:

// PMD
afterEvaluate {
    def variants = plugins.hasPlugin('com.android.application') ?
            android.applicationVariants : android.libraryVariants

    variants.each { variant ->
        def task = tasks.create("pmd${variant.name.capitalize()}", Pmd)

        task.group = 'verification'
        task.description = "Run PMD for the ${variant.description}."

        task.ruleSetFiles = files("pmd-ruleset.xml")
        task.ruleSets = []

        task.reports {
            xml.enabled = false
            html.enabled = true
        }

        def variantCompile = variant.javaCompile

        task.source = variantCompile.source

        task.dependsOn(variantCompile)
        tasks.getByName('check').dependsOn(task)
    }
}
Run Code Online (Sandbox Code Playgroud)

我从这个帖子得到了提示:http: //sourceforge.net/p/pmd/discussion/188193/thread/6e9c6017/