SonarQube 静态代码检查的安装

缘起

时隔多年,又开始搭建Git Server 和 CI(以前的文章:用gitlabCI快速搭建一个GitServer与CI)。 现在的Gitlab已经不再是2015年那个时候的Gitlab了。这次,是需要添加SonarQube用于代码检查。

安装

下载解压到官网下载即可

cd /opt; wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.9.zip

unzip sonarqube-7.9.zip

新建用户sonar

sudo useradd sonar

chown

sudo chown -R sonar:sonar /opt/sonarqube-7.19
 

数据库处理

参考: https://developerinsider.co/install-sonarqube-on-ubuntu/

指的一提的是,如果创建了数据库后运行了新版本的sonar,然后再运行老版本的sonar,而且使用同一个数据库的话(user + database),会提示错误,这个错误在web.log中,注意看下图的最后一行:

SonarQube 静态代码检查的安装_第1张图片

对于这种情况最简单的解决方式就是重新创建一个数据库用户和database:

sudo -i

su - postgres

createuser sonar76

psql

然后在数据库cli中:

 ALTER USER sonar76 WITH ENCRYPTED password 'PASSWORD';

CREATE DATABASE sonar76 OWNER sonar76;

\q

更改配置:

sudo gvim sonarqube-7.9/conf/sonar.properties

使用sonar账号尝试启动

sudo -i

su - sonar

/opt/sonarqube-7.9//bin/linux-x86-64/sonar.sh start

启动后登录localhost:9000 查看,如果有问题可以

/opt/sonarqube-7.9//bin/linux-x86-64/sonar.sh status

配合看logs里面的log确定问题。

 

使用Apache反向代理

参考: https://www.howtoforge.com/how-to-install-sonarqube-on-ubuntu-1804/

C/C++检查的插件

因为默认的版本没有,所以使用community的插件:

https://github.com/SonarOpenCommunity/sonar-cxx/wiki/SonarQube-compatibility-matrix

下载位于:

https://github.com/SonarOpenCommunity/sonar-cxx/releases

遇到的问题

root启动的问题

查看sonar安装目录下面的logs里面的es.log,可以看到无法使用root启动

参考: SonarQube 7.7: Startup error: ‘can not run elasticsearch as root’

 

gitlab安装插件

下载地址:https://github.com/gabrie-allaigre/sonar-gitlab-plugin

安装C/C++和gitlab插件,到对应的官网下载然后放入到sonar里面的extension/plugins里面

然后在chown为sonar即可。

然后重启sonar,在administrator里面查看:

SonarQube 静态代码检查的安装_第2张图片

使用

参考下面的两个link:

https://www.jianshu.com/p/8a9f7f462ebb

https://docs.sonarqube.org/pages/viewpage.action?pageId=7996665

 

对于C和C++需要直接选择一个后端,例如cppcheck,然后配置插件才能工作。

对于C语言和C++,因为都是用.h,因此可能会出现问题:

SonarQube Language sonar.lang.patterns error

对此需要将sonar的C++里面的文件的suffix配置更改,不能让C和C++都匹配同样的后缀。

参考: https://stackoverflow.com/questions/44412117/sonarqube-language-sonar-lang-patterns-error

你可能感兴趣的:(Software,C/C++)