2016-12-27 80 views
0

這裏的簡單問題。我想添加聲納在每個Maven版本上執行。我想:如何使用聲納Maven插件

<plugin> 
    <groupId>org.sonarsource.scanner.maven</groupId> 
    <artifactId>sonar-maven-plugin</artifactId> 
    <version>3.1.1</version> 
</plugin> 

<plugin> 
    <groupId>org.codehaus.sonar</groupId> 
    <artifactId>sonar-maven-plugin</artifactId> 
    <version>5.1</version> 
</plugin> 

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>sonar-maven-plugin</artifactId> 
    <version>2.7.1</version> 
</plugin> 

因爲)我無法弄清楚什麼插件做的和/或b)哪一個是目前的一個。

如果我只將以上內容添加到<build> - ><plugins>它不會被執行(因此插件沒有默認執行)。所以我當然加了<execution>指令,而聲納被執行後,但有以下錯誤信息:

<executions> 
    <execution> 
     <phase>prepare-package</phase> 
     <goals> 
      <goal>sonar</goal> 
     </goals> 
    </execution> 
</executions> 

未能執行目標org.sonarsource.scanner.maven:聲納Maven的插件: 3.1.1:項目org.acme.project.build上的聲納(默認):無法執行Findbugs:此項目包含未編譯的Java源文件。

它似乎沒有我使用哪種階段(我試過validatecompiletestprepare-packagepackage即使不是全部的意義)。我確信在項目的任何地方都沒有源代碼生成。而靜態類得到編譯就好了。

我認爲問題可能是插件被執行的每個模塊,包括父pom項目。這很奇怪,因爲sonar:sonar跳過了這個項目。

但該項目結構簡單,我無法找到任何不尋常的:

<groupId>group</groupId> 
<artifactId>org.acme.project.build</artifactId> 
<version>0.0.1-SNAPSHOT</version> 
<packaging>pom</packaging> 

<modules> 
    <module>org.acme.project</module> 
</modules> 

<profiles> 
    <profile> 
     <id>sonar</id> 
     <properties> 
      <sonar.host.url>http://sonar.acme.org/</sonar.host.url> 
     </properties> 
     <build> 
      <plugins> 
       <plugin> 
        <groupId>org.sonarsource.scanner.maven</groupId> 
        <artifactId>sonar-maven-plugin</artifactId> 
        <version>3.1.1</version> 
        <executions> 
         <execution> 
          <phase>compile</phase> 
          <goals> 
           <goal>sonar</goal> 
          </goals> 
         </execution> 
        </executions> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 
</profiles> 

org.acme.project除了有其自己的工件ID和父沒有該項目。該命令行是:mvn clean deploy -Dsonar.login=Wile.Coyote -Dsonar.password=*********** -Psonar

日誌顯示聲納始終執行之前安裝階段,這當然是遠遠早。

那麼,如何使用Sonar的Maven插件來分析我的代碼?

+0

你得到的錯誤是用哪個插件? – nullpointer

+0

@nullpointer使用'sonar-maven-plugin'。 –

+0

我的意思是使用groupId的sonar-maven-plugin?你們一起使用它們三個嗎? – nullpointer

回答

0

一)我無法弄清楚什麼插件做

的插件是用來收集來自代碼覆蓋率報告和庫代碼掃描的細節越來越來分析可能的錯誤,重複等您可以搜索樣品聲納報告找到什麼都,以及如何獲得這些細節與使用兩種方法,如settings.xmlmaven plugin行家在SonarQube Scanner for Maven詳述, SonarQube - analyzing with Maven

B)哪一個是當前的一個。

Maven的中央認爲,從org.codehaus.mojo當前插件作爲

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>sonar-maven-plugin</artifactId> 
    <version>3.2</version> 
</plugin> 

已經移動到

<plugin> 
    <groupId>org.sonarsource.scanner.maven</groupId> 
    <artifactId>sonar-maven-plugin</artifactId> 
    <version>3.2</version> 
</plugin> 

所以,你最好能夠利用的groupId的一個 - org.sonarsource.scanner.maven也建議由SonarQube Docs

此外,來自org.codehaus.sonar版本5.1的神器似乎已過時,並未得到維護。

+0

幸運的猜測,但該插件是我做了我的大部分測試。仍然有上面的錯誤信息。我現在認爲這是父母的問題。或者,也許問題在於無論如何迫使我手動添加''標籤,因爲如果沒有標籤,它就無法工作。 –