ant - 将 PMD 的复制/粘贴检测器与 Gradle 结合使用

标签 ant gradle pmd

我想在我的 Gradle 构建中使用复制/粘贴检测器。

这就是为什么我决定将以下 Ant 任务(我发现 here )转换为 Gradle 语法:

<target name="cpd">
    <taskdef name="cpd" classname="net.sourceforge.pmd.cpd.CPDTask" />
    <cpd minimumTokenCount="100" outputFile="/home/tom/cpd.txt">
        <fileset dir="/home/tom/tmp/ant">
            <include name="**/*.java"/>
        </fileset>
    </cpd>
</target>

这是当前翻译的样子:

check << {
        ant.taskdef(name: 'cpd', classname: 'net.sourceforge.pmd.cpd.CPDTask', classpath: configurations.pmd.asPath)
        ant.cpd(minimumTokenCount: '100', outputFile: file('build/reports/pmd/copyPasteDetector.txt').toURI().toString()) {
            fileset(dir: 'src'){
                include(name: '**.java')
        }
    }
}

不幸的是,调用gradle check会产生net.sourceforge.pmd.cpd.ReportException,堆栈跟踪为here .

如何使用 Gradle 1.9 通过复制/粘贴检测器扫描我的源代码?

谢谢!

最佳答案

您还可以使用我的 gradle-cpd-plugin。请参阅https://github.com/aaschmid/gradle-cpd-plugin欲了解更多信息。应用 cpd 插件会自动将 cpd 添加为 check 任务的依赖项。

注意:我对扩展名 cpd 和任务不太满意,欢迎提出建议;-)

目前,它是 0.1 版本,但我正在从内部使用 CPD 的 ant 任务切换到直接调用它。这将包括对所有参数等的支持。这是一个使用示例:

apply plugin: 'cpd'

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'de.aaschmid.gradle.plugins:gradle-cpd-plugin:0.1'
    }
}

// optional - default is 5.1.0
cpd {
    toolVersion = '5.0.5'
}

tasks.cpd {
    reports {
        text.enabled = true
        xml.enabled = false
    }
    source = files('src/main/java')
}

关于ant - 将 PMD 的复制/粘贴检测器与 Gradle 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20447408/

相关文章:

java - 为什么 JavaFX 的 WebView 闪烁红色和绿色?

gradle - 如何在 `vendor.gradle`供应商设置文件中使用ant.properties?

java - Android - 使用 ant 创建更改配置值的构建配置

android - git克隆后的Gradle错误

java - 如何从源代码触发 Eclipse PMD 插件功能?

java - PMD 找不到规则集

java - 仅将 "NOPMD"字符串更改为单个规则

ant - 如何将 ivy 与 MSbuild 集成

svn - Coldfusion 部署的最佳实践

android - 如何在 Gradle 构建脚本(Android)中定义和使用常量?