状況
Flex-Mojos を使用して、Maven ビルド ジョブからFlexUnitによって生成されたコード カバレッジ レポートをSonarに表示させようとしていますが、うまくいきません。
ビルド出力
その結果、ダッシュボードには常に次のように表示されます (左側の列): (いいえ、単体テストは 90 分以上実行されず、16 秒以上実行されません。何が問題なのかわかりません)
Sonar 関連のコンソール出力は次のとおりです。 したがって、すべて正常に動作しているようです (Cobertura 以外のファイルが見つからないエラーはなく、どのような方法でも取り除くことができないようです。解析例外などはありません)。
ビルドのセットアップ
プロジェクトのpom.xml
ビルドに使用される は次のようになります。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>foo</groupId>
<artifactId>parent</artifactId>
<version>1.0.3</version>
</parent>
<groupId>foo</groupId>
<artifactId>bar</artifactId>
<version>0.1.0-SNAPSHOT</version>
<packaging>swc</packaging>
<name>Bar</name>
<dependencies>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito</artifactId>
<version>1.4M5</version>
<type>swc</type>
<scope>external</scope>
</dependency>
<dependency>
<groupId>com.adobe.flexunit</groupId>
<artifactId>flexunit</artifactId>
<version>4.1.0-8</version>
<classifier>flex</classifier>
<type>swc</type>
<scope>external</scope>
</dependency>
</dependencies>
<build>
<testSourceDirectory>src/test/flash</testSourceDirectory>
<plugins>
<plugin>
<groupId>org.sonatype.flexmojos</groupId>
<artifactId>flexmojos-maven-plugin</artifactId>
<version>4.2-beta</version>
<configuration>
<coverage>true</coverage>
<debug>false</debug>
<optimize>true</optimize>
<omitTraceStatements>true</omitTraceStatements>
<verboseStacktraces>false</verboseStacktraces>
<defines>
<property>
<name>CONFIG::BUILD</name>
<value>"${project.version}"</value>
</property>
</defines>
</configuration>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>asdoc</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
<resources>
<resource>
<directory>${project.build.directory}/asdoc/tempdita</directory>
<targetPath>docs</targetPath>
<includes>
<include>**/*.xml</include>
</includes>
<excludes>
<exclude>ASDoc_Config.xml</exclude>
<exclude>overviews.xml</exclude>
</excludes>
</resource>
</resources>
</build>
<properties>
<sonar.language>flex</sonar.language>
<sonar.sources>src/main/flash</sonar.sources>
<sonar.tests>src/test/flash</sonar.tests>
<sonar.surefire.reportsPath>target/surefire-reports</sonar.surefire.reportsPath>
</properties>
</project>
Sonar を実行するいくつかの方法を試しました。
dynamicAnalysis=reuseReports
+mvn clean install
+mvn sonar:sonar
dynamicAnalysis=true
+mvn clean install sonar:sonar -Dmaven.test.failure.ignore=true
dynamicAnalysis=true
+mvn clean install -DskipTests=true
+ (<-- は機能しません: このシナリオでは、何らかの理由で、Flex-Mojos のゴールmvn sonar:sonar
の実行中に単体テストが NullPointerException で実行に失敗します)。test-run
Sonar ダッシュボードでカバレッジ結果を表示する方法はありますか? 標準の Surefire レポートを表示するには、追加のプラグイン (Emma、Clover など) が必要ですか? これが機能しない既知の問題はありますか? 私は何か間違ったことをしていますか?
アップデート
Sonar-Runner で Sonar を実行してみました。興味深いことに、ダッシュボードはコード カバレッジ ウィジェットを完全に削除します。ランナーのコンソール出力を確認すると、ランナーがFlexSurefireSensor
( sonar:sonar
Maven ゴールが実行する) を実行しないことが示されます。
sonar-project.properties
ファイルには次が含まれます。
sonar.projectKey=foo:bar
sonar.projectName=Bar
sonar.projectVersion=0.1.0-SNAPSHOT
sonar.language=flex
sources=src/main/flash
tests=src/test/flash
sonar.dynamicAnalysis=reuseReports
sonar.surefire.reportsPath=target/surefire-reports
私はそれにmvn clean install
続いてそれを実行していsonar-runner
ます。