SonarQube 的安装和本地运行

SonarQube 是一个开源的平台,是由 SonarSource 进行开发的,并且用于在项目中程序检查项目的代码质量和进行自动查看分析结果,并且希望能够通过这种方式找到代码中可能存在的质量问题和缺陷。

X86-64 安装和运行

请访问 Download | SonarQube 页面来下载 SonarQube 后运行。

下载

你可以选择社区版本来进行下载后安装运行。

解压和运行

下载的版本是一个 Zip 文件,你可以使用任何解压软件将下载的 Zip 包解压到你的计算机上。

然后进入解压后的软件文件夹运行服务。

针对我们的示例,我们将解压后的文件夹重命名为 sonarqube,同时解压的文件夹路径为:C:\Dkits\sonarqube

进入解压后的文件夹中找到 StartNTService.bat 文件,在我们的示例中,这个文件位于文件夹 C:\Dkits\sonarqube\bin\windows-x86-64 中

sonarqube-install-01

如果你希望将 sonarqube 作为 Windows 的服务来进行安装的话,你可以选择直接运行 StartNTService.bat 文件。

我个人比较倾向使用 StartNTService.bat 文件来运行,以便于节约系统资源。

在 Windows 的系统中,你可以通过命令行工具来看到相关的服务被启动后运行了:

初始化登录和修改密码

SonarQube UI 的默认访问端口为 9000,所以你服务器的访问地址为: http://localhost:9000/.

默认的用户名和密码为:admin / admin.

在第一次通过 UI 登录访问系统的时候,你需要被要求修改你的用户密码。

设置 Token

你需要使用访问 Token 来将你的编译结果推送到 SonarQube 服务器上。

使用下面的访问路径 User > My Account > Security 来进行访问。

通过上面的按钮能够让你创建一个新的 token。

需要注意的是,创建的 Token 只会出现一次,因此你需要拷贝这个 Token。

SonarQube 不支持在 Windows PS (PowerShell) 上运行。

请不要尝试在 PS 上运行 sonar 的命令,因为你将会得到运行错误的提示信息。

例如,如果你运行命令:

mvn sonar:sonar -Dsonar.login=245a36074765e8d1b071cec32f1c42e4b86db291

你将会得到:

[ERROR] Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.9.1.2184:sonar (default-cli) on project ShiftService: Not authorized. Analyzing this project requires authentication. Please provide a user token in s
onar.login or other credentials in sonar.login and sonar.password. -> [Help 1]

上面的错误提示,尽管收取的密码是正确的。

更新 maven pom.xml 文件

针对你的 Maven pom.xml 文件,你需要进行一些修改,以便于你能够通过 maven 来运行 sonar 插件和命令。

第 1 步:添加插件

            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>${jacoco.version}</version>
                <executions>
                    <execution>
                        <id>jacoco-initialize</id>
                        <goals>
                            <goal>prepare-agent</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>jacoco-site</id>
                        <phase>package</phase>
                        <goals>
                            <goal>report</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

第 2 步:添加依赖 dependency

        <dependency>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>0.8.6</version>
        </dependency>

第 2 步:添加属性 properties

        <sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
        <sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>
        <sonar.jacoco.reportPath>${project.basedir}/../target/jacoco.exec</sonar.jacoco.reportPath>
        <sonar.language>java</sonar.language>

运行命令

在命令行工具中运行下面的命令:

mvn clean install
mvn sonar:sonar -Dsonar.login=245a36074765e8d1b071cec32f1c42e4b86db291

需要注意的是,mvn clean install 需要在命令 mvn sonar:sonar 之前运行,但是并不要求每次都运行,在你清理掉缓存或者你希望重新载入数据的话,可以运行一次。

如果所有的配置都正确的话,你将会在屏幕中看到 SUCCESS 的提示

检查结果

在你的本地系统中,你应该可以通过 UI 界面看到结果并且请按照提示对代码进行一些必要的调整。

上图显示了运行的结果。