Sonar 介绍Sonar 是一个用于代码质量管理的开放平台。通过插件机制, Sonar 可以集成不同的测试工具,以及持续集成工具。与持续集成工具(例如 Hudson/Jenkins 等)不同, Sonar并不是简单地把不同的代码检查工具结果(例如 FindBugs, PMD 等)直接显示在 Web 页面上,而是通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理。在对其他工具的支持方面, Sonar 不仅提供了对 IDE 的支持,可以在 Eclipse 和 IntelliJIDEA 这些工具里联机查看结果;同时 Sonar 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 Sonar。此外, Sonar 的插件还可以对 Java 以外的其他编程语言提供支持,对国际化以及报告文档化也有良好的支持。
Sonar 的相关下载和文档可以在下面的链接中找到: http://www.sonarqube.org/downloads/。需要注意最新版的 Sonar 需要至少 JDK 1.8 及以上版本。上篇文章我们已经可以成功的使用 git 进行拉去, Sonar 的功能就是来检查代码是否有 BUG。除了检查代码是否有 bug 还有其他的功能,比如说:你的代码注释率是多少,代码有一些建议,编写语法的建议。所以我们叫质量管理Sonar 还可以给代码打分,并且引用了技术宅的功能(告诉你有很多地方没改)Sonar 部署
89 cd /usr/src/sonar 90 rz 上传所需软件包 软件包我们通过 wget 或者下载, rz 上传到服务器
#软件包下载: https://sonarsource.bintray.com/Distribution/sonarqube/sonarqube-5.6.zip
95 unzip sonarqube-5.6.zip 解压软件包 96 mv sonarqube-5.6 /usr/local/sonarqube 97 cd /usr/local/sonarqube/ 98 ln -s /usr/local/sonarqube/bin/linux-x86-64/sonar.sh /usr/local/bin/ 链接命令目录
准备 Sonar 数据库如果没有数据库请执行 yum install -y mariadb mariadb-server
102 cd /usr/src/ MySQl5.7RPM 103 rz 上传所需rpm包 105 cd MySQl5.7RPM/ 107 ls
108 yum -y localinstall mysql-community-* 安装此目录的MySQL包 109 systemctl start mysqld 开启mysql 100 systemctl enable mariadb 设置开机自启
登录数据库并操作110 mysqladmin -u root password 123 设置MySQL数据库密码可以看到这里有问题。解决:111 grep password /var/log/mysqld.log 红框中的就是密码112 mysql -u root -p'yq%9XsyE:r&g' 登陆数据库alter user 'root'@'localhost' identified by '123.com'alter user 'root'@'localhost' identified by 'Xgp@123.com';
create database sonar character set utf8 collate utf8_general_ci; 创建数据库 grant all on sonar.* to 'sonar'@'%' identified by 'Sonar@123.com'; 设置授权用户 grant all on sonar.* to 'sonar'@'localhost' identified by 'Sonar@123.com'; 设置授权用户
113 cd /usr/local/sonarqube/bin/ 115 ls
116 ln -s /usr/local/sonarqube/bin/linux-x86-64/sonar.sh /usr/local/bin/ 链接命令目录 117 vim conf/sonar.properties 修改sonar配置文件 sonar.jdbc.username=sonar #14用户名 sonar.jdbc.password=Sonar@123.com #15密码 sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance #23去注释 sonar.web.host=0.0.0.0 #99去注释 sonar.web.port=9000 #106去注释
配置 Java 访问数据库驱动(可选)默认情况 Sonar 有自带的嵌入的数据库,那么你如果使用类是 Oracle 数据库,必须手动复制驱动类到${SONAR_HOME}/extensions/jdbc-driver/oracle/目录下,其它支持的数据库默认提供了驱动。其它数据库的配置可以参考官方文档:http://docs.sonarqube.org/display/HOME/SonarQube+Platform启动 Sonar并查看端口你可以在 Sonar 的配置文件来配置 Sonar Web 监听的 IP 地址和端口,默认是 9000 端口。118 sonar.sh start 启动sonar119 netstat -anpt | grep 9000 查看端口120 tailf /usr/local/sonarqube/logs/sonar.log 查看sonar日志#端口是 9000 哦!Web 登陆: IP:9000提示:sonar 跟 jenkins 类似,也是以插件为主sonar 安装插件有 2 种方式:第一种将插件下载完存放在 sonar 的插件目录,第二种使用 web 界面来使用安装存放插件路径[/usr/local/sonarqube/extensions/plugins/]安装中文插件登陆:用户名: admin 密码: adminsonar安装‘中文’和php插件
132 cd /usr/local/sonarqube/extensions/plugins/ 进入sonar宿主目录 133 cp /usr/src/sonar/sonar-l10n-zh-plugin-1.11.jar ./ 拷贝中文插件到sonar目录 134 cp /usr/src/sonar/sonar-php-plugin-2.9-RC1.jar ./ 拷贝php插件到sonar目录需要重启才会生效 134 sonar.sh restart 重启sonar 135 netstat -anpt | grep 9000 查看端口
生效后如下图:
140 cd /usr/src/sonar/ 进入刚刚上传sonar包的目录 141 unzip sonar-scanner-cli-3.3.0.1492-linux.zip 解压扫描插件 142 mv sonar-scanner-3.3.0.1492-linux/ /usr/local/sonar-scanner 移动解压文件到sonar宿主目录 143 cd /usr/local/sonar-scanner/ 进入sonar宿主目录 145 ln -s /usr/local/sonar-scanner/bin/sonar-scanner /usr/local/bin/ 链接命令目录 146 ln -s /usr/local/sonar-scanner/bin/sonar-scanner /usr/bin/ 链接命令目录
我们要将扫描器和 sonar 关联起来
143 cd /usr/local/sonar-scanner/ 144 vim conf/sonar-scanner.properties 修改sonar配置文件 sonar.host.url=http://localhost:9000 #去注释 sonar 地址 sonar.sourceEncoding=UTF-8 #8去注释 字符集 以下四行来自/usr/ldocal/sonarqube/conf/sonar.properties sonar.jdbc.username=sonar #数据库账号 sonar.jdbc.password=Sonar@123.com #数据库密码 sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance #数据库连接地址 #打开注释即可
我们现在需要找一个代码进行分析。
sonar 插件提供了一个代码的库github:https://github.com/SonarSource/sonar-examples我们下载软件包: https://github.com/SonarSource/sonar-examples/archive/master.zip解压150 unzip testalyzer-master.zip 解压测试文件151 cd /usr/src/sonar/testalyzer-master/projects/languages/php/php-sonar-runner-unit-tests 进入测试文件163 sonar-scanner 测试代码文件提示: 我们什么都不指定就会在当面目录下扫描 sonar-project.properties 文件,根据配置文件进行扫描工作。扫描之后我们在 web 界面上就可以看到代码的扫描结果这里的名字,版本 都是在 sonar-project.properties 文件中定义的 质量阈帮我们设定好一个阈值,超过相应的阈值就算有 bug测试第二个文件cd /usr/src/sonar/testalyzer-master/projects/languages/javascript/javascript-sonar-runnersonar-scanner 测试
为了让 jenkins 可以在构建项目的时候执行 sonar,所以我们需要在 jenkins 上安装插件
现在就可以进行配置,让 jenkins 和 sonar 结合在一起。这样我们构建项目的时候就会进行代码检测http://192.168.1.40:8081/ jdk安装插件SonarQube Scanner. Gerrit Tr igge 需要一个一个来安装完毕之后:现在就可以进行配置,让 jenkins 和 sonar 结合在一起。这样我们构建项目的时候就会进行代码检测系统管理---系统设置---- add sonarqube server---name随意写 url sonarqube的路径http://192.168.1.40: 9000
点击保存
系统管理---全局工具配置---新增SonarQube Scanner--- 取消勾选自动安装----name随意写--- SONAR_RUNNER_HOME /usr/local/sonar- scanner
配置配置上次课的web- demo项目----构建--- Execute SonarQube Scanner ----Analysis properties 内容在cat /usr/src/sonar/testalyzer-master/projects/languages/php/php-sonar-runner-unit-tests/sonar-project.properties(每个人安装目录不一样)
编辑我们的项目,选择最下放。找到构建cat /usr/src/sonar/testalyzer-master/projects/languages/php/php-sonar-runner-unit-tests/sonar-project.properties
填写完毕后,我们点击保存
217 cd /usr/src/sonar/testalyzer-master/projects/languages/php/php-sonar-runner-unit-tests 219 cp -r * /root/xgp-demo/ 220 cd /root/xgp-demo/ 进入xgp项目 221 git add * 上传到缓存 222 git commit -m "sonar" 上传到版板库 223 git push origin master 上传到远程库 提示: 此时的 SonarQube 是无法点击的
浏览器JDK查看
点击 Console Output 可以查看构建输出的内容#提示:只要没有 error 就可以Gielab查看并修改名字
再次修改一下并把密钥修改一下
在sonar上查看添加了一个xgpa
登陆QQ邮箱获取授权码1、需要开启 POPE3/SMTP 服务2、在 jenkins 上配置的密码我们需要点击生成授权码进行使用回到jdk系统管理---系统设置---Jenkins Location---- 系统管理员邮件地址-----邮件通知---SMTP服务器smtp . qq. com---用户默认邮件后缀@qq. com---勾选使用smtp认证用户名密码 (生成的授权码)---勾选使用ssl--- smtp端口 465---勾选通过发送测试邮件测试配置
配置web- demo项目---构建后操作- --添加E -mail Notification---Recipient收件 人地址---- Editable Email Notification---Project From填写项目名称----Project Recipient Lis t收件人邮箱地址-Triggers---add Triggers----always-- Send To只保留Recipient List
测试:关闭git(失败邮件)gitlab-ctl stop
测试:成功邮件启动gitlab-ctl start