現在のAntベースのビルドプロセスを再現する新しいGradleベースのビルドシステムの機能を評価しています。Gradleの初心者として、Android Gradleプラグインでcheckstyleを実行できませんでした。
環境:
gradle 1.6は標準Javaプロジェクトで正常に動作しています(checkstyleチェックターゲットが含まれています))
up-to-date Android SDK(22.0.1 with platform tools and build tools 17))
eclipseなし、Android studio、私の素敵な端末のみ
症状:
ターゲットプロジェクトは https://github.com/nibua-r/LigoTextDemo であり、gradleを使用してビルドすることに成功しましたが、apply plugin: checkstyle
を単純にbuild.gradle
に追加すると、
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.Android.tools.build:gradle:0.4.2'
}
}
apply plugin: 'Android'
apply plugin: 'checkstyle'
Android {
buildToolsVersion '17'
compileSdkVersion 15
testBuildType 'debug'
defaultConfig {
versionCode = 1
versionName = '1.0'
minSdkVersion 12
targetSdkVersion 15
}
buildTypes {
debug {
packageNameSuffix = '.debug'
}
}
}
その場合、gradle check
は、(デフォルトのcheckstyle.xml
の場所にある)config/checkstyle
ファイルが見つからないことについて文句を言わず、次を返します。
:check UP-TO-DATE
BUILD SUCCESSFUL
必要なもの:
まず、実行中のcheckstyleターゲットが必要です。次に、checkstyleの実行をコンパイルの依存関係として自動化する必要があります(ただし、最初にchekstyleターゲットを起動して実行します)。
仮定:
これは、([ユーザーガイド] [1]から)次の事実に関連している可能性があります。
Android plugin […]は独自のsourceSetsを使用します
しかし、私はそこに何が欠けているかを理解するのに十分な効率的なグラドルではありません。 Gradleマスター、貴重な知識で教えてください!
Gradle 1.12 Android plugin 0.12。+で動作するpmd、findbugs、およびcheckstyleを次のスクリプトを使用して取得しました。
apply plugin: 'checkstyle'
apply plugin: 'findbugs'
apply plugin: 'pmd'
check.dependsOn 'checkstyle', 'findbugs', 'pmd'
task checkstyle(type: Checkstyle) {
configFile file("${project.rootDir}/config/quality/checkstyle/checkstyle.xml")
source 'src'
include '**/*.Java'
exclude '**/gen/**'
classpath = files()
}
task findbugs(type: FindBugs) {
ignoreFailures = true
effort = "max"
reportLevel = "high"
excludeFilter = new File("${project.rootDir}/config/quality/findbugs/findbugs-filter.xml")
classes = files("$project.buildDir/intermediates/classes/")
source 'src'
include '**/*.Java'
exclude '**/gen/**'
reports {
xml {
destination "$project.buildDir/reports/findbugs/findbugs.xml"
xml.withMessages true
}
}
classpath = files()
}
task pmd(type: Pmd) {
ruleSetFiles = files("${project.rootDir}/config/quality/pmd/pmd-ruleset.xml")
ignoreFailures = true
ruleSets = ["basic", "braces", "strings"]
source 'src'
include '**/*.Java'
exclude '**/gen/**'
reports {
xml.enabled = true
html.enabled = false
}
}
ランニング gradle build
コマンドラインで実行すると、すべてのコード品質プラグインが実行され、xmlレポートがapp/build/reports /で生成されます。これにより、CIツールで表示または解析できるようになります。
PMD、findbugs、checkstyleをAndroid向けGradleと統合することを解決するには、誰かが素晴らしい答えを持っています。残念ながら、現時点での唯一の解決策はantに基づいています: http://sethrylan.org/2013/07/14/gradle-Android-findbugs.html
GradleでAndroidのMavenと同じくらいのことができるようになればいいのですが。
--- 2013年10月現在の更新
Gradle 1.8およびGradle 0.6。+用のAndroidプラグインを使用すると、これはもう必要ありません。 Androidソースセットと設定はJavaプラグインと互換性があり、すべての高品質プラグインがそのまま使用できます。
これには、pmd、findbugs、checkstyle、classycleが含まれます。
---更新上記のプロジェクトからインスピレーションを得た構成が このオープンソースプロジェクト とその他のツールで提案されています。
Androidプラグインを確認( https://github.com/noveogroup/Android-check ):
構成:
buildscript {
repositories { jcenter() }
dependencies {
...
classpath 'com.noveogroup.Android:check:+'
...
}
}
apply plugin: 'com.noveogroup.Android.check'
ハードコア設定を使用できます:
check {
abortOnError true
checkstyle { config hard() }
pmd { config hard() }
}
これをmy Android=プロジェクトで機能させるには、タスクを明示的に宣言する必要がありました。
これが私のために働いたものです:
apply plugin: 'checkstyle'
task checkstyle(type: Checkstyle) {
source 'src'
include '**/*.Java'
exclude '**/gen/**'
// empty classpath
classpath = files()
}
Androidプラグインは、将来同じ名前のタスクを作成するか、さまざまな方法でcheckstyleプラグインと連携して動作するようになる可能性があることに注意してください。
Findbugs、Checkstyle、およびPMDのサポートをAndroid=プロジェクトにsemlesslyに追加するには、 Soter Gradleプラグインをご覧ください。