Sonar安装指南

简介

SonarQube一款自动化的代码检查的工具,可以检测代码bug、代码漏洞和不良的代码风格。你可以将整合到你所在工作流当中,通过分支的pull请求触发Sonar进行扫描。也可以整合到 Jenkins中,在构建项目时触发Sonar。

下载 SonarQube

注意这里下载的是SonarQube服务器,它只是用来收集扫描结果和展示结果的。还要需要一个Sonar-Scanner, 它是可以单独的一个组件或者是jenkins里面的插件等等。

从官网下载sonarQube指定版本,我这里下载的是社区版SonarQube7.6.

(因为官网上面说新的版本不支持mysql数据库了,而且jdk只支持jdk11,或者OpenJDK)

解压文件到指定目录下

unzip sonarqube-7.6.zip -d /opt/sonarqube

配置数据库

SonarQube服务器需要一个数据库来储存数据,当前版本8.2已经不支持mysql了。SonarQube7.6只能用mysql5.6或mysql5.7,不支持其它版本的Mysql。但是可以支持其它类型的数据库,并且它有内置的H2内存型数据库。

连接mysql, 新建数据库sonar


create database sonar default character set utf8 collate utf8_general_ci;

修改SonarQube服务器的配置文件 $SOANR_HOME/conf/sonar.properties


echo "
# 数据库连接 url
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar? useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
# 数据库连接账号
sonar.jdbc.username=root 
# 数据库连接密码
sonar.jdbc.password=123456
sonar.sorceEncoding=UTF-8
# 设置sonar的登录账号
sonar.login=admin
# 设置sonar的登录密码
sonar.password=admin
" >> $SOANR_HOME/conf/sonar.properties # $SOANR_HOME是sonarqube-xx.zip解压之后的根目录

启动SonarQube服务器

在启动SonarQube之后需要注意,由于SonarQube中有elasticsearch服务( elasticsearch默认占用9001端口),所以机器必须要开通9001端口,

并且启动es (版本es5+) 需要非root用户,需要新建一个用户


adduser sonar # 新建用户
chown -R sonar $SONAR_HOME # 将sonarqube文件及其子文件的拥有者设置为sonar用户
./$SONAR_HOME/bin/[os]/sonar.sh console # 如果是Linux64位的,[os]就是linux-x86-64, console 命令行启动

启动成功的标志

  • 会有SonarQube is up*(在最底行)*

  • 查看sonar数据库会有很多表新生成

  • 打开localhost
    /Users/tangdunhong/Documents/images/sonar-login-en.png

安装汉化包

SonarQube版本与对应的汉化包地址sonar-l10n-zh

我下载的版本是SonarQube7.6对应版本是sonar-l10n-zh-1.26,文件名为sonar-l10n-zh-plugin-1.26.jar, 这里吐槽一下,其实翻译之后感觉更看不懂了。

Sonar与Jekins结合

SonarQube Scanner

下载SonarQube Scanner for Jenkins_2.11, 下载文件为sonar.hpi,将文件上传到Jenkins

在这里插入图片描述

或者在线下载,安装成功后,显示已安装

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P9Vk2f1Q-1582816451490)(/Users/tangdunhong/Documents/images/jenkins_plugin-sonar.png)]

配置SonarQubeServer

系统管理–>系统配置–>SonarQube servers配置SonarQube服务器

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Prw3Gius-1582816451490)(/Users/tangdunhong/Documents/images/jenkins_sonarqube_server.png)]

Name可以自定义, Server URL要填写SonarQube服务器的地址, Server authentication token是在SonarQube服务器中生成的令牌,也可以不填,如果不填Server authentication token,则需要在Jenkins任务中填写账号密码。

Jenkins任务中配置SonarQube Scanner的触发条件,可以在构建成功之后触发SonarQube Scanner扫描代码

在这里插入图片描述

配置代码扫描规则

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cwzNVNvt-1582816451492)(/Users/tangdunhong/Documents/images/屏幕快照 2020-02-05 下午9.17.47.png)]

JDK指定启动Scanner的JDK, Additional arguments可以填写-X,表示输出Scanner的日志。

下面是配置Analysis properties

单一项目
sonar.projectKey=diary # 项目的key(应该是启动唯一标识吧)
sonar.projectName=diary # 项目的名称
sonar.projectVersion=1.0-SNAPSHOT # pom.xml文件中项目版本
sonar.language=java # 语言 java
sonar.sourceEncoding=UTF-8 # 字符编码 UTF-8
sonar.login=admin # 如果没有SonarQube的令牌则需填写服务器登录账号

sonar.password=admin # 如果没有SonarQube的令牌则需填写服务器登录密码

sonar.sources=./src # 源代码位置

sonar.java.binaries=./target/classes # 字节码位置

sonar.java.libraries=./target/*.jar # 字节码位置或jar包
多个项目

多个项目(模块)的扫描的方式有多种,可以用Maven的插件,通过Maven构建,不过与这里的Jenkins主题不符了。

我这里的方案是checkout多个模块,分别放在不同的文件夹中

在后面执行shell,把源码构建和打包


cd project1
mvn install -Dfile.encoding=UTF-8 -Dmaven.test.skip=true
cd ../project2
mvn install -Dfile.encoding=UTF-8 -Dmaven.test.skip=true

配置Analysis properties


sonar.projectKey=diary # 项目的名称(应该是启动唯一标识吧)
sonar.projectName=diary # 项目的名称
sonar.projectVersion=diary_${projectVer} # 项目版本,这里的参数可配
sonar.language=java # 语言 java
sonar.sourceEncoding=UTF-8 # 字符编码 UTF-8
sonar.login=admin # 如果没有SonarQube的令牌则需填写服务器登录账号
sonar.password=admin # 如果没有SonarQube的令牌则需填写服务器登录密码
sonar.projectBaseDir=../ #这里没有用当前目录的原因是上面shell执行后,当前目录变成了project1, 还没试过如果不用cd命令,当前目录会不会是任务目录。

#  开始分多个模块
sonar.modules=project1,project2
project1.sonar.sources=./src # 源代码位置
project1.sonar.projectKey=project1_key
project1.sonar.projectKey=project1
project1.sonar.java.binaries=./target/classes # 字节码位置
project1.sonar.java.libraries=./target/*.jar # 字节码位置或jar包

project2.sonar.sources=./src # 源代码位置
project2.sonar.projectKey=project2_key
project2.sonar.projectKey=project2
project2.sonar.java.binaries=./target/classes # 字节码位置
project2.sonar.java.libraries=./target/*.jar # 字节码位置或jar包

SonarQube添加阿里的p3c-pmd规范

下载sonar-p3c-pmd

我下载的文件为sonar-pmd-plugin-3.2.0-SNAPSHOT.jar,将下载的jar包放在$JONAR_HOME/extension/plugins目录下,删除之前的pmd插件(如果有的话),并重启SonarQube服务。
在这里插入图片描述
重启后,在质量配置中可以看到java中多了个p3c配置规则,如果没有可以新建质量配置,取名c3p。

在这里插入图片描述

​ 点击这个模板可以进入这个模板的编辑页面

在这里插入图片描述

点击更多激活规则, 输入p3c,过滤出阿里新增的51条规范,点击批量修改 -> 活动,激活这51条代码规范,当然也可以增加其它的规范。

在这里插入图片描述

初试牛刀

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

安装find bugs插件

插件为jar包,放在SONAR_HOME/extension/plugins/下面,SONAR_HOME是sonar服务器的安装路径

插件版本地址, 一般下载最新版本就好了,它是兼容sonarqube的老版本。

安装chedk stype插件

插件为jar包,放在SONAR_HOME/extension/plugins/下面,SONAR_HOME是sonar服务器的安装路径

插件版本地址, 根据版本对应安装,它是新版本兼容sonarqube的新版本。

FAQ

eleasticsearch报错不能用root用户登录

新建其它用户


adduser sonar # 新建用户sonar

chown -R sonar:sonar SONAR_HOME # 一定给该用户授权,不然会报错,新加入插件后要重新授权 .--.

eleasticsearch报错文件数有限制


vi  etc/security/limits.conf

sonar soft nofile 65536 # sonar用户可以创建文件数量警告的设定,可以超过这个设定值,但是超过后会有警告。

sonar hard nofile 65536 # sonar用户可以创建文件最大数量

eleasticsearch内存有限制

max_map_count文件包含限制一个进程可以拥有的VMA(虚拟内存区域)的数量


vi etc/sysctl.conf

vm.max_map_count=262144

服务器不时间不同导致 sonar启动失败

我遇到这个古怪的问题,这个问题可能是jar包本身有问题,在不同的系统里面用了tar打包工具,出现的。还有一种可能是压缩时的机器时区跟解压的时区不一致。


报这个错误 Unable to read plugin manifest from jar

解决方法:同步服务器时间,或者下载正确的包,或者用正确的方式打包。

安装的环境中没有unzip工具,但是下载的包是zip格式的

如果要安装的环境是linux,最好用linux解压再压缩。
我用Mac里的unzip进行解压,然后用tar -czvf 进行压缩结果出问题了,好像是报上面那个错误。

用unzip工具解压,然后用tar czvf xx.tar.gz files打包,在要安装的环境用tar

unzip xx.zip 
tar czvf xx.tar.gz sonarqube_version
tar xzvf xx.tar.gz -D /path/to/extract
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
安装SonarQube在Linux上需要按照以下步骤进行操作: 1. 下载并解压SonarQube安装包。可以从SonarQube官方网站下载最新的稳定版,然后使用命令解压缩安装包。例如,使用命令`unzip sonarqube-9.7.zip`解压缩。 2. 创建一个新的用户并设置权限。SonarQube不能以root用户运行,因此需要创建一个新的用户并将安装目录的所有权赋予该用户。例如,使用以下命令创建用户并设置权限: ``` useradd sonar passwd sonar chown -R sonar.sonar /opt/sonarqube-9.7 ``` 3. 切换到sonar用户并启动SonarQube。使用以下命令切换到sonar用户,并运行SonarQube启动脚本: ``` su sonar cd /opt/sonarqube-9.7/bin/linux-x86-64 ./sonar.sh start ``` 4. 在Web浏览器中验证安装。打开Web浏览器并访问SonarQube的URL(通常是`http://localhost:9000`),确保安装成功。 这些步骤将指导您在Linux安装SonarQube。请根据您的具体情况进行相应的调整。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Linux安装 sonarQube](https://blog.csdn.net/weixin_44210965/article/details/124338686)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Linux安装SonarQube和sonar-scanner详细安装及配置](https://blog.csdn.net/weixin_40816738/article/details/90111803)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值