声纳中的空指标用于web和javascript项目

Wil*_*aud 8 javascript jsp maven web sonarqube

最初的帖子

我为持续集成使用了几个工具:

  • Maven 3.0.4
  • 声纳3.3
  • Sonar Web插件1.2
  • Sonar Javascript插件1.1
  • 詹金斯1.486

一切都适用于Java项目和XML项目.

我在使用Javascript和Web项目时遇到了麻烦.项目是在Sonar中创建的,但它们都是空的.

这是一个javascript项目的堆栈跟踪示例

[INFO] --- sonar-maven-plugin:2.0-beta-2:声纳(默认-cli)@ MyProject ---

[INFO]声纳版本:3.3

[INFO] [15:59:24.937]为jdbc创建JDBC数据源:mysql:// sonar-02:3306/sonar

[INFO] [15:59:41.190]初始化Hibernate

[INFO] [15:59:43.318] -------------分析MyProject JS

[INFO] [15:59:43.573]质量档案:[name = myProfileJavascript,language = js]

[INFO] [15:59:43.612]配置maven插件......

[INFO] [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分析)

[INFO] [15:59:43.877]初始化程序ProjectFileSystemLogger ...

[INFO] [15:59:43.878]排除的测试:[**/package-info.java]

[INFO] [15:59:43.881]来源目录:

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

[INFO] [15:59:43.881]测试目录:

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

[INFO] [15:59:43.882]初始化程序ProjectFileSystemLogger完成:5毫秒

[INFO] [15:59:43.882]初始化程序MavenInitializer ......

[INFO] [15:59:43.884] Java源码版本:1.6

[INFO] [15:59:43.884] Java目标版本:1.6

[INFO] [15:59:43.884]初始化程序MavenInitializer完成:2毫秒

[INFO] [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毫秒

[INFO] [15:59:44.520]传感器JsTestDriverSurefireSensor ......

[INFO] [15:59:44.526]传感器JsTestDriverSurefireSensor完成:6毫秒

[INFO] [15:59:44.526]传感器JsTestDriverCoverageSensor ......

[INFO] [15:59:44.584]传感器JsTestDriverCoverageSensor完成:58 ms

[INFO] [15:59:44.584]传感器CpdSensor ......

[INFO] [15:59:44.585]使用SonarBridgeEngine

[INFO] [15:59:44.642]传感器CpdSensor完成:58毫秒

[INFO] [15:59:44.642]传感器ProfileSensor ......

[INFO] [15:59:44.725]传感器ProfileSensor完成:83 ms

[INFO] [15:59:44.725]传感器ProfileEventsSensor ......

[INFO] [15:59:44.752]传感器ProfileEventsSensor完成:27 ms

[INFO] [15:59:44.753]传感器ProjectLinksSensor ......

[INFO] [15:59:44.791]传感器ProjectLinksSensor完成:38毫秒

[INFO] [15:59:44.791]传感器VersionEventsSensor ......

[INFO] [15:59:44.820]传感器VersionEventsSensor完成:29 ms

[INFO] [15:59:44.820]传感器Maven依赖...

[INFO] [15:59:48.148]完成传感器Maven依赖:3328 ms

[INFO] [15:59:48.517]执行装饰器......

[INFO] [15:59:48.856]分析成功,你可以浏览 http://sonarServer:9000

[INFO] [15:59:48.857]执行岗位类org.sonar.plugins.core.batch.IndexProjectPostJob

[INFO] [15:59:49.140]执行post-job class org.sonar.plugins.dbcleaner.ProjectPurgePostJob

[INFO] [15:59:49.154] - >在2013-01-11和2013-02-07之间每天保留一个快照

[INFO] [15:59:49.156] - >在2012-12-14和2013-01-11之间每周保留一个快照

[INFO] [15:59:49.157] - >在2011-04-08和2012-12-14之间每月保留一个快照

[INFO] [15:59:49.157] - >在2011-04-08之前删除数据

[INFO] [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>
Run Code Online (Sandbox Code Playgroud)

这与Web项目的问题相同.

任何的想法 ?

先感谢您.

编辑11/02/2013 - 在Fabrice之后 - 声纳团队发表评论

我用以下信息创建了一个新的pom(pom-web.xml)

<properties>
    <sonar.branch>JS</sonar.branch>
    <sonar.language>web</sonar.language>
</properties>
<build>
    <sourceDirectory>src/main/webapp</sourceDirectory>
</build>
Run Code Online (Sandbox Code Playgroud)

似乎源目录已更改但指标仍为空.

[INFO] [12:11:54.486]执行org.apache.maven.plugins:maven-surefire-plugin:2.9:测试完成:545 ms

[INFO] [12:11:54.486]执行maven插件maven-surefire-plugin完成:545 ms

[INFO] [12:11:54.486]初始化程序JacocoMavenInitializer ......

[INFO] [12:11:54.486]初始化程序JacocoMavenInitializer完成:0毫秒

[INFO] [12:11:54.486]初始化程序ProjectFileSystemLogger ...

[INFO] [12:11:54.487]排除的测试:[**/package-info.java]

[INFO] [12:11:54.487]来源目录:

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

与web和JS相同的行为.

编辑11/02/2013:找到解决方案

我需要一个pom文件.所以我通过配置文件管理声纳属性.由于"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>
Run Code Online (Sandbox Code Playgroud)

Fab*_*eam 6

如果要分析JS和Web项目,您当前必须创建其他POM(或POM中的配置文件).在那些新的POM(或配置文件)中,您将"sourceDirectory"标记设置为正确的文件夹,您不会忘记在属性中指定"sonar.language".此外,这些新的POM /配置文件应该更改artifactId,以便您在Sonar中拥有不同的项目.

然后你可以运行"mvn clean sonar:sonar -f pom-javascript.xml"(新POM)或"mvn clean sonar:sonar -Pjavascript"(使用配置文件).

在不久的将来,Sonar将原生支持多语言项目.在那之前,你必须使用这个hack.