sonarqube+sonar-scanner
代码质量测试
代码质量七宗罪:
- 编码规范:是否遵守了编码规范,遵循了最佳实践。
- 潜在的BUG:可能在最坏情况下出现问题的代码,以及存在安全漏洞的代码
- 文档和注释:过少(缺少必要信息)、过多(没有信息量)、过时的文档或注释。
- 重复代码:违反了Don't Repeat Yourself(不要重复你自己)原则。
- 复杂度:代码结构太复杂,难以理解、测试和维护。
- 测试覆盖率:编写单元测试,特别是针对复杂代码的测试覆盖是否足够。
- 设计与架构:是否高内聚、低耦合,依赖最少。
代码测试工具sonarqube
官方网站https://www.sonarqube.org/
官网文档https://docs.sonarqube.org/6.7.7/
下载前一定要确定硬软件的要求
https://docs.sonarqube.org/6.7.7/requirements/requirements/
下载社区版
https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.7.zip
下载SonarScanner
SonarScanner 是在构建系统没有特定扫描程序时使用的扫描程序
https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/
下载包一定要确实下环境
下载包一定要确实下环境
下载包一定要确实下环境
https://docs.sonarqube.org/display/SONARQUBE67/Requirements
unzip sonarqube-6.7.7.zip
vim sonarqube-6.7.7/conf/sonar.properties
[root@sonar ~]# grep -Ev "^#|^$" sonarqube-6.7.7/conf/sonar.properties
sonar.jdbc.username=sonar
sonar.jdbc.password=1
sonar.jdbc.url=jdbc:mysql://192.168.10.254:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
sonar.web.host=0.0.0.0
sonar.web.port=9000
create database sonar character set utf8 collate utf8_general_ci;
grant all on sonar.* to sonar@"192.168.10.%" identified by "sonar";
一定要创建一个普通用户来运行
useradd www
chown www.www -R /usr/local/src/sonarqube-6.7.7
su - www
cd /usr/local/src/sonarqube-6.7.7
./bin/linux-x86-64/sonar.sh start
tail -f logs/*.log
ss -tnl
用浏览器访问192.168.10.240:9000
默认登陆用户名密码admin
可以下载插件或更新插件
这是SonarQube的汉化包
https://github.com/SonarQubeCommunity/sonar-l10n-zh
安装完成后重启
创建一个示例手动测试下
mkdir -p /opt/python/src
cd /opt/python
vim sonar-project.properties
# Required metadata
sonar.projectKey=python-demo
sonar.projectName=python-demo
sonar.projectVersion=v1.0
# Comma-separated paths to directories with sources(required)
sonar.sources=src
#Language
sonar.language=py
# Encoding of the source files
sonar.sourceEncoding=UTF-8
创建一个错误代码
vim src/test.py
#!/usr/bin/env python
#coding:utf-8
#
def test1():
print"test1"
def test2():
print("test2")
test1()
pwd
/opt/python
执行命令
/usr/local/sonar-scanner/bin/sonar-scanner
打开浏览器
http://192.168.10.240:9000/dashboard?id=python-demo
jenkins安装插件重启
jenkins设置sonar-scanner
添加sonar服务器
新建一个python-demo
vim sonar-project.properties
# Required metadata
sonar.projectKey=python-demo
sonar.projectName=python-demo
sonar.projectVersion=v1.0
# Comma-separated paths to directories with sources(required)
sonar.sources=./
#Language
sonar.language=py
# Encoding of the source files
sonar.sourceEncoding=UTF-8
gitlab服务器添加一个项目及代码
jenkins关联到sonarscanner
或者手动指定
保存后构建一次
创建一个错误python的代码上传到gitlab服务器上,然后使用jenkins构建一次,通过sonarscanner检查代码是否有BUG
打开浏览器查看
使用shell脚本来运行
http://dubbo.apache.org/en-us/blog/download.html
http://mirrors.tuna.tsinghua.edu.cn/apache/incubator/dubbo/2.6.6/apache-dubbo-incubating-2.6.6-source-release.zip
git clone http://192.168.10.254/web233/web2.git
cd web2/
vim sonar-project.properties
sonar.projectKey=python-demo
sonar.projectName=python-demo
sonar.projectVersion=v1.0
sonar.sources=./
sonar.language=py
sonar.sourceEncoding=UTF-8
git ./*
git add ./*
git commit -m "v3"
git push
mkdir /data/git/projectname -pv
vim python-demo.sh
#!/bin/bash
cd /data/git/projectname/ && rm -rf ./web2 && git clone git@192.168.10.254:web233/web2.git
cd web2 && /usr/local/sonar-scanner/bin/sonar-scanner
chmod a+x python-demo.sh
jenkins新建一个项目测试下