2014-02-26 11 views
12

Verwendung habe ich die folgende Gradle-Datei erstellen: https://github.com/markuswustenberg/jsense/blob/a796055f984ec309db3cc0f3e8340cbccac36e4e/jsense-protobuf/build.gradle beinhaltet:"schließt" config in Findbugs und Checkstyle Plugin in Gradle

checkstyle { 
    // TODO The excludes are not working, ignore failures for now 
    //excludes '**/org/jsense/serialize/protobuf/gen/**' 
    ignoreFailures = true 
    showViolations = false 
} 

findbugs { 
    // TODO The excludes are not working, ignore failures for now 
    //excludes '**/org/jsense/serialize/protobuf/gen/**' 
    ignoreFailures = true 
} 

Wie Sie sehen können, ich versuche automatisch generierten Code auszuschließen in das Paket org.jsense.serialize.protobuf.gen. Ich kann nicht das Format des zu dem schließt Parameter angegeben Strings herauszufinden, und die Dokumentation ist nicht viel helfen: http://www.gradle.org/docs/1.10/dsl/org.gradle.api.plugins.quality.FindBugs.html#org.gradle.api.plugins.quality.FindBugs:excludes (es sagt nur „Der Satz von Mustern auszuschließen.“).

Also meine Frage ist: Wie sollten die Muster schließt Zeichenfolgen für die Findbugs und Check beide Plugins formatiert werden?

Ich bin mit Gradle 1.10.

Danke!

EDIT 1: Ich habe die Check ausschließen arbeiten mit den folgenden:

tasks.withType(Checkstyle) { 
    exclude '**/org/jsense/serialize/protobuf/gen/**' 
} 

jedoch mit der exakt gleichen auf dem Findbugs Plugin ausschließen funktioniert nicht:

tasks.withType(FindBugs) { 
    exclude '**/org/jsense/serialize/protobuf/gen/*' 
} 

EDIT 2: Die akzeptierte Antwort funktioniert, und so eine XML-Datei und Filterung auf, dass nicht verwendet wird, etwa so:

findbugs { 
    excludeFilter = file("$projectDir/config/findbugs/excludeFilter.xml") 
} 

und

<?xml version="1.0" encoding="UTF-8"?> 
<FindBugsFilter> 
    <Match> 
    <Package name="org.jsense.serialize.protobuf.gen"/> 
    </Match> 
</FindBugsFilter> 

EDIT 3: Dies funktioniert gut, und keine XML-Datei benötigt wird:

def excludePattern = 'org/jsense/serialize/protobuf/gen/' 
def excludePatternAntStyle = '**/' + excludePattern + '*' 
tasks.withType(FindBugs) { 
    classes = classes.filter { 
     !it.path.contains(excludePattern) 
    } 
} 
tasks.withType(Checkstyle) { 
    exclude excludePatternAntStyle 
} 
tasks.withType(Pmd) { 
    exclude excludePatternAntStyle 
} 
+0

Ich habe das Gefühl, das ist ein Fehler im Findbugs-Plugin. Das schließt aus, dass sowohl für Checkstyle als auch für PMD keine Probleme auftreten. Laut Dokumentation sollten sie dasselbe Format haben. –

+0

Ich habe es mit einer externen Ausschlussdatei zu arbeiten (siehe https://github.com/markuswustenberg/jsense/blob/45fa6164943d85f6390cb8ad258c2b35cf09b125/jsense-protobuf/build.gradle), so dass ich denke, es ist in der Tat ein Fehler in der Findbugs gradle Plugin . Ich werde einen Fehler melden, wenn ich herausfinde wie. –

+0

Rechts, berichtet hier: http://forums.gradle.org/gradle/topics/findbugs_task_ignores_excludes_property_set_via_exclude_method –

Antwort

11

SourceTask#exclude Filter Quelldateien. FindBugs arbeitet jedoch hauptsächlich mit Klassendateien, die Sie ebenfalls filtern müssen. Versuchen Sie so etwas wie:

tasks.withType(FindBugs) { 
    exclude '**/org/jsense/serialize/protobuf/gen/*' 
    classes = classes.filter { 
     !it.path.contains(new File("org/jsense/serialize/protobuf/gen/").path) 
    } 
} 

PS: Es könnte sein, dass Filterquelldateien sein macht keinen Unterschied (und damit ist nicht erforderlich) bei FindBugs. (Ich habe es nicht versucht.)

+0

Cool, danke, das funktioniert. Was bedeutet, dass ich vielleicht keinen Fehler gefunden habe. Ich finde es jedoch eher kontraintuitiv, dass das "exclude" nur auf Quellen funktioniert. Das ist nicht das, was ich erwarten würde, wenn ich das Plugin nach dem Lesen der Dokumentation benutze, besonders wenn es sowohl mit Checkstyle als auch mit PMD wie erwartet funktioniert. Gedanken? –

+1

Checkstyle und PMD arbeiten hauptsächlich mit Quelldateien, so dass 'SourceTask # exclude' gut genug für sie ist. Es wäre schön, einen einfacheren Weg zu haben, FindBugs-Klassen zu filtern, aber es ist nicht sofort klar, wie dies zu tun ist, besonders rückwärtskompatibel. –

+0

Okay, danke dafür. Sehr geschätzt! –

Verwandte Themen