2009-09-02 6 views
3

Quelqu'un at-il pu utiliser maven2 avec le plugin Aspectj, et Cobertura plugin? Je continue à obtenir une couverture de 0%, quand je devrais obtenir quelque chose. L'instrumentation Cobertura est en cours d'exécution avant le tissage d'Aspectj qui, je pense, gâche l'instrumentation Cobertura. En outre, Cobertura donne des avertissements sur mes aspects, on dirait qu'il essaie de les analyser comme des fichiers Java. Toute aide serait appréciée.maven cobertura rapports 0% avec aspectj

 
C:\project>mvn cobertura:cobertura 
[INFO] Scanning for projects... 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building Project 
[INFO] task-segment: [cobertura:cobertura] 
[INFO] ------------------------------------------------------------------------ 
[INFO] Preparing cobertura:cobertura 
[INFO] [aspectj:compile {execution: compile}] 
[INFO] [resources:resources] 
[INFO] Using 'UTF-8' encoding to copy filtered resources. 
[INFO] Copying 1 resource 
[INFO] [compiler:compile] 
[INFO] Nothing to compile - all classes are up to date 
[INFO] [cobertura:instrument] 
[INFO] Cobertura 1.9.2 - GNU GPL License (NO WARRANTY) - See COPYRIGHT file 
Cobertura: Loaded information on 538 classes. 
Instrumenting 538 files to C:\project\target\generated-classes\cobertura 
Cobertura: Saved information on 538 classes. 
Instrument time: 3938ms 

[INFO] Instrumentation was successful. 
[INFO] [aspectj:test-compile {execution: test-compile}] 
[INFO] [resources:testResources] 
[INFO] Using 'UTF-8' encoding to copy filtered resources. 
[INFO] Copying 1 resource 
[INFO] [compiler:testCompile] 
[INFO] Nothing to compile - all classes are up to date 
[INFO] [surefire:test] 
[INFO] Surefire report directory: C:\project\target\surefire-reports 

------------------------------------------------------- 
T E S T S 
------------------------------------------------------- 
Running project.AnnounceTypeActionTest 

Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.594 sec 

Results : 

Tests run: 3, Failures: 0, Errors: 0, Skipped: 0 

[INFO] [cobertura:cobertura] 
[INFO] Cobertura 1.9.2 - GNU GPL License (NO WARRANTY) - See COPYRIGHT file 
Cobertura: Loaded information on 538 classes. 
Javancss.(InputStream).e: net.sourceforge.cobertura.javancss.ParseException: Encountered "aspect" at line 5, column 8. 
Was expecting one of: 
    "@" ... 
    "abstract" ... 
    "final" ... 
    "public" ... 
    "synchronized" ... 
    "strictfp" ... 
    "class" ... 
    "static" ... 
    "protected" ... 
    "private" ... 
    "native" ... 
    "transient" ... 
    "volatile" ... 
    "enum" ... 
    "interface" ... 

[cobertura] WARN [main] net.sourceforge.cobertura.reporting.ComplexityCalculator - JavaNCSS got an error while parsing the java file C:\project\src\main\java\Project\logging\ApplicationLoggingAspect.aj 
ParseException in STDIN 
Last useful checkpoint: "project.logging." 
Encountered "aspect" at line 5, column 8. 
Was expecting one of: 
    "@" ... 
    "abstract" ... 
    "final" ... 
    "public" ... 
    "synchronized" ... 
    "strictfp" ... 
    "class" ... 
    "static" ... 
    "protected" ... 
    "private" ... 
    "native" ... 
    "transient" ... 
    "volatile" ... 
    "enum" ... 
    "interface" ... 


Javancss.(InputStream).e: net.sourceforge.cobertura.javancss.ParseException: Encountered "aspect" at line 4, column 17. 
Was expecting one of: 
    "@" ... 
    "abstract" ... 
    "final" ... 
    "public" ... 
    "synchronized" ... 
    "strictfp" ... 
    "class" ... 
    "static" ... 
    "protected" ... 
    "private" ... 
    "native" ... 
    "transient" ... 
    "volatile" ... 
    "enum" ... 
    "interface" ... 

[cobertura] WARN [main] net.sourceforge.cobertura.reporting.ComplexityCalculator - JavaNCSS got an error while parsing the java file C:\project\src\main\java\Project\logging\LoggingAspect.aj 
ParseException in STDIN 
Last useful checkpoint: "project.logging." 
Encountered "aspect" at line 4, column 17. 
Was expecting one of: 
    "@" ... 
    "abstract" ... 
    "final" ... 
    "public" ... 
    "synchronized" ... 
    "strictfp" ... 
    "class" ... 
    "static" ... 
    "protected" ... 
    "private" ... 
    "native" ... 
    "transient" ... 
    "volatile" ... 
    "enum" ... 
    "interface" ... 


Javancss.(InputStream).e: net.sourceforge.cobertura.javancss.ParseException: Encountered "aspect" at line 6, column 17. 
Was expecting one of: 
    "@" ... 
    "abstract" ... 
    "final" ... 
    "public" ... 
    "synchronized" ... 
    "strictfp" ... 
    "class" ... 
    "static" ... 
    "protected" ... 
    "private" ... 
    "native" ... 
    "transient" ... 
    "volatile" ... 
    "enum" ... 
    "interface" ... 

[cobertura] WARN [main] net.sourceforge.cobertura.reporting.ComplexityCalculator - JavaNCSS got an error while parsing the java file C:\project\src\main\java\Project\logging\TracingAspect.aj 
ParseException in STDIN 
Last useful checkpoint: "project.logging." 
Encountered "aspect" at line 6, column 17. 
Was expecting one of: 
    "@" ... 
    "abstract" ... 
    "final" ... 
    "public" ... 
    "synchronized" ... 
    "strictfp" ... 
    "class" ... 
    "static" ... 
    "protected" ... 
    "private" ... 
    "native" ... 
    "transient" ... 
    "volatile" ... 
    "enum" ... 
    "interface" ... 


Report time: 5891ms 

[INFO] Cobertura Report generation was successful. 
[INFO] Cobertura 1.9.2 - GNU GPL License (NO WARRANTY) - See COPYRIGHT file 
Cobertura: Loaded information on 538 classes. 
Javancss.(InputStream).e: net.sourceforge.cobertura.javancss.ParseException: Encountered "aspect" at line 5, column 8. 
Was expecting one of: 
    "@" ... 
    "abstract" ... 
    "final" ... 
    "public" ... 
    "synchronized" ... 
    "strictfp" ... 
    "class" ... 
    "static" ... 
    "protected" ... 
    "private" ... 
    "native" ... 
    "transient" ... 
    "volatile" ... 
    "enum" ... 
    "interface" ... 

[cobertura] WARN [main] net.sourceforge.cobertura.reporting.ComplexityCalculator - JavaNCSS got an error while parsing the java file C:\project\src\main\java\Project\logging\ApplicationLoggingAspect.aj 
ParseException in STDIN 
Last useful checkpoint: "project.logging." 
Encountered "aspect" at line 5, column 8. 
Was expecting one of: 
    "@" ... 
    "abstract" ... 
    "final" ... 
    "public" ... 
    "synchronized" ... 
    "strictfp" ... 
    "class" ... 
    "static" ... 
    "protected" ... 
    "private" ... 
    "native" ... 
    "transient" ... 
    "volatile" ... 
    "enum" ... 
    "interface" ... 


Javancss.(InputStream).e: net.sourceforge.cobertura.javancss.ParseException: Encountered "aspect" at line 4, column 17. 
Was expecting one of: 
    "@" ... 
    "abstract" ... 
    "final" ... 
    "public" ... 
    "synchronized" ... 
    "strictfp" ... 
    "class" ... 
    "static" ... 
    "protected" ... 
    "private" ... 
    "native" ... 
    "transient" ... 
    "volatile" ... 
    "enum" ... 
    "interface" ... 

[cobertura] WARN [main] net.sourceforge.cobertura.reporting.ComplexityCalculator - JavaNCSS got an error while parsing the java file C:\project\src\main\java\Project\logging\LoggingAspect.aj 
ParseException in STDIN 
Last useful checkpoint: "project.logging." 
Encountered "aspect" at line 4, column 17. 
Was expecting one of: 
    "@" ... 
    "abstract" ... 
    "final" ... 
    "public" ... 
    "synchronized" ... 
    "strictfp" ... 
    "class" ... 
    "static" ... 
    "protected" ... 
    "private" ... 
    "native" ... 
    "transient" ... 
    "volatile" ... 
    "enum" ... 
    "interface" ... 


Javancss.(InputStream).e: net.sourceforge.cobertura.javancss.ParseException: Encountered "aspect" at line 6, column 17. 
Was expecting one of: 
    "@" ... 
    "abstract" ... 
    "final" ... 
    "public" ... 
    "synchronized" ... 
    "strictfp" ... 
    "class" ... 
    "static" ... 
    "protected" ... 
    "private" ... 
    "native" ... 
    "transient" ... 
    "volatile" ... 
    "enum" ... 
    "interface" ... 

[cobertura] WARN [main] net.sourceforge.cobertura.reporting.ComplexityCalculator - JavaNCSS got an error while parsing the java file C:\project\src\main\java\Project\logging\TracingAspect.aj 
ParseException in STDIN 
Last useful checkpoint: "project.logging." 
Encountered "aspect" at line 6, column 17. 
Was expecting one of: 
    "@" ... 
    "abstract" ... 
    "final" ... 
    "public" ... 
    "synchronized" ... 
    "strictfp" ... 
    "class" ... 
    "static" ... 
    "protected" ... 
    "private" ... 
    "native" ... 
    "transient" ... 
    "volatile" ... 
    "enum" ... 
    "interface" ... 


Report time: 3125ms 

[INFO] Cobertura Report generation was successful. 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESSFUL 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 30 seconds 
[INFO] Finished at: Wed Sep 02 17:15:45 VET 2009 
[INFO] Final Memory: 26M/254M 
[INFO] ------------------------------------------------------------------------ 
+0

"Instrumentation Cobertura est en cours d'exécution avant Aspectj tissage" , utilisez-vous le tissage au moment du chargement? –

Répondre

2

J'ai des projets mis en place avec aspectj-maven-plugin pour la compilation et l'utilisation cobertura-maven-plugin pour la couverture de code. Pour le tissage à la compilation, cela fonctionne correctement lors de l'exécution de mvn site, bien que les tests soient compilés/exécutés deux fois pour permettre le tissage Cobertura.

Exécution mvn site avec la configuration ci-dessous les résultats de la sortie suivante:

[INFO] Preparing surefire-report:report 
[INFO] [aspectj:compile {execution: compile_with_aspectj}] 
... 
[INFO] [compiler:compile] 
[INFO] Nothing to compile - all classes are up to date 
... 
[INFO] [compiler:testCompile {execution: test-compile}] 
[INFO] Compiling 8 source files to C:\test\aop-test 
[INFO] [aspectj:test-compile {execution: test-compile_with_aspectj}] 
... 
[INFO] [surefire:test] 
... 
[INFO] Preparing cobertura:cobertura 
[INFO] [aspectj:compile {execution: compile_with_aspectj}] 
... 
[INFO] [compiler:compile] 
[INFO] Nothing to compile - all classes are up to date 
[INFO] [cobertura:instrument] 
[INFO] Cobertura 1.8 - GNU GPL License (NO WARRANTY) - See COPYRIGHT file 
Instrumenting 11 files to C:\test\aop-test\generated-classes\cobertura 
Cobertura: Saved information on 11 classes. 
Instrument time: 250ms 

[INFO] Instrumentation was successful. 
[INFO] [compiler:testCompile {execution: test-compile}] 
[INFO] Nothing to compile - all classes are up to date 
[INFO] [aspectj:test-compile {execution: test-compile_with_aspectj}] 
... 
[INFO] [surefire:test] 
... 
Cobertura: Coverage data file C:\test\aop-test\cobertura.ser either 
    does not exist or is not readable. Creating a new data file. 
Cobertura: Saved information on 8 classes. 

Ma configuration est incluse ci-dessous. En ce qui concerne les avertissements Cobertura de vos aspects, une chose que vous pouvez essayer est de déplacer le corps de l'exécution du conseil vers les types java plutôt que de le définir dans les aspects.

Par exemple, plutôt que de faire ceci:

before(Throwable e, Object subject): handlers(e, subject) { 
    Log logger = getTraceLog(subject.getClass()); 

    //code to trace exception handling 
    ... 
} 

place, vous pouvez déléguer la mise en œuvre à un type Java, donc il y a peu de code dans l'aspect processus:

before(Throwable e, Object subject): handlers(e, subject) { 
    Log logger = getTraceLog(subject.getClass()); 

    //get helper type and delegate processing to that type. 
    getFormatterHelper().traceErrorHandling(logger, thisJoinPoint, e); 
} 

Ma configuration pour les plugins aspectj et cobertura:

<build> 
    <plugins> 
    ... 
    <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>aspectj-maven-plugin</artifactId> 
     <version>1.2</version> 
     <executions> 
     <execution> 
      <id>compile_with_aspectj</id> 
      <goals> 
      <goal>compile</goal> 
      </goals> 
      <configuration> 
      <complianceLevel>1.5</complianceLevel> 
      </configuration> 
     </execution> 
     <execution> 
      <id>test-compile_with_aspectj</id> 
      <goals> 
      <goal>test-compile</goal> 
      </goals> 
      <configuration> 
      <complianceLevel>1.5</complianceLevel> 
      </configuration> 
     </execution> 
     </executions> 
     <dependencies> 
     <dependency> 
      <groupId>aspectj</groupId> 
      <artifactId>aspectjtools</artifactId> 
      <version>1.6.4</version> 
     </dependency> 
     </dependencies> 
    </plugin> 
    </plugins> 
</build> 
... 
<reporting> 
    <plugins> 
    ... 
    <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>cobertura-maven-plugin</artifactId> 
     <version>2.1</version> 
     <configuration> 
     <formats> 
      <format>html</format> 
      <format>xml</format> 
     </formats> 
     <outputDirectory>target/site/cobertura</outputDirectory> 
     </configuration> 
    </plugin> 
    <plugins 
</reporting> 
0

J'ai eu le même problème (en essayant d'exécuter un couverture rapportée sur Hudson) et l'a résolu en supprimant le but "test-compile" des objectifs d'exécution d'aspectj. Après cela, Cobertura et Emma ont travaillé comme un charme.

section Mon AspectJ:

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>aspectj-maven-plugin</artifactId> 
    <version>1.3</version> 
    <executions> 
    <execution> 
     <goals> 
     <goal>compile</goal> 
     <!-- <goal>test-compile</goal> --> 
     </goals> 
    </execution> 
    </executions> 
    <configuration> 
    <source>1.6</source> 
    <weaveWithAspectsInMainSourceFolder>true</weaveWithAspectsInMainSourceFolder> 
    <weaveMainSourceFolder>true</weaveMainSourceFolder> 
    </configuration> 
</plugin> 

section Mon Cobertura:

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>cobertura-maven-plugin</artifactId> 
    <version>2.4</version> 
    <configuration> 
    <formats> 
     <format>xml</format> 
    </formats> 
    </configuration> 
</plugin> 

Et juste au cas où, ma section Emma:

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>emma-maven-plugin</artifactId> 
    <version>1.0-alpha-2</version> 
</plugin> 
Questions connexes