代码质量检测(SonarQube)整合中文版+阿里P3C
代码质量检测(SonarQube)整合中文版+阿里P3C
简介
SonarQube是一种自动代码审查工具,用于检测代码中的错误,漏洞和代码异味。它可以与您现有的工作流程集成,以便在项目分支和拉取请求之间进行连续的代码检查。
连续代码检查,sonar可以单独使用Maven
、Gradle
推送代码检查,当然也可以在ci引擎进行代码自动检查,如: Jenkins
、Git
。
服务端
安装
为了快速启动sonarqube
实例,我们采用docker的方式。
sonarqube
默认为英文版的,检查规则为自带的,我们这里采用中文汉化,另外java
语言加入阿里p3c规则。
使用git克隆项目:
git clone https://github.com/purgeteam/sonarqube-start
cd docker-start
sonar-docker-start.yml
模板如下:
# 汉化版+阿里p3c验证
version: "2"
services:
sonarqube:
image: sonarqube
ports:
- "9000:9000"
networks:
- sonarnet
environment:
- sonar.jdbc.url=jdbc:postgresql://db:5432/sonar
volumes:
- sonarqube_conf:/opt/sonarqube/conf
- sonarqube_data:/opt/sonarqube/data
- sonarqube_extensions:/opt/sonarqube/extensions
- sonarqube_bundled-plugins:/opt/sonarqube/lib/bundled-plugins
- ./plugin/rhinoceros/sonar-pmd-plugin-3.2.0-SNAPSHOT.jar:/opt/sonarqube/extensions/plugins/sonar-pmd-plugin-3.2.0-SNAPSHOT.jar
- ./plugin/sonar-l10n-zh-plugin-1.16.jar:/opt/sonarqube/extensions/plugins/sonar-l10n-zh-plugin-1.16.jar
db:
image: postgres
ports:
- "5432:5432"
networks:
- sonarnet
environment:
- POSTGRES_USER=sonar
- POSTGRES_PASSWORD=sonar
volumes:
- ./postgres/postgresql:/var/lib/postgresql
- ./postgres/postgresql_data:/var/lib/postgresql/data
networks:
sonarnet:
driver: bridge
volumes:
sonarqube_conf:
sonarqube_data:
sonarqube_extensions:
sonarqube_bundled-plugins:
postgresql:
postgresql_data:
使用docker-compose启动
docker-compose -d sonar-docker-start.yml up
默认会吧插件挂载进容器内部。
启动ok,查看控制台进行访问localhost:9000
,默认账号密码:admin/admin
。
默认规则配置
虽然已经集成了阿里P3C,但是使用的还是默认规则,这里我们需要设置为指定规则。
以admin账号登陆
打开 质量配置profiles
页,点击右上方的创建
按钮,创建 p3c profiles
首次创建会跳转到代码规则配置页面,刚新建的 profile 是没有激活任何规则的,需要手动激活
我们需要为刚创建的 p3c profile 激活 p3c 规则,点击【激活更多规则】
跳转到激活页面,搜索p3c,如图,都是以[p3c]
开头的规则。
批量修改->活动 p3c -> 应用 -> 成功
绑定规则成功后基本完成,我们返回质量配置
,在java
选择刚设置的p3c
设置为默认。
配置阿里P3C已经完成。
Maven代码检查
sonarqube
可以使用多种方式进行代码上传检查。
我们使用简单的Maven
触发代码检查。
添加插件
在项目pom
文件里添加sonar-maven-plugin
插件。
<build>
<plugins>
<plugin>
<groupId>org.sonarsource.scanner.maven</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>3.6.0.1398</version>
</plugin>
</plugins>
</build>
服务器相关配置:
需要将<sonar.host.url>
修改为之前搭建的sonarqube
服务地址。
<!-- SonarQube代码质量检测 -->
<profiles>
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<sonar.host.url>http://127.0.0.1:9000/</sonar.host.url>
</properties>
</profile>
</profiles>
触发检查
pom
配置完成,先将代码进行构建使用Maven
package
命令。
完成构建执行mvn sonar:sonar
命令,也可以使用idea
maven
可视化界面进行操作。
运行完成。
查看sonar报告
打开sonar
服务页面127.0.0.1:9000
可以看到上传的项目列表,选择项目查看分析结果,项目健康状态等信息。
问题里可以看到相关的代码问题列表,打开单个则查看详情。
总结
当然我们只是使用了简单的Maven
方式推送至SonarQube
服务,当然也可以在ci引擎进行代码自动检查,如: Jenkins
、Git
,自动化检查,有兴趣的小伙伴也可以了解下其他功能,SonarQube官网。
示例代码地址: sonarqube-start
作者GitHub:
Purgeyao 欢迎关注
代码质量检测(SonarQube)整合中文版+阿里P3C的更多相关文章
- 代码质量检测-Sonar
一. Sonar简介 sonarqube系统是一个代码质量检测工具 由以下四个组件组成(https://docs.sonarqube.org/display/SONAR/Architecture+an ...
- Docker 搭建代码质量检测平台 SonarQube
开始搭建 1.获取 postgresql 的镜像 $ docker pull postgres 2.启动 postgresql $ docker run --name db -e POSTGRES_U ...
- sonar的安装与代码质量检测实例
说明:sonar依赖数据库. mysql优化 1.笔者使用的是mysql数据库.首先对mysql做简单的优化配置. [root@localhost bin]# cat /etc/my.cnf [mys ...
- jenkins+sonarqube进行代码质量检测
JavaNeverGiveUp教程篇 用jenkins+sonarqube去检查代码是非常方便的,它能检查出代码中可能存在的一些问题,比如io流未关闭.空指针异常.死循环.代码不规范等问题. 1. 搭 ...
- 基于docker-compose搭建sonarqube代码质量检测平台
一.需求 在我们开发的过程中,难免有时候代码写的不规范,或存在一些静态的bug问题,这个时候一个良好的代码检查工具就很有必要,而sonarqube正好可以满足整个要求. 二. docker-compo ...
- 推荐个Java代码质量检测的利器 —— FindBugs
一.下载 插件的下载地址(sourceforge):FindBugs-Eclipse插件 二.安装 Eclipse插件的安装,就不多说了. 三.使用 1.找一个Project,选中它(也可以针对某个P ...
- PHP 代码质量检测工具的安装与使用
代码统计工具 PHPLOC安装:wget https://phar.phpunit.de/phploc.phar chmod +x phploc.phar sudo mv phploc.phar /u ...
- 代码质量:SonarQube
SonarQube SonarQube的安装 jenkins(十四):Jenkins和sonarqube集成 https://www.cnblogs.com/sunyllove/p/9895373.h ...
- 从0到1一步步搭建代码质量检测系统~iOS
演示环境:Mac OSX10.12.2 Xcode8 先瞄一眼最终成果- 1.JDK,DBMS(演示环境使用Mysql) 2.创建sonar数据库和用户 mysql -u root -pCREATE ...
随机推荐
- L1063 能量项链
1 #include <bits/stdc++.h> using namespace std; #define rep(i, a, b) for (int i = a; i <= b ...
- 同时运行多个 tomcat 修改端口
修改 tomcat 配置文件,路径: tomcat_home/conf/server.xml 1.HTTP端口,默认8080,如下改为8081 <Connector connectionTim ...
- 【转载】C# 中的委托和事件(详解)
<div class="postbody"> <div id="cnblogs_post_body" class="blogpost ...
- sharding demo 读写分离 U (分库分表 & 不分库只分表)
application-sharding.yml sharding: jdbc: datasource: names: ds0,ds1,dsx,dsy ds0: type: com.zaxxer.hi ...
- 记一次IDEA 打包环境JDK版本和生产环境JDK版本不一致引发的血案
问题描述: 本地开发环境idea中能正常运行项目,而idea打war包到Linux服务器的Tomcat下却不能正常运行,报如下错误: 09-Aug-2019 08:56:06.878 SEVERE [ ...
- 12、面向对象的思想(OOP)
面向对象与面向过程 1.都是解决问题的思维方式,都是代码的组织的方式: 2.解决简单的问题可以使用面向过程: 3.解决复杂的问题建议使用面向对象,微观处理依旧会使用面向过程. 对象的进化史(数据管理的 ...
- html的一些基本属性介绍
一.html的属性类型: 1.常见标签属性: a.<h1>:align对其方式 例如:<h1 align="right"> hhhhh</ ...
- android ——Tablayout
Tabs make it easy to explore and switch between different views. 通过TabLayout可以在一个活动中通过滑动或者点击切换到不同的页面 ...
- 直击根源:微信小程序中web-view再次刷新后页面需要退两次
背景 在上一章(直击根源:vue项目微信小程序页面跳转web-view不刷新)解决了vue在小程序回退不刷新的问题之后,会引出了一个刷新的页面需要点击返回两次才能返回上一个页面 问题描述 在A页面从B ...
- 建立apk定时自动打包系统第三篇——代码自动更新、APP自动打包系统
我们的思路是每天下班后团队各成员在指定的时间(例如下午18:30)之前把各自的代码上传到SVN,然后服务器在指定的时间(例如下午18:30)更新代码.执行ant 打包命令.最后将apk包存放在指定目录 ...