2013-08-21 12 views
5

Gradle 1.6 Linux.Gradle PMD Checkstyle Findbugs - Który katalog źródłowy do pracy Java build

Java struktura Build Project

  • Project_or_Module
    • src/java (zawiera kod źródłowy Java)
    • test/java (zawiera testy JUnit - testy jednostkowe)
    • src/java- test (zawiera testy integracji)
    • etc/etc (inne foldery w ramach projektu)

Mam następujący plik konfiguracyjny/build.gradle:

apply plugin: 'java' 
    apply plugin: 'pmd' 
    apply plugin: 'findbugs' 
    apply plugin: 'checkstyle' 
    apply plugin: 'code-quality' 
    apply plugin: 'jacoco' 

    tasks.withType(Compile) { 
    options.debug = true 
    options.compilerArgs = ["-g"] 
    } 

    checkstyle { 
     configFile = new File(rootDir, "config/checkstyle.xml") 
     ignoreFailures = true 
    } 


    findbugs { 
     ignoreFailures = true 
    } 

    pmd { 
     ruleSets = ["basic", "braces", "design"] 
     ignoreFailures = true 
    } 

    jacoco { 
     toolVersion = "0.6.2.201302030002" 
     reportsDir = file("$buildDir/customJacocoReportDir") 
    } 

    sourceSets { 
     main { 
     java { 
      srcDir 'src/java' 
     } 
     } 
     test { 
     java { 
      srcDir 'test/java' 
     } 
     } 
     integrationTest { 
     java { 
      srcDir 'src/java-test' 
     } 
     } 
    } 

    test { 
     jacoco { 
      append = false 
      destinationFile = file("$buildDir/jacoco/jacocoTest.exec") 
      classDumpFile = file("$buildDir/jacoco/classpathdumps") 
     } 
    } 

    jacocoTestReport { 
     group = "Reporting" 
     description = "Generate Jacoco coverage reports after running tests." 
     reports { 
       xml{ 
        enabled true 
        destination "${buildDir}/reports/jacoco/jacoco.xml" 
       } 
       csv.enabled false 
       html{ 
        enabled true 
        destination "${buildDir}/jacocoHtml" 
       } 
     } 
     additionalSourceDirs = files(sourceSets.main.allJava.srcDirs) 
    } 

na kilka projektów, wszystko działa bez zarzutu. tj. Po uruchomieniu "gradle clean build" lub "gradle clean build jacocoTestReport" wszystko się powiedzie.

Dla kilku innych projektów, widzę następujące problemy i potrzebuję pomocy.

1) "gradle clean build" polecenie działa, gdy usuwam/komentuję poniższe wiersze dla projektu. Ale gdy te linie są odkomentowane tak jak w powyższej migawce kodu, widzę błędy. Błędy są wymienione poniżej po migawce kodu.

 apply plugin: 'java' 
// apply plugin: 'pmd' 
// apply plugin: 'findbugs' 
// apply plugin: 'checkstyle' 
// apply plugin: 'code-quality' 
    apply plugin: 'jacoco' 

    tasks.withType(Compile) { 
    options.debug = true 
    options.compilerArgs = ["-g"] 
    } 

// checkstyle { 
//  configFile = new File(rootDir, "config/checkstyle.xml") 
//  ignoreFailures = true 
// } 


// findbugs { 
//  ignoreFailures = true 
// } 

// pmd { 
//  ruleSets = ["basic", "braces", "design"] 
//  ignoreFailures = true 
// } 
// 

    jacoco { 
     toolVersion = "0.6.2.201302030002" 
     reportsDir = file("$buildDir/customJacocoReportDir") 
    } 

    sourceSets { 
     main { 
     java { 
      srcDir 'src/java' 
     } 
     } 
     test { 
     java { 
      srcDir 'test/java' 
     } 
     } 
     integrationTest { 
     java { 
      srcDir 'src/java-test' 
     } 
     } 
    } 

    test { 
     jacoco { 
      append = false 
      destinationFile = file("$buildDir/jacoco/jacocoTest.exec") 
      classDumpFile = file("$buildDir/jacoco/classpathdumps") 
     } 
    } 

    jacocoTestReport { 
     group = "Reporting" 
     description = "Generate Jacoco coverage reports after running tests." 
     reports { 
       xml{ 
        enabled true 
        destination "${buildDir}/reports/jacoco/jacoco.xml" 
       } 
       csv.enabled false 
       html{ 
        enabled true 
        destination "${buildDir}/jacocoHtml" 
       } 
     } 
     additionalSourceDirs = files(sourceSets.main.allJava.srcDirs) 
    } 

Błędy: A. Zadanie nie powiodło się. Wyjście pokazuje, co następuje.

.. 
.... 
:compileIntegrationTestJava 
/production/jenkinsAKS/jobs/Project_or_Module/workspace/src/java-test/com/tr/ids/application/project_or_module/Project_or_ModuleTestCase.java:11: 
package org.apache.cactus does not exist import 
org.apache.cactus.ServletTestCase; 
         ^/production/jenkinsAKS/jobs/Project_or_Module/workspace/src/java-test/com/tr/ids/application/project_or_module/Project_or_ModuleTestCase.java:13: 
> cannot find symbol symbol: class ServletTestCase public class 
> Project_or_ModuleTestCase extends ServletTestCase 
> 
... 
    .... 
    ..... 
    some more errors 
    ... 
    ... 
    100 errors (similar errors). 

Zauważysz tutaj jest to, że kiedy nadchodzi błąd Gradle dzwoni powyższe zadanie dla folderu „src/java-test”.

** Moje pytanie1 **: Z tymi liniami skomentowanymi w pliku build.gradle, nigdy nie widzę tych błędów i zadania "wyczyść kompilację jacocoTestReport" kończą się pomyślnie, ale kiedy kod dla pmd/findbugs/checkstyle jest włączony, zobacz te błędy. Dlaczego kompiluje kod testowy java. Myślałem, że kod źródłowy jest tylko pod src/java (rzeczywisty kod źródłowy java dla projektu: project_or_module)

B. Jeden z innych projektów ProjectAUtilities nie działa na etapie PMD, mimo że błąd ignorowania jest prawdziwy w build.gradle dla pmd . Błąd mówi, że 3 testy nie powiodły się.

dziennika błędu:

20:06:20 :pmdIntegrationTest UP-TO-DATE 
20:06:21 :pmdMain 
20:06:21 Download http://devserver2:8081/artifactory/jcenter-cache/pmd/pmd/4.3/pmd-4.3.pom 
20:06:21 Download http://devserver2:8081/artifactory/jcenter-cache/asm/asm/3.2/asm-3.2.pom 
20:06:21 Download http://devserver2:8081/artifactory/jcenter-cache/asm/asm-parent/3.2/asm-parent-3.2.pom 
20:06:21 Download http://devserver2:8081/artifactory/jcenter-cache/junit/junit/4.4/junit-4.4.pom 
20:06:21 Download http://devserver2:8081/artifactory/jcenter-cache/xml-apis/xml-apis/1.3.02/xml-apis-1.3.02.pom 
20:06:21 Download http://devserver2:8081/artifactory/jcenter-cache/pmd/pmd/4.3/pmd-4.3.jar 
20:06:21 Download http://devserver2:8081/artifactory/jcenter-cache/asm/asm/3.2/asm-3.2.jar 
20:06:21 Download http://devserver2:8081/artifactory/jcenter-cache/junit/junit/4.4/junit-4.4.jar 
20:06:24 251 PMD rule violations were found. See the report at: file:///production/jenkinsAKS/jobs/ProjectAUtilities/workspace/build/reports/pmd/main.html 
20:06:26 :pmdTest 
20:06:26 16 PMD rule violations were found. See the report at: file:///production/jenkinsAKS/jobs/ProjectAUtilities/workspace/build/reports/pmd/test.html 
20:06:26 :test 
20:06:26 Download http://devserver2:8081/artifactory/jcenter-cache/org/jacoco/org.jacoco.agent/0.6.2.201302030002/org.jacoco.agent-0.6.2.201302030002.pom 
20:06:26 Download http://devserver2:8081/artifactory/jcenter-cache/org/jacoco/org.jacoco.build/0.6.2.201302030002/org.jacoco.build-0.6.2.201302030002.pom 
20:06:27 Download http://devserver2:8081/artifactory/jcenter-cache/org/jacoco/org.jacoco.agent/0.6.2.201302030002/org.jacoco.agent-0.6.2.201302030002.jar 
20:06:29 Xlib: connection to "localhost:13.0" refused by server 
20:06:29 Xlib: PuTTY X11 proxy: wrong authorisation protocol attempted 
20:06:29 
20:06:29 com.tr.ids.util.test.chart.TestChartUtilities > getPieChart FAILED 
20:06:29  java.lang.InternalError at TestChartUtilities.java:89 
20:06:29 
20:06:29 com.tr.ids.util.test.chart.TestChartUtilities > getLegend FAILED 
20:06:29  java.lang.NoClassDefFoundError at TestChartUtilities.java:103 
20:06:29 
20:06:29 com.tr.ids.util.test.chart.TestChartUtilities > useString FAILED 
20:06:29  java.lang.NoClassDefFoundError at TestChartUtilities.java:143 
20:06:29 
20:06:29 140 tests completed, 3 failed 
20:06:29 :test FAILED 
20:06:29 
20:06:29 FAILURE: Build failed with an exception. 
20:06:29 
20:06:29 * What went wrong: 
20:06:29 Execution failed for task ':test'. 
20:06:29 > There were failing tests. See the report at: file:///production/jenkinsAKS/jobs/ProjectAUtilities/workspace/build/reports/tests/index.html 
20:06:29 
20:06:29 * Try: 
20:06:29 Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. 
20:06:29 
20:06:29 BUILD FAILED 

Moja question2: Co konfiguracji należy ustawić na odcinku PMD w build.gradle że będą ignorować testy, jeśli nie. Myślę, że już mam, tj. ignoreFailures = true

C. Jak używać include/exclude dla Checkstyle/PMD/Findbugs w pliku build.gradle (nie ANT). Oznacza to, że nie pójdzie i nie zrobi niczego poza folderem "src/java".

Dzięki.

Odpowiedz

10

Poniższa wystarczyły dla wszystkich zagadnień wyjątkiem B (pytanie 2) tj dodaje linię sourceSets i powiedział te 3 narzędzi (PMD/Checkstyle/findbugs), aby zobaczyć tylko główny (kod źródłowy, który jest „src/java ") pod definicją źródła. Przy okazji, wybrałem sekcję "sourceSets" i zdefiniowałem ją również przed następującymi wierszami.

checkstyle { 
     configFile = new File(rootDir, "config/checkstyle.xml") 
     ignoreFailures = true 
     sourceSets = [sourceSets.main] 
    } 


    findbugs { 
     ignoreFailures = true 
     sourceSets = [sourceSets.main] 
    } 

    pmd { 
     ruleSets = ["basic", "braces", "design"] 
     ignoreFailures = true 
     sourceSets = [sourceSets.main] 
    } 
+0

Powyższy kod właśnie zrobił checkstyle/findbugs/pmd - sprawdź tylko src/java (który jest moim sourceSets.main). poza tym, błąd dla mojego pytania 1, został rozwiązany po tym, jak zawarłem/wspomniałem zależną nazwę słoika w pliku build.gradle (na poziomie projektu/modułu). Drugi błąd lub pytanie dotyczące wtyczki Xvfb zostało rozwiązane przez usunięcie wtyczki Xvfb w Jenkins, ponowne uruchomienie Jnkinsa i na koniec wyczyszczenie obszaru roboczego, tj. Usunięcie całego inder Jenkinsa, instancji/jobs//workspace/.... level –

Powiązane problemy