如何在AWS Linux 2系统中安装ASP.NET Core扫描器?
前提条件
- AWS Linux 2实例已配置完成,拥有sudo权限
- 已安装对应版本的.NET Core SDK(适配你的ASP.NET Core项目)
- 可正常访问SonarQube服务器
安装步骤
安装.NET Core SDK(未安装时执行)
以安装.NET 6 SDK为例,执行以下命令:sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm sudo yum install -y dotnet-sdk-6.0验证安装结果:
dotnet --version下载并配置SonarScanner for .NET
- 下载指定版本的扫描器(以5.17.2为例):
wget https://github.com/SonarSource/sonar-scanner-msbuild/releases/download/5.17.2/sonar-scanner-msbuild-5.17.2-netcoreapp3.1.zip - 解压到系统目录:
sudo unzip sonar-scanner-msbuild-5.17.2-netcoreapp3.1.zip -d /opt/sonar-scanner - 添加环境变量,编辑
~/.bashrc文件:export PATH="$PATH:/opt/sonar-scanner" - 使环境变量立即生效:
source ~/.bashrc
- 下载指定版本的扫描器(以5.17.2为例):
配置SonarQube连接信息
在项目根目录创建sonar-project.properties文件,填入以下内容(替换为你的实际信息):sonar.projectKey=你的项目唯一标识 sonar.projectName=你的项目名称 sonar.projectVersion=1.0 sonar.sources=. sonar.host.url=http://你的SonarQube服务器地址:9000 sonar.login=你的SonarQube访问令牌执行项目扫描
在项目根目录依次运行命令:dotnet sonarscanner begin /k:"你的项目唯一标识" /d:sonar.host.url="http://你的SonarQube服务器地址:9000" /d:sonar.login="你的SonarQube访问令牌" dotnet build dotnet sonarscanner end /d:sonar.login="你的SonarQube访问令牌"
完整日志内容
开始:运行代码分析
任务 : 运行代码分析
描述 : 运行扫描器并将结果上传至SonarQube服务器。
版本 : 5.17.2
作者 : sonarsource
帮助信息 : 版本:5.17.2。Maven和Gradle项目无需此任务,扫描器应作为构建的一部分运行。D:\a_tasks\SonarQubePrepare_15b84ca1-b62f-4a2a-a403-89b77a063157\5.17.2\classic-sonar-scanner-msbuild\SonarScanner.MSBuild.exe end
SonarScanner for MSBuild 5.14
使用MSBuild扫描器的.NET Framework版本
后处理已启动。
正在调用TFS处理器可执行文件...
尝试定位CodeCoverage.exe工具...
尝试通过安装配置定位CodeCoverage.exe工具...
代码覆盖率命令行工具:C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Team Tools\Dynamic Code Coverage Tools\CodeCoverage.exe
从TFS获取代码覆盖率报告信息...
尝试定位测试结果(.trx)文件...
在以下位置查找TRX文件:D:\a\1\TestResults
未找到测试结果文件
在预期位置未找到任何二进制覆盖率文件。
退而尝试在代理临时目录中定位覆盖率文件。
在D:\a_temp中搜索覆盖率文件
在代理临时目录中未找到覆盖率文件。
覆盖率报告转换成功完成。
TFS处理器已完成
正在调用SonarScanner CLI...
##[error]错误:发生JNI错误,请检查您的安装并重试
问题排查方向
JNI错误处理:该错误由Java运行时环境异常导致,SonarScanner CLI依赖JRE/JDK,需确认:
- 系统已安装符合要求的JDK(推荐11或17版本)
JAVA_HOME环境变量配置正确- Java执行路径已加入系统
PATH
测试覆盖率文件缺失:日志显示未找到.trx测试结果和覆盖率文件,若需收集覆盖率数据,需确保:
- 项目已配置并成功运行单元测试,生成.trx格式的测试结果文件
- 测试任务已启用代码覆盖率收集,生成对应的二进制覆盖率文件
扫描器版本兼容性:日志中SonarScanner for MSBuild版本为5.14,而任务版本为5.17.2,版本不一致可能引发兼容性问题,建议使用统一版本的扫描器工具。
内容的提问来源于stack exchange,提问作者Mihir Kulkarni

