转载自:https://cloud.tencent.com/developer/article/1010612

1、SonarQube 介绍

SonarQube 是一个用于管理源代码质量开放平台,它可以从多个维度检测代码质量,可以快速的定位代码中潜在的或者明显的 Bug、错误。它支持包括 Java、Python、Php、C/C++、C#、HTML、JavaScript、PL/SQL、Objective C 等二十多种编程语言的代码质量管理与检测。可作为我们日常开发中检测代码质量的重要工具。

2、环境、软件准备

本次演示环境,我是在本地机器 Mac 上操作,以下是安装的软件及版本:

  1. SonarQube:version 6.5
  2. Jdk:version 1.8.0_91
  3. Maven:version 3.3.9
  4. Mysql: version 5.7.15

注意:下边我们要演示 Maven 项目如何使用 SonarQube 分析,所以需要先安装 Maven、Jdk,SonarQube 安装我们使用 Mysql 作为数据存储,所以需要先安装 Mysql,这里 Maven、Jdk、Mysql 的安装忽略。

3、SonarQube 安装

SonarQube 安装很简单,只需去官网下载最新版 zip 安装包到本地,解压执行即可。我解压到本地后的目录为/Applications/soft/sonarqube-6.5,解压目录结构如下:

这里简单说下每个目录作用:

  • bin 用来启动 SonarQube 服务,这里已经提供好了不同系统启动 | 停止脚本了,目前提供了 linux-x86-32、linux-x86-64、macosx-universal-64、windows-x86-32、windows-x86-64
  • conf 用来存放配置文件,若需要修改配置,修改 sonar.properties 文件即可。
  • data 用来存放数据,SonarQube默认使用 h2 数据库存储,同时支持其他如Mysql、Orace、Mssql、Postgresql数据库存储。
  • extensions 用来存放插件 jar 包,以后我们需要安装插件就放在这里。
  • lib 用来存放各种所依赖的 jar 包,包括上边各数据库驱动包 (默认已提供一个版本,如果版本不匹配,则在这里手动更新下)。
  • logs 用来存放各日志信息
  • web 用来提供 SonarQube web 网页服务。

本机 Mac 环境启动 | 停止 | 重启 | 查看状态 SonarQube 服务命令:<install_dir>/bin/macosx-universal-64/sonar.sh start | stop | restart | status。成功启动后,访问本地 http://localhost:9000,SonarQube 初始管理员账号为 admin,默认密码为 admin,登录后可修改密码。

SonarQube 默认服务端口为 9000,默认数据库为 h2,这些都是可以修改配置的,我们只需要修改<install_dir>/conf/sonar.properties文件即可。以修改配置 Mysql 数据库为例:

1、修改 sonar.properties
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false 2、本地 Mysql 创建数据库
CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci; 3、本地 Mysql 创建用户并分配权限
CREATE USER 'sonar' IDENTIFIED BY 'sonar';
GRANT ALL PRIVILEGES ON *.* TO 'sonar'@'%' IDENTIFIED BY 'sonar' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar' WITH GRANT OPTION;
FLUSH PRIVILEGES;

修改完成后,重启服务即可,我们会发现SonarQube已经帮我们在本地 Mysql 数据库 sonar 中创建好了所需各表。

4、Plugins 插件安装

SonarQube 插件安装非常简单,同时 官网插件库 提供了很多实用的插件供大家下载使用。SonarQube已经默认给我们安装了一些很常用的插件,我们可以通过admin登录,点击 配置 -> 系统 -> 更新中心 -> Installed 查看。 这里我们演示安装两个很实用的插件,一个是 Chinese Pack(SonarQube的汉化包),一个是 Checkstyle(检测代码风格)。

4.1 Chinese Pack 插件安装

SonarQube 网页的汉化包,安装完该插件后,Web 页面大部分都翻译成中文了,是不是一下子就简介明了啦!首先下载插件 sonar-l10n-zh,源码托管在 github 上,我们需要先 clone 到本地,执行 maven 编译得到 jar 包,然后复制到sonarQube插件目录,最后重启服务即可安装完成。 (注意:README上的兼容列表,我本地 SonarQube 版本6.5,所以下载插件对应版本是1.17。)

git clone https://github.com/SonarQubeCommunity/sonar-l10n-zh.git
cd sonar-l10n-zh
mvn install
cp target/sonar-l10n-zh-plugin-1.17-SNAPSHOT.jar <install_dir>/extensions/plugins
<install_dir>/bin/macosx-universal-64/sonar.sh restart

4.2 Checkstyle 插件安装

上边 Chinese Pack 插件安装时通过直接将 jar 包放到插件目录完成安装,我们也可以在 SonarQube 网页上直接点击安装。admin 登录,点击 配置 -> 系统 -> 更新中心 -> Available -> Search,输入 CheckStyle,在搜素结果中找到 CheckStyle 插件点击 Install,等待下载完成后,按照页面提示点击 Restart 自动重启服务即可完成安装。

admin登录,点击 配置 -> 系统 -> 更新中心 -> Installed 列表中可以看到我们刚刚安装的两个插件了。

SonarQube 支持分析的语言有很多,像Java、Python、Php、C/C++、C#、HTML、JavaScript、PL/SQL、Objective C等20+语言,当我们需要支持分析什么语言时,只需要去插件中心安装对应语言的插件即可,非常方便,可扩展性强。

5、使用 SonarQube 分析 Maven 项目

下面我们以一个 Java Maven 项目 mavenDemo 为例,看下如何配置,以及 SonarQube 分析结果查看。注意:这里有个兼容性选择问题,如果 SonarQube >= 4.5,那么 maven-sonar-plugin >= 2.7,如果 SonarQube < 4.5,那么 maven-sonar-plugin = 2.6;如果 Maven >= 3.0,那么maven-sonar-plugin >= 3.1,如果 Maven < 3.0,那么 maven-sonar-plugin = 3.0.2。

首先,我们需要配置 Maven 的 setting.xml文件,增加 sonarQube 配置。

<settings>
<pluginGroups>
<pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
</pluginGroups>
<profiles>
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<!-- 配置 Sonar Host地址,默认:http://localhost:9000 -->
<sonar.host.url>
http://myserver:9000
</sonar.host.url>
</properties>
</profile>
</profiles>
</settings>

然后就可以在我们 Maven 工程目录执行 mvn clean verify sonar:sonarmvn clean install sonar:sonar

如果我们想指定使用某个版本的 sonar-maven-plugin 插件,比如 3.3.0.603 版本,可以有两种方式:

一、修改 pom.xml 文件

<build>
<plugins>
<plugin>
<groupId>org.sonarsource.scanner.maven</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>3.3.0.603</version>
</plugin>
</plugins>
</build> 二、使用 mvn 命令指定 mvn clean install org.sonarsource.scanner.maven:sonar-maven-plugin:3.3.0.603:sonar

执行完毕之后,可以去 web页面查看分析结果。

这里我们只演示了一个简单的 Maven 项目使用 SonarQube 分析代码质量,SonarQube 功能还有很多,像代码规则、质量配置、质量阈值配置、项目权限配置等等,有时间在慢慢研究下吧。

参考资料

SonarQube 的安装、配置及 Maven 项目的使用的更多相关文章

  1. 工具IDEA 配置springboot+maven项目

    工具IDEA 配置springboot+maven项目 首先安装IDEA,至于怎么安装就不介绍了.. 第一步 配置maven环境 首先安装maven,先在网上下载一个maven包.在IDEA的sett ...

  2. maven笔记(maven使用与安装,eclipse中maven的配置,maven项目的创建)

    一.初识maven 1.maven是什么? 他是一个项目管理器,配置好pom配置文件后,maven会管理项目的依赖文件等,当项目用到外部jar包时,maven帮助我们去网上下载并打包发到Tomcat中 ...

  3. 1.Maven+SpringMVC+Eclipse软件安装配置,Maven报插件错误,Eclipse总是卡死的解决办法,导入一个maven工程后 一直显示importing maven project

     使用Maven+SpringMVC+Eclipse软件安装配置过程中的问题: 1.Eclipse总是卡死的解决办法: 一:内存不足所以会卡死,配置一下eclipse.ini修改这几个值就好了-X ...

  4. Maven教程2(Eclipse配置及maven项目)

    Maven教程1(介绍安装和配置) Eclipse中配置maven 1.Eclipse中默认集成的有Maven 可以使用默认的,本地仓库在当前用户下的.m2文件夹下. 2.配置我们自己安装的maven ...

  5. Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】

    一.前言 Jenkins作为CI.CD的先驱者,虽然现在的风头没有Gitlab强了,但是还是老当益壮,很多中小公司还是使用比较广泛的.最近小编经历了一次Jenkins发包,感觉还不错,所以自己学习了一 ...

  6. 安装配置docker&maven环境

     原文视频:(https://blog.sechelper.com/20220919/code-review/docker-maven-install-guid/) Docker是什么 Docker ...

  7. intellij idea maven配置及maven项目创建

    1. 下载Maven 官方地址:http://maven.apache.org/download.cgi 解压并新建一个本地仓库文件夹 2.配置maven环境变量 3.配置配置本地仓库路径 4.配置阿 ...

  8. Django-下载安装-配置-创建django项目-三板斧简单使用

    目录 Django 简介 使用 django 的注意事项 计算机名不能有中文 Django版本问题 django下载安装 在命令行下载安装 在pycharm图形界面下载安装 检验是否安装成功 创建Dj ...

  9. MyEclipse2015创建配置Web+Maven项目

    首先我的MyEclipse版本是2015 stable 2.0,在MyEclipse中创建Maven项目通常有两种常见的方式,它们分别是: New Maven Project  New Web Pro ...

随机推荐

  1. 基于ABP实现DDD--DDD相关概念

      什么是DDD呢?领域驱动设计[DDD]是一种针对复杂需求的软件开发方法.将软件实现与不断发展的模型联系起来,专注于核心领域逻辑,而不是基础设施细节.DDD适用于复杂领域和大规模应用,而不是简单的C ...

  2. 【Codeforces1706A】 Another String Minimization Problem

    官方标签 贪心.字符串 题目描述 输入 输出 样例输入 6 4 5 1 1 3 1 1 5 2 4 1 1 1 1 1 2 4 1 3 2 7 7 5 4 5 5 5 3 5 样例输出 ABABA B ...

  3. 图像处理——相位恢复(GS,TIE,改进型角谱迭代法)

    利用GS,TIE,改进型角谱迭代算法进行相位恢复 角谱传播理论 角谱传播理论可以翻阅傅里叶光学的书,就能找到定量分析的计算公式,可以分析某个平面的角谱垂直传播到另外一个平面的角谱,得到其振幅与相位信息 ...

  4. 第十五天python3 文件IO(一)

    一.文件打开 open(path,flag[,encoding][,errors]) 参数说明: path:要打开文件的路径 flag:打开方式( r:以只读的方式打开文件,文件的描述符放在文件开头 ...

  5. 2022-7-12 第五组 pan小堂 js

    JavaScript Switch 语句 (熟悉掌握) 请使用 switch 语句来选择多个需被执行的代码块之一. 语法: switch(表达式){ case n: 代码块 break; case n ...

  6. 使用github action发布hexo博客到云服务器

    目录 搭建Hexo博客 安装主题hexo-theme-bamboo 修改博客名称等信息 添加github action发布 1. 在github中创建自己的博客仓库 2. 设置Secrets 3. 在 ...

  7. git diff与linux diff的输出格式之unified format

    前言 前面有一篇文章<一个有些意思的项目--文件夹对比工具(一)>,里面简单讲了下diff算法之--Myers算法. 既然是算法,就会有实现,比如git diff中有Myers的实现,gi ...

  8. gitpod.io,云端开发调试工具。

    gitpod,一款在线开发调试工具,使用它你可以在网页上直接开发软件项目了. 比如你的项目仓库在github上,你可以直接在网址的前面添加gitpod.io/#,然后回车就能在网页上使用vscode打 ...

  9. 蔚来杯2022牛客暑期多校训练营7 CFGJ

    比赛链接 C 题解 方法一 知识点:思维. 先统计没有出现的数,每个都可以随便放,所以作为补位用的. 将原数组左移一位作为预定的答案数组,然后开始检查.如果和原数组一样,则用补位数字填充,如果不一样就 ...

  10. java学习第一天.day06

    方法 方法的优点 1. 使程序变得更简短而清晰. 2. 有利于程序维护. 3. 可以提高程序开发的效率. 4. 提高了代码的重用性. static的作用 static在方法中如果没有添加就只能用对象调 ...