【问题标题】:Empty metrics in sonar for web and javascript projectsweb 和 javascript 项目的声纳中的空指标
【发布时间】:2013-01-24 09:49:58
【问题描述】:

首发

我使用多种工具进行持续集成:

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

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

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

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

[INFO] --- sonar-maven-plugin:2.0-beta-2:sonar (default-cli) @ 我的项目---

[INFO] 声纳版本:3.3

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

[INFO] [15:59:41.190] 初始化休眠

[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] 源目录:

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

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

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

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

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

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

[INFO] [15:59:44.642] 传感器配置文件传感器...

[INFO] [15:59:44.725] 传感器配置文件传感器完成时间:83 毫秒

[INFO] [15:59:44.725] Sensor ProfileEventsSensor...

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

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

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

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

[INFO] [15:59:44.820] 传感器版本事件传感器完成时间:29 毫秒

[INFO] [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] 执行作业后课程 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

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

[INFO] [15:59:49.167]

我可以看到声纳正在使用 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 项目也存在同样的问题。

有什么想法吗?

提前谢谢你。

编辑 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>

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

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

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

[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] 源目录:

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

【问题讨论】:

    标签: javascript jsp maven web sonarqube


    【解决方案1】:

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

    【讨论】:

    • 首先感谢您的回复。但是我一定做错了,我会在上面添加细节。
    • 您的配置有问题,Sonar 似乎仍将您的项目视为 Java 项目。你能看看下面的例子吗:github.com/SonarSource/sonar-examples/tree/master/projects/…github.com/SonarSource/sonar-examples/tree/master/projects/…
    • 再次感谢您。我已恢复所有更改并制作了一个轻量级的 pom-web.xml。它工作得很好。现在,我正在尝试使其与配置文件一起使用,我认为这将更易于维护(不知道 jenkins “perfom maven release”插件如何处理多个 pom 文件)。最后一个问题是更改配置文件中的“sourceDirectory”。
    • 感谢 Fabrice,问题解决了。我编辑初始帖子以添加解决方案。
    • @Fabrice-SonarQubeTeam 你有任何使用声纳转轮的相同设置的示例配置吗?一个具有两种语言的模块,可以像在这个 Maven 配置中一样单独运行?
    猜你喜欢
    • 2017-05-09
    • 2015-02-16
    • 2015-09-28
    • 1970-01-01
    • 1970-01-01
    • 2013-05-21
    • 1970-01-01
    • 2019-10-27
    • 2016-03-21
    相关资源
    最近更新 更多