2015-03-06 16 views
7

Bir Android projesinin son sürümünü kullanarak PMD, Findbugs ve Checkstyle statik kod analiz araçlarını nasıl kurabilirim? Birkaç şey denedim ama onları çalıştırmayı başaramıyorum.PMD, checkstyle ve findbugs android kurulumu

Teşekkür

+0

tarafından görevi çalıştırmak mümkün değilim Bundan sonra bu çeki ...

kullanmaz Bunun için çözüm? –

+0

Olası kopyası [Android yakalama eklentisi ve birlikte çalışma stilini/komut satırı kullanımı] al (https://stackoverflow.com/questions/17050654/get-android-gradle-plugin-checkstyle-working-together-command-line-usage) – tir38

cevap

6

Checkstyle/PMD

Eğer checkstyle ve pmd için kullanabileceğiniz güzel bir eklenti vardır. Sadece küresel gradle.build için

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' 
    } 
} 

ekleyip gibi modül (ler) kullanmak aşağıdaki:

// 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 size: Bu yapılandırmaların

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" 
    } 
} 

veya herhangi Eklentinin ana sayfasını ve kaynak kodunu bulabilir.

Findbugs

//

noveogroup (1.2.3) tarafından

son eklentisi şimdi de FindBugs destekler // GÜNCELLEME. Yani bunu checkstyle veya pmd gibi aynı şekilde özelleştirebilirsiniz:

// 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. 
} 

// GÜNCELLEME SON //

Ben findbugs size modülün build.gradle eklemek aşağıdaki gradle komut snippet'iyle kontrol koşmak :

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 

Benim exclude.xml aşağıdaki gibi görünür:

<FindBugsFilter> 
    <Match> 
     <Class name="~.*R\$.*"/> 
    </Match> 
    <Match> 
     <Class name="~.*Manifest\$.*"/> 
    </Match> 
    <Match> 
     <Class name="~.*_"/> 
    </Match> 
</FindBugsFilter> 

whe reas son onay AndroidAnnotations tarafından oluşturulan sınıfları atlamak için kullanılır ve büyük olasılıkla ben herhangi aldın

./gradlew customFindbugs 
// or it is also included in the build task like the checks, too 
./gradlew build 
İlgili konular