sonar

sonarqubesonar-scanner

sonarqube+sonar-scanner

代码质量测试
代码质量七宗罪:

  • 编码规范:是否遵守了编码规范,遵循了最佳实践。
  • 潜在的BUG:可能在最坏情况下出现问题的代码,以及存在安全漏洞的代码
  • 文档和注释:过少(缺少必要信息)、过多(没有信息量)、过时的文档或注释。
  • 重复代码:违反了Don't Repeat Yourself(不要重复你自己)原则。
  • 复杂度:代码结构太复杂,难以理解、测试和维护。
  • 测试覆盖率:编写单元测试,特别是针对复杂代码的测试覆盖是否足够。
  • 设计与架构:是否高内聚、低耦合,依赖最少。

代码测试工具sonarqube
官方网站https://www.sonarqube.org/
官网文档https://docs.sonarqube.org/6.7.7/
sonar
下载前一定要确定硬软件的要求
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
sonar

sonar
sonar

sonar
sonar

可以下载插件或更新插件
sonar

这是SonarQube的汉化包
sonar

https://github.com/SonarQubeCommunity/sonar-l10n-zh
安装完成后重启
sonar

sonar
sonar

创建一个示例手动测试下

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

sonar
sonarqube

jenkins安装插件重启
sonar

jenkins设置sonar-scanner
sonar

添加sonar服务器
sonar

新建一个python-demo
sonar

sonar
jenkins

sonar
jenkins

sonar
jenkins

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

sonar
jenkins
gitlab服务器添加一个项目及代码
sonar

jenkins关联到sonarscanner
sonar
或者手动指定
sonar

保存后构建一次

创建一个错误python的代码上传到gitlab服务器上,然后使用jenkins构建一次,通过sonarscanner检查代码是否有BUG
打开浏览器查看
sonar

使用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新建一个项目测试下
sonar

上一篇:有赞 GO 项目单测、集成、增量覆盖率统计与分析


下一篇:Jenkins+GitLab+SonnarQube搭建CI/CD全流程