首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PMD排除-带分级模式

PMD排除-带分级模式
EN

Stack Overflow用户
提问于 2015-08-27 10:40:17
回答 3查看 6.9K关注 0票数 6

我试图在Gradle中为PMD任务创建一些排除模式。

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

代码语言:javascript
复制
/* 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
                }
            }

        }
    }
}

ruleSet是:

代码语言:javascript
复制
<?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>

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

我做错了什么吗?检查答案似乎是在正确定义exclude-pattern,但是pmd正在分析这些文件。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-12-07 23:43:24

我遇到了同样的问题,添加一个空的ruleSets []属性似乎可以解决这个问题。

确保定义实际要在规则集文件中应用的规则--即将它们从ruleSet属性块移到文件中(如果有)。

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

代码语言:javascript
复制
// 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)
    }
}

我从这条线索中得到了提示:http://sourceforge.net/p/pmd/discussion/188193/thread/6e9c6017/

票数 8
EN

Stack Overflow用户

发布于 2021-04-08 09:54:57

代码语言:javascript
复制
Add below snippet in your build.gradle, you can exclude Classes and packages also
pmd {
    sourceSets = [ project.sourceSets.main ]
    ruleSetFiles = rootProject.files("codequality/pmd-ruleset.xml")
    ruleSets = []

    pmdMain {
        excludes = [
                '**/Application.*',
                '**/jivesoftware/.*'
        ]
    }
}
票数 2
EN

Stack Overflow用户

发布于 2022-05-08 14:46:28

对于我的ruleset.xml For Gradle pmd插件,可以使用以下命令:

代码语言:javascript
复制
<ruleset name="Custom Rules">
  
    <!-- Exclude generated open api classes -->
    <exclude-pattern>.*/src/main/java/com/tbd/tbd/tbd/.*</exclude-pattern>
    <exclude-pattern>.*/src/main/java/com/tbd/tbd/tbd/tbd/.*</exclude-pattern>

    ...

</ruleset>

你能试试下面的命令吗?

代码语言:javascript
复制
  ...
  <exclude-pattern>.*/src/main/java/net/java/.*</exclude-pattern>
  ...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32247190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档