2009-09-02 101 views
3

有沒有人能夠使用maven2與Aspectj插件和Cobertura插件?我應該得到0%的覆蓋率。在Aspectj織造之前,Cobertura儀器正在運行,我認爲它正在搞亂Cobertura儀器。此外,Cobertura正在對我的方面發出警告,看起來它試圖將它們解析爲java文件。任何幫助,將不勝感激。maven cobertura報告0%與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

「的Cobertura儀器儀表是AspectJ織之前運行」 ,你在使用加載時織入嗎? – 2009-09-13 11:25:50

回答

2

我有用aspectj-maven-plugin編譯並使用cobertura-maven-plugin進行代碼覆蓋的項目。對於編譯時編織來說,運行mvn site時工作正常,但測試編譯/運行兩次以允許Cobertura編織。

具有低於在下面的輸出結果的配置運行mvn site

[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. 

我的配置包含下面。

關於您的方面的Cobertura警告,您可以嘗試的一件事是將建議執行主體移到java類型,而不是在方面中定義它。

例如,而不是這樣做:

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

    //code to trace exception handling 
    ... 
} 

相反,你可以委託執行的Java類型,所以很少有代碼方面來處理:

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); 
} 

我的配置for aspectj和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

我有同樣的問題(試圖運行報道Hudson報道),並通過從執行目標中刪除「測試編譯」目標來解決此問題。之後,Cobertura和Emma都很有魅力。

我的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> 

我的Cobertura部分:

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

以防萬一,我的艾瑪部分:

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