PMD、checkstyle 和 findbugs android 设置
PMD, checkstyle and findbugs android setup
如何使用最新版本的 gradle 为 Android 项目设置 PMD、Findbugs 和 Checkstyle 静态代码分析工具?我尝试了几件事,但我没能成功。
谢谢
Checkstyle / PMD
有一个很好的插件可以用于 checkstyle 和 pmd。只需添加
buildscript {
repositories {
// ...
}
dependencies {
// ...
classpath 'com.android.tools.build:gradle:1.2.3'
// Enables checkStyle and pmd gradle support for android modules
classpath 'com.noveogroup.android:check:1.1.2'
}
}
到您的全局 gradle.build 并在您的模块中使用它,如下所示:
apply plugin: 'com.noveogroup.android.check'
check {
abortOnError false
checkstyle {
config "$rootProject.rootDir/path/to/your/checkstyle.xml"
}
pmd {
config "$rootProject.rootDir/path/tp/your/pmd-ruleset.xml"
}
}
或以下任何配置:
// configuration is optional
check {
// skip source code checking or not, false by default
skip true/false
// fails build if code style violation is found, false by default
abortOnError true/false
checkstyle {
// skip Checkstyle, false by deafult
skip true/false
// fails build if Checkstyle rule violation is found, false by default
abortOnError true/false
// configuration file
config project.file('path/to/checkstyle.xml')
// configuration resource
// see http://gradle.org/docs/2.2/release-notes#sharing-configuration-files-across-builds
config resources.text.fromFile(someTask)
// configuration path
config 'path/to/checkstyle.xml'
// predefined configurations: easy and hard
config easy()
config hard()
// plugin find configuration file in project.file('config/checkstyle.xml') by default
// if there are no configuration file, easy() configuration will be used
}
pmd {
// the same configuration as for Checkstyle
// plugin find configuration file in project.file('config/pmd.xml') by default
// if there are no configuration file, easy() configuration will be used
}
}
Here 你可以找到插件的主页和源代码。
查找错误
// 更新 //
noveogroup (1.2.3) 的最新插件现在也支持 findbugs。所以你可以像 checkstyle 或 pmd 一样自定义它:
// configuration of FindBugs checker
findbugs {
// the same configuration as for Checkstyle
// by default plugin finds configuration file in <rootProject>/config/findbugs.xml,
// after that in <project>/config/findbugs.xml and if there are no configuration
// file, easy() configuration will be used.
}
// 更新结束 //
我 运行 使用以下 gradle 脚本片段检查 findbugs,您将其添加到模块的 build.gradle:
apply plugin: 'findbugs'
task customFindbugs(type: FindBugs) {
ignoreFailures = true
effort = "default"
reportLevel = "medium"
classes = files("$project.buildDir/intermediates/classes")
excludeFilter = file("$rootProject.rootDir/config/findbugs/exclude.xml")
source = fileTree('src/main/java/')
classpath = files()
reports {
xml.enabled = false
xml.withMessages = true
html.enabled = !xml.isEnabled()
xml.destination "$project.buildDir/outputs/findbugs/findbugs-output.xml"
html.destination "$project.buildDir/outputs/findbugs/findbugs-output.html"
}
}
// UPDATE: renamed the task to customFindbugs and made it automatically be called when build is called
build.dependsOn customFindbugs
我的 exclude.xml 如下所示:
<FindBugsFilter>
<Match>
<Class name="~.*R$.*"/>
</Match>
<Match>
<Class name="~.*Manifest$.*"/>
</Match>
<Match>
<Class name="~.*_"/>
</Match>
</FindBugsFilter>
而最后一次检查用于省略由 AndroidAnnotations 生成的 类,您很可能不会使用此检查...
之后我可以 运行
完成任务
./gradlew customFindbugs
// or it is also included in the build task like the checks, too
./gradlew build
如何使用最新版本的 gradle 为 Android 项目设置 PMD、Findbugs 和 Checkstyle 静态代码分析工具?我尝试了几件事,但我没能成功。
谢谢
Checkstyle / PMD
有一个很好的插件可以用于 checkstyle 和 pmd。只需添加
buildscript {
repositories {
// ...
}
dependencies {
// ...
classpath 'com.android.tools.build:gradle:1.2.3'
// Enables checkStyle and pmd gradle support for android modules
classpath 'com.noveogroup.android:check:1.1.2'
}
}
到您的全局 gradle.build 并在您的模块中使用它,如下所示:
apply plugin: 'com.noveogroup.android.check'
check {
abortOnError false
checkstyle {
config "$rootProject.rootDir/path/to/your/checkstyle.xml"
}
pmd {
config "$rootProject.rootDir/path/tp/your/pmd-ruleset.xml"
}
}
或以下任何配置:
// configuration is optional
check {
// skip source code checking or not, false by default
skip true/false
// fails build if code style violation is found, false by default
abortOnError true/false
checkstyle {
// skip Checkstyle, false by deafult
skip true/false
// fails build if Checkstyle rule violation is found, false by default
abortOnError true/false
// configuration file
config project.file('path/to/checkstyle.xml')
// configuration resource
// see http://gradle.org/docs/2.2/release-notes#sharing-configuration-files-across-builds
config resources.text.fromFile(someTask)
// configuration path
config 'path/to/checkstyle.xml'
// predefined configurations: easy and hard
config easy()
config hard()
// plugin find configuration file in project.file('config/checkstyle.xml') by default
// if there are no configuration file, easy() configuration will be used
}
pmd {
// the same configuration as for Checkstyle
// plugin find configuration file in project.file('config/pmd.xml') by default
// if there are no configuration file, easy() configuration will be used
}
}
Here 你可以找到插件的主页和源代码。
查找错误
// 更新 //
noveogroup (1.2.3) 的最新插件现在也支持 findbugs。所以你可以像 checkstyle 或 pmd 一样自定义它:
// configuration of FindBugs checker
findbugs {
// the same configuration as for Checkstyle
// by default plugin finds configuration file in <rootProject>/config/findbugs.xml,
// after that in <project>/config/findbugs.xml and if there are no configuration
// file, easy() configuration will be used.
}
// 更新结束 //
我 运行 使用以下 gradle 脚本片段检查 findbugs,您将其添加到模块的 build.gradle:
apply plugin: 'findbugs'
task customFindbugs(type: FindBugs) {
ignoreFailures = true
effort = "default"
reportLevel = "medium"
classes = files("$project.buildDir/intermediates/classes")
excludeFilter = file("$rootProject.rootDir/config/findbugs/exclude.xml")
source = fileTree('src/main/java/')
classpath = files()
reports {
xml.enabled = false
xml.withMessages = true
html.enabled = !xml.isEnabled()
xml.destination "$project.buildDir/outputs/findbugs/findbugs-output.xml"
html.destination "$project.buildDir/outputs/findbugs/findbugs-output.html"
}
}
// UPDATE: renamed the task to customFindbugs and made it automatically be called when build is called
build.dependsOn customFindbugs
我的 exclude.xml 如下所示:
<FindBugsFilter>
<Match>
<Class name="~.*R$.*"/>
</Match>
<Match>
<Class name="~.*Manifest$.*"/>
</Match>
<Match>
<Class name="~.*_"/>
</Match>
</FindBugsFilter>
而最后一次检查用于省略由 AndroidAnnotations 生成的 类,您很可能不会使用此检查...
之后我可以 运行
完成任务./gradlew customFindbugs
// or it is also included in the build task like the checks, too
./gradlew build