25

現在の ant ベースのビルド プロセスを再現する新しい gradle ベースのビルド システムの機能を評価していますが、gradle の初心者として、android gradle プラグインで checkstyle を実行できませんでした。

環境:

  • 標準のJavaプロジェクトで正常に動作するgradle 1.6(checkstyleチェックターゲットが含まれています)

  • 最新の Android SDK (プラットフォーム ツールとビルド ツール 17 を含む 22.0.1)

  • 日食もアンドロイドスタジオもありません、私の素敵な端末だけです

症状:

ターゲット プロジェクトは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.xmlconfig/checkstyle

:check UP-TO-DATE

BUILD SUCCESSFUL

必要なもの:

まず、実行中の checkstyle ターゲットが必要です。次に、コンパイルの依存関係として checkstyle の実行を自動化する必要があります (ただし、最初に checkstyle ターゲットを起動して実行します)。

予測:

これは、([ユーザーガイド][1] から) 次の事実に関連している可能性があります。

Android プラグイン […] は独自の sourceSets を使用します

しかし、私がそこに欠けているものを理解するのに十分なグラドル効率ではありません。gradleマスター、あなたの貴重な知識を私に教えてください!

4

6 に答える 6

30

次のスクリプトを使用して、pmd、findbugs、および checkstyle を Gradle 1.12 android プラグイン 0.12.+ で動作させました。

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コマンド ラインで実行すると、すべてのコード品質プラグインが実行され、app/build/reports/ に xml レポートが生成さ、CI ツールで表示または解析できるようになります。

于 2014-04-10T14:35:27.800 に答える
7

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

--- 更新 上記のプロジェクトから主に着想を得た構成は、このオープン ソース プロジェクトと他のツールでも提案されています。

于 2013-08-12T00:04:33.340 に答える
5

Android Check プラグイン ( 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() }
}
于 2015-02-13T07:37:04.783 に答える
1

Take a look at the Soter Gradle plugin to semlessly add support for Findbugs, Checkstyle and PMD to Android projects.

于 2015-07-21T07:41:10.093 に答える