3

Aspectj プラグインと Cobertura プラグインで maven2 を使用できた人はいますか? 何かを取得する必要があるときに、0% のカバレッジを取得し続けます。Cobertura インストルメンテーションは、Cobertura インストルメンテーションを台無しにしている Aspectj ウィービングの前に実行されていると思います。また、Cobertura はアスペクトに関する警告を出しています。アスペクトを Java ファイルとして解析しようとしているようです。どんな助けでも大歓迎です。

C:\project>mvn cobertura:コベルチュラ
[情報] プロジェクトをスキャンしています...
[情報]  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - - -------------------------
[INFO]建築プロジェクト
[情報] タスク セグメント: [cobertura:cobertura]
[情報]  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - - -------------------------
[情報] cobertura:cobertura の準備中
[情報] [aspectj:コンパイル {実行: コンパイル}]
[情報] [リソース:リソース]
[情報] 'UTF-8' エンコーディングを使用して、フィルター処理されたリソースをコピーしています。
[情報] 1 個のリソースをコピーしています
[情報] [コンパイラ:コンパイル]
[情報] コンパイルするものがありません - すべてのクラスが最新です
[情報] [cobertura:楽器]
[情報] Cobertura 1.9.2 - GNU GPL ライセンス (無保証) - COPYRIGHT ファイルを参照
Cobertura: 538 クラスの情報を読み込みました。
C:\project\target\generated-classes\cobertura への 538 個のファイルの計測
Cobertura: 538 クラスの情報を保存しました。
計器時間: 3938ms

[情報] インストルメンテーションが成功しました。
[INFO] [aspectj:test-compile {実行: test-compile}]
[情報] [リソース:testResources]
[情報] 'UTF-8' エンコーディングを使用して、フィルター処理されたリソースをコピーしています。
[情報] 1 個のリソースをコピーしています
[情報] [コンパイラ:testCompile]
[情報] コンパイルするものがありません - すべてのクラスが最新です
[INFO] [surefire:test]
[情報] Surefire レポート ディレクトリ: C:\project\target\surefire-reports

-------------------------------------------------- -----
 テスト
-------------------------------------------------- -----
project.AnnounceTypeActionTest の実行

テストの実行: 3、失敗: 0、エラー: 0、スキップ: 0、経過時間: 0.594 秒

結果 :

テストの実行: 3、失敗: 0、エラー: 0、スキップ: 0

[情報] [cobertura:cobertura]
[情報] Cobertura 1.9.2 - GNU GPL ライセンス (無保証) - COPYRIGHT ファイルを参照
Cobertura: 538 クラスの情報を読み込みました。
Javancss.(InputStream).e: net.sourceforge.cobertura.javancss.ParseException: 行 5、列 8 で「アスペクト」が発生しました。
次のいずれかを期待していました:
    「@」…
    "概要" ...
    "最後の" ...
    "公衆" ...
    「同期」...
    「厳格なfp」...
    "クラス" ...
    「静的」...
    「保護された」...
    "プライベート" ...
    「ネイティブ」...
    「一過性」…
    「揮発性」...
    「列挙型」...
    "インターフェース" ...

[cobertura] WARN [main] net.sourceforge.cobertura.reporting.ComplexityCalculator - Java ファイル C:\project\src\main\java\Project\logging\ApplicationLoggingAspect.aj の解析中に JavaNCSS でエラーが発生しました
STDIN の ParseException
最後の有用なチェックポイント: 「project.logging」。
行 5、列 8 で「アスペクト」に遭遇しました。
次のいずれかを期待していました:
    「@」…
    "概要" ...
    "最後の" ...
    "公衆" ...
    「同期」...
    「厳格なfp」...
    "クラス" ...
    「静的」...
    「保護された」...
    "プライベート" ...
    「ネイティブ」...
    「一過性」…
    「揮発性」...
    「列挙型」...
    "インターフェース" ...


Javancss.(InputStream).e: net.sourceforge.cobertura.javancss.ParseException: 行 4、列 17 で「アスペクト」が発生しました。
次のいずれかを期待していました:
    「@」…
    "概要" ...
    "最後の" ...
    "公衆" ...
    「同期」...
    「厳格なfp」...
    "クラス" ...
    「静的」...
    「保護された」...
    "プライベート" ...
    「ネイティブ」...
    「一過性」…
    「揮発性」...
    「列挙型」...
    "インターフェース" ...

[cobertura] WARN [main] net.sourceforge.cobertura.reporting.ComplexityCalculator - Java ファイル C:\project\src\main\java\Project\logging\LoggingAspect.aj の解析中に JavaNCSS でエラーが発生しました
STDIN の ParseException
最後の有用なチェックポイント: 「project.logging」。
行 4、列 17 で「アスペクト」に遭遇しました。
次のいずれかを期待していました:
    「@」…
    "概要" ...
    "最後の" ...
    "公衆" ...
    「同期」...
    「厳格なfp」...
    "クラス" ...
    「静的」...
    「保護された」...
    "プライベート" ...
    「ネイティブ」...
    「一過性」…
    「揮発性」...
    「列挙型」...
    "インターフェース" ...


Javancss.(InputStream).e: net.sourceforge.cobertura.javancss.ParseException: 行 6、列 17 で「アスペクト」が発生しました。
次のいずれかを期待していました:
    「@」…
    "概要" ...
    "最後の" ...
    "公衆" ...
    「同期」...
    「厳格なfp」...
    "クラス" ...
    「静的」...
    「保護された」...
    "プライベート" ...
    「ネイティブ」...
    「一過性」…
    「揮発性」...
    「列挙型」...
    "インターフェース" ...

[cobertura] WARN [main] net.sourceforge.cobertura.reporting.ComplexityCalculator - Java ファイル C:\project\src\main\java\Project\logging\TracingAspect.aj の解析中に JavaNCSS でエラーが発生しました
STDIN の ParseException
最後の有用なチェックポイント: 「project.logging」。
行 6、列 17 で「アスペクト」に遭遇しました。
次のいずれかを期待していました:
    「@」…
    "概要" ...
    "最後の" ...
    "公衆" ...
    「同期」...
    「厳格なfp」...
    "クラス" ...
    「静的」...
    「保護された」...
    "プライベート" ...
    「ネイティブ」...
    「一過性」…
    「揮発性」...
    「列挙型」...
    "インターフェース" ...


レポート時間: 5891ms

[情報] Cobertura レポートの生成に成功しました。
[情報] Cobertura 1.9.2 - GNU GPL ライセンス (無保証) - COPYRIGHT ファイルを参照
Cobertura: 538 クラスの情報を読み込みました。
Javancss.(InputStream).e: net.sourceforge.cobertura.javancss.ParseException: 行 5、列 8 で「アスペクト」が発生しました。
次のいずれかを期待していました:
    「@」…
    "概要" ...
    "最後の" ...
    "公衆" ...
    「同期」...
    「厳格なfp」...
    "クラス" ...
    「静的」...
    「保護された」...
    "プライベート" ...
    「ネイティブ」...
    「一過性」…
    「揮発性」...
    「列挙型」...
    "インターフェース" ...

[cobertura] WARN [main] net.sourceforge.cobertura.reporting.ComplexityCalculator - Java ファイル C:\project\src\main\java\Project\logging\ApplicationLoggingAspect.aj の解析中に JavaNCSS でエラーが発生しました
STDIN の ParseException
最後の有用なチェックポイント: 「project.logging」。
行 5、列 8 で「アスペクト」に遭遇しました。
次のいずれかを期待していました:
    「@」…
    "概要" ...
    "最後の" ...
    "公衆" ...
    「同期」...
    「厳格なfp」...
    "クラス" ...
    「静的」...
    「保護された」...
    "プライベート" ...
    「ネイティブ」...
    「一過性」…
    「揮発性」...
    「列挙型」...
    "インターフェース" ...


Javancss.(InputStream).e: net.sourceforge.cobertura.javancss.ParseException: 行 4、列 17 で「アスペクト」が発生しました。
次のいずれかを期待していました:
    「@」…
    "概要" ...
    "最後の" ...
    "公衆" ...
    「同期」...
    「厳格なfp」...
    "クラス" ...
    「静的」...
    「保護された」...
    "プライベート" ...
    「ネイティブ」...
    「一過性」…
    「揮発性」...
    「列挙型」...
    "インターフェース" ...

[cobertura] WARN [main] net.sourceforge.cobertura.reporting.ComplexityCalculator - Java ファイル C:\project\src\main\java\Project\logging\LoggingAspect.aj の解析中に JavaNCSS でエラーが発生しました
STDIN の ParseException
最後の有用なチェックポイント: 「project.logging」。
行 4、列 17 で「アスペクト」に遭遇しました。
次のいずれかを期待していました:
    「@」…
    "概要" ...
    "最後の" ...
    "公衆" ...
    「同期」...
    「厳格なfp」...
    "クラス" ...
    「静的」...
    「保護された」...
    "プライベート" ...
    「ネイティブ」...
    「一過性」…
    「揮発性」...
    「列挙型」...
    "インターフェース" ...


Javancss.(InputStream).e: net.sourceforge.cobertura.javancss.ParseException: 行 6、列 17 で「アスペクト」が発生しました。
次のいずれかを期待していました:
    「@」…
    "概要" ...
    "最後の" ...
    "公衆" ...
    「同期」...
    「厳格なfp」...
    "クラス" ...
    「静的」...
    「保護された」...
    "プライベート" ...
    「ネイティブ」...
    「一過性」…
    「揮発性」...
    「列挙型」...
    "インターフェース" ...

[cobertura] WARN [main] net.sourceforge.cobertura.reporting.ComplexityCalculator - Java ファイル C:\project\src\main\java\Project\logging\TracingAspect.aj の解析中に JavaNCSS でエラーが発生しました
STDIN の ParseException
最後の有用なチェックポイント: 「project.logging」。
行 6、列 17 で「アスペクト」に遭遇しました。
次のいずれかを期待していました:
    「@」…
    "概要" ...
    "最後の" ...
    "公衆" ...
    「同期」...
    「厳格なfp」...
    "クラス" ...
    「静的」...
    「保護された」...
    "プライベート" ...
    「ネイティブ」...
    「一過性」…
    「揮発性」...
    「列挙型」...
    "インターフェース" ...


レポート時間: 3125ms

[情報] Cobertura レポートの生成に成功しました。
[情報]  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - - -------------------------
[情報] ビルド成功
[情報]  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - - -------------------------
[情報] 合計時間: 30 秒
[情報] 終了: 2009 年 9 月 2 日水曜日 17:15:45 VET
[情報] ファイナルメモリー: 26M/254M
[情報]  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - - -------------------------
4

2 に答える 2

2

コンパイル用にaspectj-maven-pluginを使用してセットアップし、コードカバレッジ用にcobertura-maven-pluginを使用するプロジェクトがあります。コンパイル時のウィービングの場合、これは実行時に正常に機能しmvn siteますが、テストは2回コンパイル/実行され、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警告に関して、試すことができる1つのことは、アドバイス実行の本体をアスペクトで定義するのではなく、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);
}

私の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>
于 2009-09-13T13:24:07.867 に答える
0

私は同じ問題 (Hudson で報告されたカバレッジを実行しようとしている) を抱えており、aspectj の実行目標から「テストコンパイル」目標を削除することで解決しました。その後、コベルチュラとエマの両方が魅力的に働きました。

私の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>
于 2010-09-03T13:19:09.453 に答える