SonarQube入门【转】
一、SonarQube简介
Sonar
是一个用于代码质量管理的开放平台。通过插件机制,Sonar可以集成不同的测试工具,代码分析工具, 以及持续集成工具。
比如pmd-cpd、checkstyle、findbugs、Jenkins。
通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理。同时 Sonar
还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 Sonar。
此外,Sonar 的插件还可以对 Java 以外的其他编程语言(支持的语言包括:Java、PHP、C#、C、Cobol、PL/SQL、Flex等)提供支持, 对国际化以及报告文档化也有良好的支持。 可以说Sonar是目前最强大的代码质量管理工具之一。
SonarQube和SonarQube
Runner之间的关系。SonarQube是服务器端,它主要有两个功能:1.分析源代码;2.因为它内嵌了Apache模块,所以提供Web端的界面访问。SonarQube
Runner是一个利用SonarQube服务端分析代码的命令行工具,可以把它简单理解为客户端。
二、SonarQube安装
1、数据库配置
mysql> CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
Query OK, row affected (0.11 sec)
mysql> CREATE USER 'sonar' IDENTIFIED BY '*****';
Query OK, rows affected (0.02 sec)
mysql> GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY '*****';
Query OK, rows affected, warning (0.01 sec)
mysql> GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY '******';
Query OK, rows affected, warning (0.00 sec)
mysql> flush privileges;
Query OK, rows affected (0.03 sec)
mysql> \q
Bye
2、配置sonar
[root@vm1 ~]# wget https://sonarsource.bintray.com/Distribution/sonarqube/sonarqube-6.7.3.zip
[root@vm1 ~]# mv sonarqube-6.7..zip /usr/local/
[root@vm1 ~]# cd /usr/local/
[root@vm1 local]# unzip sonarqube-6.7..zip
[root@vm1 local]# ln -s sonarqube-6.7. sonar
[root@vm1 ~]# cd /usr/local/sonar/conf/
[root@vm1 conf]# vim sonar.properties
[root@vm1 conf]# grep -Pv "^(#|$)" sonar.properties
sonar.jdbc.username=sonar
sonar.jdbc.password=*****
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
sonar.web.host=0.0.0.0
sonar.web.port=
Sonar-scanner 下载址:
wget https://sonarsource.bintray.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.1.0.1141-linux.zip
https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner
https://docs.sonarqube.org/display/SCAN
2、配置SonarQube Runner
下载地址:http://repo1.maven.org/maven2/org/codehaus/sonar/runner/sonar-runner-dist/2.4/sonar-runner-dist-2.4.zip
[root@vm1 ~]# mv sonar-runner-dist-2.4.zip /usr/local/
[root@vm1 ~]# cd /usr/local/
[root@vm1 local]# unzip sonar-runner-dist-2.4.zip
Archive: sonar-runner-dist-2.4.zip
creating: sonar-runner-2.4/
creating: sonar-runner-2.4/bin/
inflating: sonar-runner-2.4/bin/sonar-runner.bat
inflating: sonar-runner-2.4/bin/sonar-runner
creating: sonar-runner-2.4/conf/
inflating: sonar-runner-2.4/conf/sonar-runner.properties
creating: sonar-runner-2.4/lib/
extracting: sonar-runner-2.4/lib/sonar-runner-dist-2.4.jar
[root@vm1 local]# ln -s ln -s sonar-runner-2.4 sonar-runner
[root@vm1 local]# cd sonar-runner/conf/
[root@vm1 conf]# vim sonar-runner.properties
[root@vm1 conf]# grep -Pv "^(#|$)" sonar-runner.properties
sonar.host.url=http://localhost:9000
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8
sonar.jdbc.username=sonar
sonar.jdbc.password=*****
sonar.login=admin
sonar.password=admin
[root@vm1 conf]# [root@vm1 ~]# vim /etc/profile
JAVA_HOME=/usr/java/latest
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export TIME_STYLE='+%Y/%m/%d %H:%M:%S'
export SONAR_HOME=/usr/local/sonar
export SONAR_RUNNER_HOME=/usr/local/sonar-runner
PATH=$SONAR_HOME/bin:$SONAR_RUNNER_HOME/bin:$JAVA_HOME/bin:$PATH
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL JAVA_HOME [root@vm1 conf]# source /etc/profile
3、启动SonarQube
用root无法启动lSonarQube,需要另外新建普通用户来启动
[root@vm1 sonar]# useradd esadmin
[root@vm1 sonar]# cd ..
[root@vm1 local]# chown -R esadmin.esadmin sonarqube-6.7.
[root@vm1 local]# vim sonar/elasticsearch/config/elasticsearch.yml
[root@vm1 local]# grep -Pv "^(#|$)" sonar/elasticsearch/config/elasticsearch.yml
network.host: 192.168.60.119
http.port:
[root@vm1 local]#
[root@vm1 local]# su esadmin
[esadmin@vm1 local]$ cd sonar
[esadmin@vm1 sonar]$ bin/linux-x86-/sonar.sh start
[esadmin@vm1 sonar]$ tail -f logs/sonar.log
2018.05. :: INFO app[][o.s.a.SchedulerImpl] Process[es] is up
2018.05. :: INFO app[][o.s.a.p.ProcessLauncherImpl] Launch process[[key='web', ipcIndex=, logFilenamePrefix=web]] from [/usr/local/sonarqube-6.7.]: /usr/java/jdk1..0_172-amd64/jre/bin/java -Djava.awt.headless=true -Dfile.encoding=UTF- -Djava.io.tmpdir=/usr/local/sonarqube-6.7./temp -Xmx512m -Xms128m -XX:+HeapDumpOnOutOfMemoryError -cp ./lib/common/*:./lib/server/*:/usr/local/sonarqube-6.7.3/lib/jdbc/mysql/mysql-connector-java-5.1.42.jar org.sonar.server.app.WebServer /usr/local/sonarqube-6.7.3/temp/sq-process6994721675375568509properties
2018.05.21 19:51:38 INFO app[][o.s.a.SchedulerImpl] Process[web] is up
2018.05.21 19:51:38 INFO app[][o.s.a.p.ProcessLauncherImpl] Launch process[[key='ce', ipcIndex=3, logFilenamePrefix=ce]] from [/usr/local/sonarqube-6.7.3]: /usr/java/jdk1.8.0_172-amd64/jre/bin/java -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djava.io.tmpdir=/usr/local/sonarqube-6.7.3/temp -Xmx512m -Xms128m -XX:+HeapDumpOnOutOfMemoryError -cp ./lib/common/*:./lib/server/*:./lib/ce/*:/usr/local/sonarqube-6.7.3/lib/jdbc/mysql/mysql-connector-java-5.1.42.jar org.sonar.ce.app.CeServer /usr/local/sonarqube-6.7.3/temp/sq-process5555492575408452898properties
2018.05.21 19:51:54 INFO app[][o.s.a.SchedulerImpl] Process[ce] is up
2018.05.21 19:51:54 INFO app[][o.s.a.SchedulerImpl] SonarQube is up
[esadmin@vm1 sonar]$ lsof -i:9000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 22595 esadmin 116u IPv6 105980 0t0 TCP *:cslistener (LISTEN)
[esadmin@vm1 sonar]$
[root@vm1 local]# firewall-cmd --zone=public --add-port=9000/tcp --permanent
success
[root@vm1 local]# firewall-cmd --reload
success
[root@vm1 local]#
4、使用浏览器就可以直接登陆
在浏览器地址栏输入: http://sonarqube_server_ip:9000/
5、SonarQube与maven结合
maven的setting.xml 配置如下:
<pluginGroups>
<pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
</pluginGroups>
<profiles>
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<!-- Optional URL to server. Default value is http://localhost:9000 -->
<sonar.host.url>
http://192.168.40.119:9000
</sonar.host.url>
</properties>
</profile>
......
</profiles>
mvn sonar:soanr
6、SonarQube与Jenkins配合
方法1:Jenkins -->调用maven -->
在maven的settings.xml文件中指定SonarQube的地址,最后在Jenkins 项目构建时 使用 maven clean
deploy sonar:sonar 参数,如下图所示:
方法2: 在Jenkins中下载sonar插件,目前插件为 SonarQube Scanner for Jenkins。安装完成后,在 系统管理->系统设置中,找到SonarQube servers模块,填写服务器信息,如下所示:
上图中的token 是从SonarQube复制并粘贴过来的,如下所示:
在项目的根目录下添加文件sonar-project.properties 文件参考:
# must be unique in a given SonarQube instance
sonar.projectKey=my:project
# this is the name and version displayed in the SonarQube UI. Was mandatory prior to SonarQube 6.1.
sonar.projectName=My project
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=.
# Encoding of the source code. Default is default system encoding
sonar.sourceEncoding=UTF-8
# The value of the property must be the key of the language.
sonar.language=java
# Additional parameters
sonar.my.property=value
sonar-scanner
export SONAR_SCANNER_OPTS="-Xmx512m"
SonarLint相当于sonar的一个插件,它及时反馈给开发人员新的bug和质量问题。是常用IDE的一个扩展。如Eclipse、VS、IntelliJIDEA。
wget -c http://repo1.maven.org/maven2/org/codehaus/sonar-plugins/l10n/sonar-l10n-zh-plugin/1.8/sonar-l10n-zh-plugin-1.8.jar
[esadmin@vm1 source]$ git clone https://github.com/SonarSource/sonar-scanning-examples.git
[esadmin@vm1 source]$ cd sonar-scanning-examples/sonarqube-scanner
[esadmin@vm1 sonarqube-scanner]$ ls
copybooks coverage-report sonar-project.properties src
[esadmin@vm1 sonarqube-scanner]$ /usr/local/sonar-scanner/bin/sonar-scanner
总结:其中注意的地方:
(1)安装sonar以前必须,安装好jdk和 mysql数据库。
(2)jdk的版本影响着sonar版本,所以下载的时候需要注意(Sonar5.6以上版本需要JDK1.8)
(3)注意配置文件中配置信息要求。注意有三个配置文件需要去配置一下,sonar.properties,配置文件主要是配置数据库信息。因为,sonar产生的报告信息, 是存储在数据库中的。
sonar-scanner.properties,配置文件,主要是关联服务器sonar和数据库信息。第三个配置文件任然是上面这一样的名字,是配置在项目中的配置文件。管理项目和客户端的连接。
(4)那就是用到的命令、启动sonar服务器我们直接在bin启动就可以了,需要注意的命令。验证客户端是否安装成功sonar-scanner -version 然后就是我们主要的命令。sonar-scanner 用来加载项目进入服务器sonar中。
(5)一个 输入URL http://localhost:9000
三、补充sonarqube-7.3
[root@nexus ~]# cd /usr/local/src/
[root@nexus src]# wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.3.zip
[root@nexus src]# unzip sonarqube-7.3.zip
[root@nexus src]# ln -s sonarqube-7.3 sonarqube
[root@nexus src]# grep sonar /etc/passwd
sonar:x:1021:1022::/home/sonar:/bin/bash
[root@nexus src]# chown -R sonar.sonar sonarqube-7.3
[root@nexus src]# cd sonarqube/conf
[root@nexus conf]# vim sonar.properties
[root@nexus conf]# grep -Pv "^($|#|;)" 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
sonar.web.port=10000 #默认9000,由于本机9000已被占用 本例改为10000
[root@nexus conf]# mysql -usonar -psonar sonar -hlocalhost #测试连接mysql的username、password、dbName ;sonar7.3 要求 MySQL >=5.6 && <8.0
[root@nexus conf]# ln -s /usr/local/src/sonarqube-7.3/bin/linux-x86-64/sonar.sh /etc/init.d/sonar
[root@nexus conf]# vim /etc/init.d/sonar
[root@nexus conf]# grep -A 2 RUN_AS_USER=sonar /etc/init.d/sonar
RUN_AS_USER=sonar
LimitNOFILE=65536
LimitNPROC=2048
[root@nexus conf]# (添加以上三行)
[root@nexus conf]# grep SONAR_HOME /etc/profile
export SONAR_HOME=/usr/local/src/sonarqube
export PATH=$PATH:$SONAR_HOME
[root@nexus conf]#
[root@nexus conf]# service sonar start
[root@nexus conf]# lsof -i:10000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 18831 sonar 116u IPv4 1429389507 0t0 TCP *:ndmp (LISTEN)
[root@nexus conf]#
[root@nexus conf]# cd /etc/nginx/conf.d
[root@nexus conf.d]# cat sonar.conf
upstream sonar-node {
server 127.0.0.1:10000;
}
server {
listen 80;
server_name sonar.2dupay.com;
access_log /var/log/nginx/sonar/access.log;
error_log /var/log/nginx/sonar/error.log;
location / {
proxy_pass http://sonar-node;
}
allow 192.168.20.0/24;
deny all;
}
[root@nexus conf.d]# nginx -s reload
转自
SonarQube-WorkNote-51CTO博客 https://blog.51cto.com/caiyuanji/2124671
SonarQube入门【转】的更多相关文章
- 【Jenkins持续集成(一)】SonarQube 入门安装使用教程
一.前言 持续集成管理平台不只是CI服务器,是一系列软件开发管理工具的组合. 源码版本管理:svn.git 项目构建工具:Maven.Ant 代码质量管理:Sonar(Checkstyle.PMD.F ...
- 手把手教你SonarQube入门安装与使用
简介 Sonar (SonarQube)是一个开源平台,用于管理源代码的质量. Sonar 不只是一个质量数据报告工具,更是代码质量管理平台. 支持Java, C#, C/C++, PL/SQL, C ...
- SonarQube的使用入门
SonarQube的安装.配置与使用 详情请参照原博客:http://www.cnblogs.com/qiaoyeye/p/5249786.html SonarQube是管理代码质量一个开放平台,可以 ...
- SonarQube学习入门指南
1. 什么是SonarQube? SonarQube 官网:https://www.sonarqube.org/ SonarQube®是一种自动代码审查工具,用于检测代码中的错误,漏洞和代码异味.它可 ...
- SonarQube部署及代码质量扫描入门教程
一.前言 1.本文主要内容 CentOS7下SonarQube部署 Maven扫描Java项目并将扫描结果提交到SonarQube Server SonarQube扫描报表介绍 2.环境信息 工具/环 ...
- Dubbo入门到精通学习笔记(五):持续集成管理平台之sonarqube代码质量管理平台的介绍与安装
文章目录 SonarQube的介绍 SonarQube的安装 安装简介 详细安装过程 详细使用过程 SonarQube的介绍 SonarQube是一个管理代码质量的开放平台. 可以从七个维度检测代码质 ...
- K8s 入门
中文文档:https://www.kubernetes.org.cn/kubernetes%E8%AE%BE%E8%AE%A1%E6%9E%B6%E6%9E%84 小结大白话 Portainer 挺好 ...
- SonarQube安装文档
1.SonarQube 1.1 SonarQube介绍 SonarQube是管理代码质量一个开放平台,可以快速的定位代码中潜在的或者明显的错误. SonarQube是否可以使用自定义规则由开发人员的开 ...
- Ant, JUnit以及Sonar的安装+入门资料
Ant 感觉是个和Make/Grunt类似的东东,build一个项目用的.安装很容易,跟装JDK类似,就是解压->设环境变量->没了.注意装之前要先确认Java装好了(有点废话). 下载地 ...
随机推荐
- Flink 使用(一)——从kafka中读取数据写入到HBASE中
1.前言 本文是在<如何计算实时热门商品>[1]一文上做的扩展,仅在功能上验证了利用Flink消费Kafka数据,把处理后的数据写入到HBase的流程,其具体性能未做调优.此外,文中并未就 ...
- Python 中 plt 画柱状图和折线图
1. 背景 Python在一些数据可视化的过程中需要使用 plt 函数画柱状图和折线图. 2. 导入 import matplotlib.pyplot as plt 3. 柱状图 array= np. ...
- 10分钟学会 linux awk命令
简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再 ...
- destoon7.0后台栏目分类一键获取所有栏目拼音目录
近期研究DT,从DT4.0一直研究到DT7.0,总算也有些心得.最近重新开发设计了一个信息资讯站点:http://www.xuetong365.com/ 废话不多说,上教程 用于DESTOON7.0系 ...
- 既然 transform 不适用于某些内联元素,那咱们就把这些元素变成 inline-block 或 block 就行了。
既然 transform 不适用于某些内联元素,那咱们就把这些元素变成 inline-block 或 block 就行了.
- 微信扫描二维码跳转手机默认浏览器打开下载app的链接是怎么实现的
此方法可以实现微信内置浏览器跳转到手机其它浏览器,现在网上其它的方法都只是一个页面,让访问者自己手动点右上角浏览器打开,而这个不同,是可以直接自动跳转的. <?php error_reporti ...
- CentOS 7.5静默安装oracle 11g
1.安装前环境准备 1.1.配置本地yum源 #因公司内网环境,没有互联网,所以需要配置本地yum源,安装所需依赖包等. #挂载ios镜像centos7.5-1804 [root@oracle ~]# ...
- Kubernetes 学习20调度器,预选策略及优选函数
一.概述 1.k8s集群中能运行pod资源的其实就是我们所谓的节点,也称为工作节点.master从本质上来讲,他其实是运行整个集群的控制平面组件的比如apiserver,scheal,controlm ...
- Bzoj 1010: [HNOI2008]玩具装箱toy(斜率优化)
1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec Memory Limit: 162 MB Description P教授要去看奥运,但是他舍不下他的玩具,于是他决定 ...
- GSS1 A - Can you answer these queries I
//题意:询问一段区间的最大子序列的值. //做法:维护四个值:包含当前区间左端点的最大子区间LM,包含当前区间右端点的最大子区间RM.当前区间的最大子区间M, 当前区间的区间和S //tree[ro ...