web-dev-qa-db-ja.com

Get Android Gradle plugin&checkstyle working with / command line usage

現在の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マスター、貴重な知識で教えてください!

24
Renaud

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ツールで表示または解析できるようになります。

28
Marco RS

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が含まれます。

---更新上記のプロジェクトからインスピレーションを得た構成が このオープンソースプロジェクト とその他のツールで提案されています。

7
Snicolas

Androidプラグインを確認( https://github.com/noveogroup/Android-check ):

  • チェックスタイル
  • PMD

構成:

buildscript {
    repositories { jcenter() }
    dependencies {
        ...
        classpath 'com.noveogroup.Android:check:+'
        ...
    }
}

apply plugin: 'com.noveogroup.Android.check'

ハードコア設定を使用できます:

check {
    abortOnError true
    checkstyle { config hard() }
    pmd { config hard() }
}
5
stefan.nsk

これをmy Android=プロジェクトで機能させるには、タスクを明示的に宣言する必要がありました。

これが私のために働いたものです:

apply plugin: 'checkstyle'

task checkstyle(type: Checkstyle) {
    source 'src'
    include '**/*.Java'
    exclude '**/gen/**'

    // empty classpath
    classpath = files()
}

Androidプラグインは、将来同じ名前のタスクを作成するか、さまざまな方法でcheckstyleプラグインと連携して動作するようになる可能性があることに注意してください。

5
Jonathan Le

Findbugs、Checkstyle、およびPMDのサポートをAndroid=プロジェクトにsemlesslyに追加するには、 Soter Gradleプラグインをご覧ください。

1
sschuberth