自动化:使用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的开篇就结束了。

发布了110 篇原创文章 · 获赞 36 · 访问量 31万+

猜你喜欢

转载自blog.csdn.net/zhaobw831/article/details/98377997