8

最初の投稿

私は継続的インテグレーションのためにいくつかのツールを使用しています:

  • Maven 3.0.4
  • ソナー 3.3
  • ソナー Web プラグイン 1.2
  • ソナー Javascript プラグイン 1.1
  • ジェンキンス 1.486

Java プロジェクトと XML プロジェクトでは、すべてが正常に機能します。

Javascript と Web プロジェクトで問題が発生しています。プロジェクトは Sonar で作成されますが、空です。

以下は、JavaScript プロジェクトのスタックトレースのサンプルです。

[INFO] --- sonar-maven-plugin:2.0-beta-2:sonar (default-cli) @ MyProject ---

[情報] ソナー バージョン: 3.3

[INFO] [15:59:24.937] jdbc の JDBC データソースを作成します:mysql://sonar-02:3306/sonar

[情報] [15:59:41.190] 休止状態を初期化しています

[情報] [15:59:43.318] ------------- MyProject JS の分析

[INFO] [15:59:43.573] 品質プロファイル: [name=myProfileJavascript,language=js]

[情報] [15:59:43.612] Maven プラグインを構成します...

[情報] [15:59:43.653] 以前の分析と比較 (2013-02-08)

[INFO] [15:59:43.672] 5日間比較 (2013-02-03、2013-02-07 12:29:08.0の分析)

[INFO] [15:59:43.682] 30日間比較 (2013-01-09、2013-02-07 12:29:08.0の分析)

[情報] [15:59:43.877] 初期化子 ProjectFileSystemLogger...

[情報] [15:59:43.878] 除外されたテスト: [**/package-info.java]

[情報] [15:59:43.881] ソース ディレクトリ:

[情報] [15:59:43.881]
C:\Work\Workspaces\Intellij\MyProject\src\main\java

[情報] [15:59:43.881] テスト ディレクトリ:

[情報] [15:59:43.882]
C:\Work\Workspaces\Intellij\MyProject\src\test\java

[INFO] [15:59:43.882] Initializer ProjectFileSystemLogger done: 5 ミリ秒

[情報] [15:59:43.882] 初期化子 MavenInitializer...

[情報] [15:59:43.884] Java ソース バージョン: 1.6

[情報] [15:59:43.884] Java ターゲット バージョン: 1.6

[情報] [15:59:43.884] イニシャライザー MavenInitializer 完了: 2 ミリ秒

[情報] [15:59:44.183] センサー JavaScriptSourceImporter...

[INFO] [15:59:44.335] センサーの JavaScriptSourceImporter が完了しました: 152 ミリ秒

[INFO] [15:59:44.335] センサー JavaScriptSquidSensor...

[INFO] [15:59:44.520] センサー JavaScriptSquidSensor 完了: 185 ミリ秒

[情報] [15:59:44.520] センサー JsTestDriverSurefireSensor...

[情報] [15:59:44.526] センサー JsTestDriverSurefireSensor 完了: 6 ミリ秒

[情報] [15:59:44.526] センサー JsTestDriverCoverageSensor...

[INFO] [15:59:44.584] センサー JsTestDriverCoverageSensor 完了: 58 ミリ秒

[情報] [15:59:44.584] センサー CpdSensor...

[情報] [15:59:44.585] SonarBridgeEngine が使用されています

[情報] [15:59:44.642] センサー CpdSensor 完了: 58 ミリ秒

[情報] [15:59:44.642] センサー プロファイルセンサー...

[情報] [15:59:44.725] センサー ProfileSensor 完了: 83 ミリ秒

[情報] [15:59:44.725] センサー ProfileEventsSensor...

[情報] [15:59:44.752] センサー ProfileEventsSensor 完了: 27 ミリ秒

[情報] [15:59:44.753] センサー ProjectLinksSensor...

[情報] [15:59:44.791] センサー ProjectLinksSensor 完了: 38 ミリ秒

[情報] [15:59:44.791] センサー VersionEventsSensor...

[INFO] [15:59:44.820] Sensor VersionEventsSensor done: 29 ミリ秒

[情報] [15:59:44.820] センサー Maven の依存関係...

[INFO] [15:59:48.148] センサー Maven の依存関係が完了しました: 3328 ミリ秒

[INFO] [15:59:48.517] デコレータを実行...

[情報] [15:59:48.856] 分析成功、参照できます http://sonarServer:9000

[情報] [15:59:48.857] ポストジョブ クラス org.sonar.plugins.core.batch.IndexProjectPostJob を実行しています

[INFO] [15:59:49.140] post-job クラス org.sonar.plugins.dbcleaner.ProjectPurgePostJob を実行しています

[INFO] [15:59:49.154] -> 2013-01-11 から 2013-02-07 の間で 1 日あたり 1 つのスナップショットを保持します

[INFO] [15:59:49.156] -> 2012 年 12 月 14 日から 2013 年 1 月 11 日までの間、週に 1 つのスナップショットを保持します

[INFO] [15:59:49.157] -> 2011 年 4 月 8 日から 2012 年 12 月 14 日までの間、毎月 1 つのスナップショットを保持します

[INFO] [15:59:49.157] -> 2011-04-08 以前のデータを削除

[情報] [15:59:49.163] -> MyProject JS を消去 [id=57524]

[INFO] [15:59:49.167] <- クリーン スナップショット 1690793

ソナーが C:\Work\Workspaces\Intellij\MyProject\src\main\java を使用していることがわかります

私のpomでは、ソナーの動作を変更せずにいくつかのプロパティをテストしました。

 <sonar.javascript.sources>src/main/webapp</sonar.javascript.sources>
 <sonar.sources>src/main/webapp</sonar.sources>
 <sources>src/main/webapp</sources>

これは Web プロジェクトでも同じ問題です。

何か案が ?

前もって感謝します。

EDIT 11/02/2013 - ファブリスの後 - ソナーチームのコメント

次の情報で新しいpom(pom-web.xml)を作成しました

<properties>
    <sonar.branch>JS</sonar.branch>
    <sonar.language>web</sonar.language>
</properties>
<build>
    <sourceDirectory>src/main/webapp</sourceDirectory>
</build>

ソース ディレクトリが変更されたようですが、メトリクスはまだ空です。

[INFO] [12:11:54.486] org.apache.maven.plugins:maven-surefire-plugin:2.9:test done: 545 ミリ秒を実行します

[INFO] [12:11:54.486] maven プラグインの実行 maven-surefire-plugin done: 545 ミリ秒

[INFO] [12:11:54.486] イニシャライザ JacocoMavenInitializer...

[INFO] [12:11:54.486] 初期化子 JacocoMavenInitializer 完了: 0 ミリ秒

[情報] [12:11:54.486] 初期化子 ProjectFileSystemLogger...

[情報] [12:11:54.487] 除外されたテスト: [**/package-info.java]

[情報] [12:11:54.487] ソース ディレクトリ:

[INFO] [12:11:54.487]
C:\Work\Workspaces\Intellij\MyProject\src\main\webapp

Web と JS で同じ動作。

EDIT 11/02/2013 : 解決策が見つかりました

pom ファイルが 1 つ必要でした。そこで、プロファイルのおかげでソナーのプロパティを管理しました。「sourceDirectory」はプロファイル内で再定義できないため、カスタム プロパティを使用します。

プロパティ「sonar.branch」を使用すると、プロジェクトにいくつかのソナー エントリを含めることができます。

<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>fr.test</groupId>
<artifactId>MyMultiLanguageProject</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>

<properties>
    <ci.build.sourceDirectory>src/main/java</ci.build.sourceDirectory>
    <ci.build.testSourceDirectory>src/test/java</ci.build.testSourceDirectory>
</properties>

<build>
    <sourceDirectory>${ci.build.sourceDirectory}</sourceDirectory>
    <testSourceDirectory>${ci.build.testSourceDirectory}</testSourceDirectory>
</build>

<profiles>
    <profile>
        <id>CI-WEB</id>
        <properties>
            <sonar.branch>WEB</sonar.branch>
            <sonar.language>web</sonar.language>
            <sonar.sources>src</sonar.sources>
            <ci.build.sourceDirectory>src/main/webapp</ci.build.sourceDirectory>
            <ci.build.testSourceDirectory>src/test/webapp</ci.build.testSourceDirectory>
        </properties>
    </profile>
    <profile>
        <id>CI-JS</id>
        <properties>
            <sonar.branch>JS</sonar.branch>
            <sonar.language>js</sonar.language>
            <sonar.sources>src</sonar.sources>
            <ci.build.sourceDirectory>src/main/webapp</ci.build.sourceDirectory>
            <ci.build.testSourceDirectory>src/test/webapp</ci.build.testSourceDirectory>
        </properties>
    </profile>
</profiles>

4

1 に答える 1

6

JSおよびWebプロジェクトを分析する場合は、現在、他のPOM(またはPOM内のプロファイル)を作成する必要があります。これらの新しいPOM(またはプロファイル)では、「sourceDirectory」タグを正しいフォルダーに設定し、プロパティで「sonar.language」を指定することを忘れないでください。また、これらの新しいPOM /プロファイルは、Sonarで異なるプロジェクトを持つように、artifactIdを変更する必要があります。

次に、「mvn clean sonar:sonar -f pom-javascript.xml」(新しいPOM)または「mvnclean sonar:sonar -Pjavascript」(プロファイルを使用)を実行できます。

近い将来、Sonarは多言語プロジェクトをネイティブにサポートする予定です。それまでは、このハックを使用する必要があります。

于 2013-02-08T15:40:59.447 に答える