使用 Travis 和 SonarCloud(SonarAnalyzer) 对 .Net Core 项目进行分析

最近 SonarC# 加上了对 .Net Core 的支持,而且可以在 Linux 上运行 C# 的分析了。这样的话,就可以用 Travis-CI 对代码进行持续分析,并且自动将结果上传到 SonarCloud 上。要启用这个功能,只需要在 .travis.yml 里面加上 SonarCloud Addon(如果你用的话),然后在 install 字段里面下载sonar-scanner-msbuild的压缩包并运行即可。代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
addons:
sonarcloud:
organization: "liu233w-github"
token: $SONAR_TOKEN
cache:
directories:
- $HOME/.sonar/cache
- $HOME/.m2
install:
- curl -o scanner.zip -L https://github.com/SonarSource/sonar-scanner-msbuild/releases/download/4.1.1.1164/sonar-scanner-msbuild-4.1.1.1164-netcoreapp2.0.zip
- unzip scanner.zip
- chmod +x sonar-scanner-3.1.0.1141/bin/sonar-scanner
script:
- dotnet SonarScanner.MSBuild.dll begin /k:"acm-statistics-abp" /d:sonar.login=$SONAR_TOKEN /d:sonar.organization=liu233w-github /d:sonar.host.url=https://sonarcloud.io
- dotnet build
- dotnet SonarScanner.MSBuild.dll end /d:sonar.login=$SONAR_TOKEN

请将代码中的 project-key、organization-key 替换成自己的,然后在Travis设置里面的环境变量里加上 SONAR_TOKEN=”在 SonarCloud 中的 Token” 即可。

这个配置文件里面会下载特定版本的sonar-scanner-msbuild并解压运行,注意里面的那句 chmod +x sonar-scanner-3.1.0.1141/bin/sonar-scanner,如果不加上的话dotnet core会抛出一个System.ComponentModel.Win32Exception,内容是Native error= Access denied,非常的迷,搞得我还以为这个版本还没有完全跨平台。

这段配置文件来自我的开源项目 acm-statistics-abp,下面是完整版的配置文件,分离了测试代码和 SonarCloud 分析代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
notifications:
email:
on_success: never
on_failure: always

language: csharp
solution: AcmStatisticsAbp.sln

mono: none
dotnet: 2.0.0
dist: trusty

stages:
- name: test
- name: deploy
if: tag =~ ^v
- name: sonar

matrix:
include:
- env: NAME=Test
stage: test
script:
- cd test/AcmStatisticsAbp.Tests/
- dotnet test

- env: NAME=Sonar-Analysis
stage: sonar
addons:
sonarcloud:
organization: "liu233w-github"
token: $SONAR_TOKEN
cache:
directories:
- $HOME/.sonar/cache
- $HOME/.m2
install:
- curl -o scanner.zip -L https://github.com/SonarSource/sonar-scanner-msbuild/releases/download/4.1.1.1164/sonar-scanner-msbuild-4.1.1.1164-netcoreapp2.0.zip
- unzip scanner.zip
- chmod +x sonar-scanner-3.1.0.1141/bin/sonar-scanner
script:
- dotnet SonarScanner.MSBuild.dll begin /k:"acm-statistics-abp" /d:sonar.login=$SONAR_TOKEN /d:sonar.organization=liu233w-github /d:sonar.exclusions=**/wwwroot/**/* /d:sonar.host.url=https://sonarcloud.io
- dotnet build
- dotnet SonarScanner.MSBuild.dll end /d:sonar.login=$SONAR_TOKEN

本作品采用 署名-相同方式共享 4.0 国际 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 “不科学的科学君” (Liu233w) 与博客链接: https://liu233w.github.io ,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系

加载评论框需要翻墙