我想在我的 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/