8

初始职位

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

  • Maven 3.0.4
  • 声纳 3.3
  • 声纳网络插件 1.2
  • 声纳 Javascript 插件 1.1
  • 詹金斯 1.486

Java 项目和 XML 项目一切正常。

我在使用 Javascript 和 Web 项目时遇到问题。项目是在 Sonar 中创建的,但它们是空的。

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

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

[INFO] 声纳版本:3.3

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

[信息] [15:59:41.190] 初始化休眠

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

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

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

[INFO] [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] 初始化程序 ProjectFileSystemLogger 完成:5 毫秒

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

[信息] [15:59:43.884] Java 源版本:1.6

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

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

[信息] [15:59:44.183] 传感器 JavaScriptSourceImporter...

[信息] [15:59:44.335] 传感器 JavaScriptSourceImporter 完成:152 毫秒

[信息] [15:59:44.335] 传感器 JavaScriptSquidSensor...

[信息] [15:59:44.520] 传感器 JavaScriptSquidSensor 完成:185 毫秒

[信息] [15:59:44.520] 传感器 JsTestDriverSurefireSensor ...

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

[信息] [15:59:44.526] 传感器 JsTestDriverCoverageSensor ...

[信息] [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] 传感器配置文件传感器...

[INFO] [15:59:44.725] Sensor ProfileSensor done: 83 ms

[信息] [15:59:44.725] 传感器配置文件事件传感器...

[INFO] [15:59:44.752] Sensor ProfileEventsSensor done: 27 ms

[信息] [15:59:44.753] 传感器项目链接传感器...

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

[信息] [15:59:44.791] 传感器版本事件传感器...

[信息] [15:59:44.820] 传感器版本事件传感器完成:29 毫秒

[信息] [15:59:44.820] 传感器 Maven 依赖项...

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

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

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

[INFO] [15:59:48.857] 执行 post-job 类 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 之间每天保留一张快照

[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

[信息] [15:59:49.163] -> 清理 MyProject JS [id=57524]

[信息] [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 项目也存在同样的问题。

任何的想法 ?

先感谢您。

编辑 2013 年 11 月 2 日-Fabrice 之后-声纳团队评论

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

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

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

[信息] [12:11:54.486] 执行 org.apache.maven.plugins:maven-surefire-plugin:2.9:test done: 545 ms

[信息] [12:11:54.486] 执行 maven 插件 maven-surefire-plugin 完成:545 毫秒

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

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

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

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

[信息] [12:11:54.487] 源目录:

[信息] [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>

4

1 回答 1

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 将原生支持多语言项目。在那之前,你必须使用这个技巧。

于 2013-02-08T15:40:59.447 回答