Gradle 1.6 Linux.Gradle PMD Checkstyle Findbugs - Quale directory sourceSet per funzionare Java build
Java costruire la struttura del progetto
- Project_or_Module
- src/java (contiene il codice sorgente Java)
- test/java (contiene test JUnit - test di unità)
- src/Java- test (contiene test di integrazione)
- etc/etc (altro .. .. cartelle sotto il progetto)
Ho il seguente file di configurazione/build.gradle globale:
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)
}
Per alcuni dei progetti, tutto funziona bene. Ad esempio, quando eseguo "gradle clean build" o "gradle clean build jacocoTestReport", tutto ha successo.
Per pochi altri progetti, vedo i seguenti problemi e ho bisogno di aiuto.
1) "gradle clean build" il comando funziona se rimuovo/commenta le seguenti righe per un progetto. Ma quando quelle righe non sono commentate come nell'istantanea del codice mostrata sopra, allora vedo degli errori. Gli errori sono indicati di seguito dopo lo snapshot del codice.
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)
}
Errori: A. Attività non riuscita. L'output mostra quanto segue.
..
....
: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).
Si noterà qui è che l'errore viene in cui Gradle sta chiamando il compito di cui sopra per la cartella "src/java-test".
** La mia domanda1 **: Con quelle righe commentate nel file build.gradle, non vedo mai questi errori e le attività "clean build jacocoTestReport" vengono completate correttamente ma quando il codice per pmd/findbugs/checkstyle è abilitato, I vedere questi errori. Perché sta compilando il codice java-test. Ho pensato che il codice sorgente fosse solo sotto src/java (codice sorgente java effettivo per il progetto: project_or_module)
B. Uno degli altri progetti ProjectAUtilities fallisce in fase PMD anche se l'errore ignore è vero in build.gradle per pmd . Errore dice che 3 test falliscono.
log di errore:
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
mio question2: Quale configurazione devo impostare per la sezione PMD in build.gradle che ignorerà le prove se non riescono. Penso di avere già ignoreFailures = true
C. Come usare include/exclude per Checkstyle/PMD/Findbug nel file build.gradle (non ANT). ad esempio non andrà e non farà altro che la cartella "src/java".
Grazie.
il codice sopra appena creato checkstyle/findbugs/pmd - controlla solo src/java (che è il mio sourceSets.main). a parte questo, l'errore per la mia domanda 1 è stato risolto dopo aver incluso/menzionato il nome del vaso dipendente nel file build.gradle (a livello di progetto/modulo). Il secondo errore o domanda sul plugin Xvfb, è stato risolto rimuovendo il plugin Xvfb in Jenkins, riavviando jenkins e infine pulendo l'area di lavoro, eliminando tutto ciò che è stato inder jenkins istanza/jobs//workspace/.... –