Sonar codereview平臺配置搭建

Sonar代碼分析實戰(6)——1.2.2 Sonar Runner執行代碼分析

 

使用Sonar做代碼分析時,有很多種途徑,但是推薦使用Sonar Runner。

本節描述基於Sonar Runner 2.0+

 如有不懂,mailto : [email protected].

前提準備

你必須提前下載,並安裝Sonar Runner。下載:

http://repository.codehaus.org/org/codehaus/sonar-plugins/sonar-runner/2.0/sonar-runner-2.0.zip<!--[if !supportNestedAnchors]--><!--[endif]-->

安裝配置請參考前面章節中

 

簡單工程

在項目根路徑下,創建配置文件,文件名爲sonar-project.properties。sonar-runner執行分析時,會讀取該文件。

 

文件內容示意: sonar-project.properties

# required metadata

sonar.projectKey=my:project

sonar.projectName=My project

sonar.projectVersion=1.0

 

# path to source directories (required)

sonar.sources=srcDir1,srcDir2

 

# path to test source directories (optional)

sonar.tests=testDir1,testDir2

 

# path to project binaries (optional), for example directory of Java bytecode

sonar.binaries=binDir

 

# optional comma-separated list of paths to libraries. Only path to JAR file and path to directory of classes are supported.

sonar.libraries=path/to/library.jar,path/to/classes/dir

 

# The value of the property must be the key of the language.

sonar.language=cobol

 

# Additional parameters

sonar.my.property=value

配置好上述文件後,從命令行在根路徑下執行下面命令啓動項目的代碼分析。

sonar-runner

爲了幫助新手儘快入門,github存取服務上存放簡單的示例代碼,可供瀏覽和下載。

 

多模塊工程

在Sonar分析時可以使用兩種方式配置項目的結構。一種需要在項目下配置一個總文件,一種可以在每個模塊下各自配置一個文件。

方式一:

將所有的配置放在一個sonar-project.properties文件,並放在項目的根路徑下。

 

 

文件內容示意:

# Root project information

sonar.projectKey=org.mycompany.myproject

sonar.projectName=My Project

sonar.projectVersion=1.0-SNAPSHOT

 

# Some properties that will be inherited by the modules

sonar.sources=src

 

# List of the module identifiers

sonar.modules=module1,module2

 

# Properties can obviously be overriden for

# each module - just prefix them with the module ID

module1.sonar.projectName=Module 1

module2.sonar.projectName=Module 2

 

方式二:

每個模塊下的配置放在各自的獨立文件中。

 

配置示意:

總配置的內容 "MyProject/sonar-project.properties"  

# Root project information

sonar.projectKey=org.mycompany.myproject

sonar.projectName=My Project

sonar.projectVersion=1.0-SNAPSHOT

 

# Some properties that will be inherited by the modules

sonar.sources=src

 

# List of the module identifiers

sonar.modules=module1,module2

 

 

子配置一 "MyProject/module1/sonar-project.properties"

# Redefine properties

# Note that you do not need to prefix the property here

sonar.projectName=Module 1

 

 

子配置二 "MyProject/module2/sonar-project.properties"

# Redefine properties

# Note that you do not need to prefix the property here

sonar.projectName=Module 2

 

值得注意:

1、子配置繼承於父配置,子配置將可以覆蓋父配置,通過兩種方法:

在父配置中配置屬性前增加模塊標識前綴。

在子配置中直接定義配置。

2、特殊情況可以指定根目錄

默認情況下,模塊的根目錄默認爲模塊的標識符(如上面的示例)。特殊情況下,可以在配置文件中使用“sonar.projectBaseDir”屬性來指定根目錄。如:

module1.sonar.projectBaseDir=My Module One  #含空格

 

module1.sonar.projectBaseDir=modules/mod1  #多層級

module2.sonar.projectBaseDir=modules/mod2

 

3、多模塊項目使用Sonar做分析時不能只指定一個源代碼目錄。 

爲了幫助儘快入門,這裏依然有部分示意代碼。你可以瀏覽和下載。

4、相同結構的多模塊projects/languages/java/sonar-runner/java-sonar-runner-modules-same-structure

5、不同結構的多模塊projects/languages/java/sonar-runner/java-sonar-runner-modules-different-structures

6、模塊獨自配置projects/languages/java/sonar-runner/java-sonar-runner-modules-own-configuration-file

 

      多模塊多語言功能

從Sonar3.3開始,Sonar支持多語言多模塊工程的代碼分析。

而配置也極其簡單,只需在多模塊工程的基礎上增加一個語言屬性的配置,如:

module.sonar.language

module1.sonar.language=java

module2.sonar.language=javascript

 

爲了幫助儘快入門,這裏依然有部分示意代碼。你可以瀏覽和下載。項目路徑: 

projects/languages/multi-language/multi-language-java-javascript-sonar-runner

高級用法

如果不在項目的工程的根路徑創建sonar-project.properties文件,還可以進行其他選擇。

 

1、通過command命令行直接指定:

sonar-runner -Dsonar.projectKey=myproject -Dsonar.sources=src1 ..

2、通過command命令行指定配置文件路徑: 'project.settings'

sonar-runner -Dproject.settings=../myproject.properties

 

通過設置'sonar.working.directory'屬性可以設置Sonar的工作目錄,默認爲'.sonar'

通過設置'project.home'屬性可以指定項目的根路徑。根路徑下必須包含sonar-project.properties配置文件(除非執行指令時顯示給定路徑。)

命令行執行分析時,可以追加參數。參數。

 

疑難解答

對於較大的工程項目,經常出現內存不夠的問題,需要設置虛擬機的內存。

export SONAR_RUNNER_OPTS="-Xmx512m -XX:MaxPermSize=128m"

在Window環境下:

set SONAR_RUNNER_OPTS=-Xmx512m -XX:MaxPermSize=128m

 

從Sonar Runner 1.X向2.0遷移

只需將以下屬性名替換爲新屬性名即可:

sources => sonar.sources

tests => sonar.tests

binaries => sonar.binaries

libraries => sonar.libraries

在sonar-project.properties文件明確設置sonar.sourceEncoding屬性。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章