使用SonarQube搭建代码质量管理平台
SonarQube简介
SonarQube是一种自动代码审查工具,用于检测代码中的错误
,漏洞
及代码气味
(
code smells,这个翻译有点奇怪?),它可以与现有工作流集成(比如jenkins),以便在项目分支和拉取请求中实现持续的代码检查 。
开始搭建吧
本文使用docker搭建,如果直接在宿主机上搭建,需要jdk
环境,
- 创建一个PostgreSQL
docker run --name pg.sq -e POSTGRES_USER=sonar -e POSTGRES_PASSWORD=sonar -d postgres
- 创建SonarQube平台
docker run --name sq --link pg.sq -e sonar.jdbc.username=sonar -e sonar.jdbc.password=sonar -e sonar.jdbc.url=jdbc:postgresql://pg.sq:5432/sonar -p 9000:9000 -d sonarqube
待容器安装完成后,本机打开:http://127.0.0.1:9000/访问SonarQube服务
可以使用默认账号/密码登录:admin/admin。
然后我们可以在Projects
功能菜单下创建一个项目,本文创建的项目为SonarQubeDemo
:
使用SonarScanner
下载SonarScanner
我们还需要下载 SonarScanner for MSBuild
本文使用的是.NET Core/C#代码,所以下载的是.NET平台下SonarScanner
配置SonarQube.Analysis.xml
添加以下配置项
<Property Name="sonar.host.url">http://localhost:9000</Property>
<Property Name="sonar.login">admin</Property>
<Property Name="sonar.password">admin</Property>
然后执行以下命令
dotnet <path to SonarScanner.MSBuild.dll> begin /k:"project-key"
dotnet build <path to solution.sln>
dotnet <path to SonarScanner.MSBuild.dll> end
本示例源码为一个.NET Core/C# ConsoleApp,其中代码为:
using System;
namespace SonarQubeDemo
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}
查看SonarQube
我们来制造一些有问题的代码
我们来创建一个空引用的代码
using System;
namespace SonarQubeDemo
{
class Program
{
static void Main(string[] args)
{
User user = null;
Console.WriteLine(user.ID);
}
}
class User
{
public int ID { get; set; }
}
}
在执行完上文中SonarScanner
的命令后:
产生了一个bug,点击bug查看详细信息:
至此,SonarQube的开篇就结束了。