sonar基本使用

1,sonar安装和配置

SonarQube是一个用于管理代码质量的开放平台,可以快速的定位代码中潜在的或者明显的错误。目前 支持java,C#,C/C++,Python,PL/SQL,Cobol,JavaScrip,Groovy等二十几种编程语言的代码质量管理与检 测。

官网:https://www.sonarqube.org/

1.1 安装包安装SonarQube

1)安装MySQL(已完成)高版本不支持mysql

2)安装SonarQube

在MySQL创建sonar数据库

下载sonar压缩包:

https://www.sonarqube.org/downloads/

解压sonar,并设置权限

yum install unzip
unzip sonarqube-6.7.4.zip 解压
mkdir /opt/sonar 创建目录
mv sonarqube-6.7.4/* /opt/sonar 移动文件
useradd sonar 创建sonar用户,必须sonar用于启动,否则报错
chown -R sonar. /opt/sonar 更改sonar目录及文件权限修改sonar配置文件

vi /opt/sonarqube-6.7.4/conf/sonar.properties

内容如下:

sonar.jdbc.username=root
sonar.jdbc.password=Root@123
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs= maxPerformance&useSSL=false

注意:sonar默认监听9000端口,如果9000端口被占用,需要更改。 启动sonar

cd /opt/sonarqube-6.7.4

su sonar ./bin/linux-x86-64/sonar.sh start 启动
su sonar ./bin/linux-x86-64/sonar.sh status 查看状态
su sonar ./bin/linux-x86-64/sonar.sh stop 停止

tail -f logs/sonar.logs 查看日志访问sonar http://192.168.66.101:9000

默认账户:admin/admin 创建token

2.2 Docker方式安装

注意:

经过测试,docker 默认拉取最新版的sonar报could not find java in ES_JAVA_HOME at /opt/java/openjdk/bin/java

推荐部署8.9.1-conmunity

CentOS7 安装 Docker

创建 bridge 网络并指定 IP 区间

创建自定义网络

docker network create --driver bridge --subnet 172.0.0.0/16 woniu_network

查看已存在网络

docker network ls

拉取镜像

docker pull postgres
docker pull sonarqube:8.9.1-conmunity

安装postgresql

# 创建日志目录
mkdir -p /home/docker/postgresql/logs # 创建数据目录
mkdir -p /home/docker/postgresql/data
sudo docker run -d -p 5432:5432 \
--name postgresql \
--restart=always \
--network woniu_network \
--ip 172.0.0.54 \
-v /home/docker/postgresql/data:/var/lib/postgresql/data \
-e POSTGRES_USER=woniu \
-e POSTGRES_PASSWORD=woniu123 \
--privileged postgres #添加权限

报错:cannot access '/docker-entrypoint-initdb.d/': Operation not permitted

解决办法:报错提示,权限不够。加上参数 --privileged 来增加权限

环境测试

# 在容器 postgre_sql 中开启一个交互模式的终端
docker exec -it postgre_sql /bin/bash # postgre_sql 登录
psql -U woniu -W #创建sonar数据库 create database sonar; ##如果不创建,后续sonarqube会报错

安装sonarqube

# 创建日志目录
mkdir -p /home/docker/sonarqube/logs # 创建数据目录
mkdir -p /home/docker/sonarqube/data # 创建插件目录
mkdir -p /home/docker/sonarqube/extensions

安装命令

sudo docker run -d -p 9000:9000 \
--name sonarqube \
--restart=always \
--network woniu_network \
--ip 172.0.0.59 \
-v /home/docker/sonarqube/extensions:/opt/sonarqube/extensions \
-v /home/docker/sonarqube/data:/opt/sonarqube/data \
-v /home/docker/sonarqube/logs:/opt/sonarqube/logs \
--link postgresql \
-e sonar.jdbc.url=jdbc:postgresql://postgresql:5432/sonar \
-e sonar.jdbc.username=woniu \
-e sonar.jdbc.password=woniu123 \
sonarqube:8.9.1-community

中文插件安装

注:汉化教程

直接通过sonarqube市场下载插件可能会不成功,这里教大家自己下载插件的方法;

首先到github下载适合自己版本的汉化包插件,项目首页各版本下载地址

docker命令将下载的插件放到插件映射路径的/home/docker/sonarqube/extensions/plugins,然后重启sonar

cd /home/docker/sonarqube/extensions
mkdir plugins

或者直接复制插件到sonar实例的/opt/sonarqube/extensions/plugins路径下

docker cp sonar-l10n-zh-plugin-8.9.jar ID://opt/sonarqube/extensions/plugins

查看日志 docker logs id

访问

http://localhost:9000 admin admin

2. jenkins配置sonar

安装SonarQube Scanner插件

添加SonarQube凭证(通过sonar生成令牌)

Jenkins进行SonarQube配置

Manage Jenkins->Configure System->SonarQube servers

Manage Jenkins->Global Tool Configuration

SonaQube关闭审查结果上传到SCM功能

3. Jenkins+SonarQube代码审查(2) - 实现代码审查

非流水线项目

项目风格为freestyle或者maven项目,在增加构建步骤选择sonar Scanner,添加脚本

# must be unique in a given SonarQube instance
sonar.projectKey=web_demo_freestyle
# this is the name and version displayed in theSonarQube UI. Was mandatory prior to SonarQube 6.1.
sonar.projectName=web_demo_freestyle
sonar.projectVersion=1.0 # Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
# This property is optional if sonar.modules is set.
sonar.sources=.
sonar.exclusions=**/test/**,**/target/** sonar.java.source=1.8
sonar.java.target=1.8 # Encoding of the source code. Default is default system encoding
sonar.sourceEncoding=UTF-8

执行构建,后访问sonar webui

流水线项目

区别在于,构建脚本在项目中,采用pipeline语法构建的。

在项目添加SonaQube代码审查(流水线项目)

1)项目根目录下,创建sonar-project.properties文件

2)修改Jenkinsfile,加入SonarQube代码审查阶段

pipeline { agent any

stages {
stage('拉取代码') { steps {
checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '68f2087f-a034-4d39-a9ff-1f776dd3dfa8', url: 'git@192.168.66.100:itheima_group/web_demo.git']]])
}
}
stage('编译构建') { steps {
sh label: '', script: 'mvn clean package'
}
}
stage('SonarQube代码审查') { steps{
script {
scannerHome = tool 'sonarqube-scanner'
}
withSonarQubeEnv('sonarqube6.7.4') {
sh "${scannerHome}/bin/sonar-scanner"
}
}
}
stage('项目部署') { steps {
deploy adapters: [tomcat8(credentialsId: 'afc43e5e-4a4e-4de6-984f- b1d5a254e434', path: '', url: 'http://192.168.66.102:8080')], contextPath: null, war: 'target/*.war'
}
}
}
post {
always {
emailext(
subject: '构建通知:${PROJECT_NAME} - Build # ${BUILD_NUMBER} -
${BUILD_STATUS}!',
body: '${FILE,path="email.html"}', to: '1014671449@qq.com'
)
}
}
}

1) 到SonarQube的UI界面查看审查结果

解决新版sonar-java插件需要配置sonar.java.binaries参数的问题

https://blog.csdn.net/u013111003/article/details/79927668

7. jenkins的代码审查的更多相关文章

  1. 有手就行10——Jenkins+SonarQube代码审查

    有手就行10--Jenkins+SonarQube代码审查 Jenkins+SonarQube代码审查(1) - 安装SonarQube Jenkins+SonarQube代码审查(2) - 实现代码 ...

  2. 配置sonar和jenkins进行代码审查

    转自:  http://www.cnblogs.com/gao241/p/3190701.html, 版权归原作者所有. 本文以CentOS操作系统为例介绍Sonar的安装配置,以及如何与Jenkin ...

  3. Jenkins+GitLab+SonnarQube搭建CI/CD全流程

    1. CI/CD 1.1 CI - 持续集成 持续集成( Continuous integration , 简称 CI )指的是,频繁地(一天多次)将代码集成到主干.持续集成的目的就是让产品可以快速迭 ...

  4. 【linux】【jenkins】自动化运维七 整合sonarqube代码审查

    1.安装插件:SonarQube Scanner for Jenkins 插件安装教程参考:https://www.cnblogs.com/jxd283465/p/11542680.html 2.So ...

  5. SonarQube + Jenkins代码审查环境安装文档 v1.2

    1. 安装SonarQube 1.1. 下载 下载地址:https://www.sonarqube.org/downloads/ 本次使用安装包为:sonarqube-7.4.zip 需要提前准备jd ...

  6. Jenkins+Sonar 项目构建前代码审查

    一.sonar简介 1.概述 Sonar (SonarQube)是一个开源平台,用于持续检查代码质量,不只是一个质量数据报告工具,更是代码质量管理平台. 支持Java, C#, C/C++, PL/S ...

  7. 【Gerrit】Gerrit与Jenkins/Hudson CI服务器搭建

    配置Git 很多系统(例如Linux)已经默认提供了Git,在Git主页也可以找到安装程序.对于Windows用户,最好的选择是MsysGit.请注意,如果你安装了Apple Developer To ...

  8. 结合提供者模式解析Jenkins源码国际化的实现

    关键字:提供者模式,设计模式,github,gerrit,源码学习,jenkins,国际化,maven高级,maven插件 本篇文章的源码展示部分由于长度问题不会全部粘贴展示,或许只是直接提及,需要了 ...

  9. Jenkins高级用法 - Jenkinsfile 介绍及实战经验

    系列目录 1.Jenkins 安装 2.Jenkins 集群 3.Jenkins 持续集成 - ASP.NET Core 持续集成(Docker&自由风格&Jenkinsfile) 4 ...

  10. Jenkins部署Python项目实战

    一.背景 我们工作中常用Jenkins部署Java代码,因其灵活的插件特性,例如jdk,maven,ant等使得java项目编译后上线部署一气呵成,同样对于脚本语言类型如Python上线部署,利用Je ...

随机推荐

  1. 使用python-slim镜像遇到无法使用PostgreSQL的问题

    前言 之前不是把 DjangoStarter 的 docker 方案重新搞好了吗 一开始demo部署是使用 SQLite 数据库的,用着没问题,但很快切换到 PostgreSQL 的时候就遇到问题了- ...

  2. DDD建模后写代码的正确姿势(Java、dotnet双平台)

    本文书接上回<一种很变态但有效的DDD建模沟通方式>,关注公众号(老肖想当外语大佬)获取信息: 最新文章更新: DDD框架源码(.NET.Java双平台): 加群畅聊,建模分析.技术交流: ...

  3. Win32 创建窗口翻车记录

    今天创建窗口的时候,在捕获消息WM_CREATE的时候翻车了,找了好久都没找到,我换另一台电脑上又没出问题, 现分享下:LRESULT QWnd::WindowProc(HWND hWnd, UINT ...

  4. 中考游记 & 暑假集训大记

    中考游记 & 暑假集训大记 前言 如今已经回归 \(OI\) ,望着如烟的往事,或是将将知道的讯息,心中早是凄然. 我真的希望这世间有我所期望的浦岛隧道,带回所有的遗憾,同时带走迷茫与害怕,重 ...

  5. luoguP3330 [ZJOI2011] 看电影--组合数学--高精度

    \(luoguP3330\) [ZJOI2011] 看电影 废了老命想题解 $$luogu$$ $$HZOI$$ 题意 到了难得的假期,小白班上组织大家去看电影.但由于假期里看电影的人太多,很难做到让 ...

  6. 根据Uri,Cursor没有获取到对应的属性

    Android: 背景:调用摄像头,拍摄视频,指定保存的地址,但是返回的Cursor文件,只有名称和大小的属性,没有其他诸如时长,连ID属性都没有 使用 cursor.getInt(cursor.ge ...

  7. Could not resolve placeholder 'xxx.xxx.xxx' in value "http://${xxx.xxx.xxx}"

    代码一切正常,忽然报这个错误, 原因为,当前配置在配置文件最后,且前面均为注释,把当前配置位置提前即可

  8. Angular Material 18+ 高级教程 – Custom Themes for Material Design 2 (自定义主题 Material 2)

    v18 更新重要说明 从 Angular Material v18 开始,默认使用的是 Material 3 Design (简称 M3),本篇教的是旧版本的 Material 2 Design (简 ...

  9. Codes 开源研发项目管理平台——创新的敏捷测试解决方案

    前言 Codes 是国内首款重新定义 SaaS 模式的开源项目管理平台,支持云端认证.本地部署.全部功能开放,并且对 30 人以下团队免费.它通过整合迭代.看板.度量和自动化等功能,简化测试协同工作, ...

  10. MonoDevelop 的续集dotdevelop

    DotDevelop 是一个跨平台的 .NET 集成开发环境(IDE),它原本是 MonoDevelop 的分支项目,这个项目更侧重于 Linux 支持和 GTK3 升级,github:https:/ ...