我使用多种工具进行持续集成:
一切都适用于Java项目和XML项目。
我遇到了Javascript和网络项目的问题。项目是在Sonar中创建的,但它们都是空的。
以下是javascript项目的堆栈跟踪示例
[INFO] --- sonar-maven-plugin:2.0-beta-2:声纳(默认-cli)@ MyProject ---
[INFO]声纳版本:3.3
[INFO] [15:59:24.937]为...创建JDBC数据源 JDBC:MySQL的://声纳-02:3306 /声纳
[INFO] [15:59:41.190]初始化Hibernate
[INFO] [15:59:43.318] -------------分析MyProject JS
[INFO] [15:59:43.573]质量简介: [名称= myProfileJavascript,语言= 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:\工作\工作区\的Intellij \ MyProject的\ SRC \主\ java中[INFO] [15:59:43.881]测试目录:
[INFO] [15:59:43.882]
C:\工作\工作区\的Intellij \ MyProject的\ SRC \测试\ 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 ms
[INFO] [15:59:44.183]传感器JavaScriptSourceImporter ...
[INFO] [15:59:44.335]传感器JavaScriptSourceImporter完成:152 ms
[INFO] [15:59:44.335]传感器JavaScriptSquidSensor ......
[INFO] [15:59:44.520]传感器JavaScriptSquidSensor完成:185 ms
[INFO] [15:59:44.520]传感器JsTestDriverSurefireSensor ......
[INFO] [15:59:44.526]传感器JsTestDriverSurefireSensor完成:6 ms
[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 ms
[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 ms
[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]执行岗位课程 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>
与网络项目存在同样的问题。
任何想法?
提前谢谢。
我使用以下信息创建了一个新的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:测试完成: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 ms
[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:\工作\工作区\的Intellij \ MyProject的\ SRC \主\ web应用
与web和JS相同的行为。
我需要一个pom文件。所以我通过配置文件管理声纳属性。作为&#34; sourceDirectory&#34;在配置文件中无法定义,我使用自定义属性。
该物业&#34; sonar.branch&#34;使我能够为我的项目提供几个声纳条目。<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>
答案 0 :(得分: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将原生支持多语言项目。在那之前,你必须使用这个黑客。