費話不說,直接上代碼:
需要注意的地方:
1. 每個項目的key不能重復。
2. 注意編碼方式。
3. 注意分模塊的寫法。
4. 忽略源碼文件的寫法。
# Required metadata sonar.projectKey=EG:Fm sonar.projectName=Fm sonar.projectVersion=1.0 sonar.sourceEncoding=UTF-8 sonar.modules=csharp-module,javascript-module # csharp-module csharp-module.sonar.projectName=Csharp Module csharp-module.sonar.language=cs csharp-module.sonar.sources=. csharp-module.sonar.exclusions=**/obj/**/* csharp-module.sonar.projectBaseDir=. # javascript-module javascript-module.sonar.projectName=JavaScript Module javascript-module.sonar.language=js javascript-module.sonar.sources=. javascript-module.sonar.exclusions=**/lib/**/*,**/node_modules/**/* javascript-module.sonar.projectBaseDir=.
以上配置文件在分析.net framework時沒有問題,但分析.net core時,發現不能分析cs代碼,在網上看到有博友說是sonarc#插件版本的問題,我也更新到最新版了,還是不行。
后來就用了新的dotnet-sonarscanner做代碼分析,才可以分析.net core的代碼。記錄如下:
首先安裝dotnet-sonarscanner: 這里的dotnet tool是隨着.net core 2.1版本安裝的,相當於npm的功能。
dotnet tool install --global dotnet-sonarscanner --version 4.3.1
其次在項目目錄下運行命令:
sh "export PATH=$PATH:/root/.dotnet/tools && export DOTNET_ROOT=/usr/local/dotnet && cd ${projectDir}/ && /usr/local/bin/dotnet sonarscanner begin /k:'FutureMr' /d:sonar.host.url='http://10.117.150.41:39900' /d:sonar.login='d750699187a51815f44523d704d9afe7084aa96d' /d:sonar.exclusions='**/build/**/*,**/bin/**/*,**/obj/**/*,**/lib/**/*,**/node_modules/**/*,**/media/**/*,**/FmContent/**/*,**/css/**/*,**/images/**/*,**/Template/**/*'" sh 'cd ${projectDir}/ && /usr/local/bin/dotnet build' sh 'export PATH=$PATH:/root/.dotnet/tools && export DOTNET_ROOT=/usr/local/dotnet && cd ${projectDir}/ && /usr/local/bin/dotnet sonarscanner end /d:sonar.login="d750699187a51815f44523d704d9afe7084aa96d"'
我是在Jenkins的pipleline中運行的,由於pipeline中總是提示:
No executable found matching command "dotnet-sonarscanner"
但是我們的path環境變量已經設置了,但jenkins不認,所以只能在這里重新設置。