手记

投稿004期|SonarQube 学习注意事项和技巧

Sonar 是一个很优秀的代码分析工具,可以帮助程序员们发现很多潜在的问题和BUG。
最近作者重新安装部署的Sonar的最新版,安装中遇到了很多的坑,给大家讲讲,少走弯路。

  1. 架构篇
    SonarQube平台主要由4个组件组成:
    A. SonarQube服务器:
    主要包括web服务器,基于ElasticSearch的搜索服务器,计算引擎服务器。
    其中,web服务器,顾明思义,就是供开发人员浏览查看代码分析结果,进行相应的配置等。 计算引擎服务器主要是处理代码分析报表并将其存储在数据库。
    B. SonarQube 数据库:
    存储配置信息和代码分析报表。
    C. 多个Soanr插件:包括分析各种语言的插件。
    D. 多个Sonar Scanner,主要运行在开发人员的代码端,可以单独部署,也可以集成在Maven,Gradle等。

架构图描述如下:

2.环境篇
对于Linux 环境,一定要检查环境

vm.max_map_count 大于等于 262144
fs.file-max 大于等于 65536
the user running SonarQube 至少能打开 65536 file descriptors
the user running SonarQube 至少能打开 2048 threads

检查上述参数的命令:

sysctl vm.max_map_count
sysctl fs.file-max
ulimit -n
ulimit -u

修改机器参数的命令:

sysctl -w vm.max_map_count=262144
sysctl -w fs.file-max=65536
ulimit -n 65536
ulimit -u 2048

ElasticSearch注意事项
Sonar会用到ElasticSearch,因为大家知道,ElasticSearch 不支持root账号执行。
所以需要创建一个Sonar的账号。
常见的异常如下:

2018.05.23 23:39:21 ERROR es[][o.e.b.Bootstrap] Exception
java.lang.RuntimeException: can not run elasticsearch as root
        at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:106) ~[elasticsearch-5.6.3.jar:5.6.3]
        at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:195) ~[elasticsearch-5.6.3.jar:5.6.3]

同时,ElasticSearch会检查system_call_filter
在安装Sonar的过程中,需要关闭system_call_filter的检查。
步骤如下:
1>. sonar.properties
设置:

sonar.search.javaAdditionalOpts=-Dbootstrap.system_call_filter=false"

2>. wrapper.conf
设置

wrapper.java.additional.1=-Dsonar.wrapped=true
-Dbootstrap.system_call_filter=false

3>. /sonarqube-7.1/elasticsearch/config/elasticsearch.yml
添加:

bootstrap.memory_lock: false
bootstrap.system_call_filter: false

以上是SonarQube需要特别注意的事项,其他的操作都很容易了,大家可以参考官网。

2人推荐
随时随地看视频
慕课网APP

热门评论

你好,关于sonar有个问题,以java为例,假设我安装了第三方插件,为方便描述,我们称之为插件B,而sonar本身带有一个sonar way的插件,我们称之为A,我的问题是能不能再同一个项目当中既使用A的规则,也使用B的规则,如何做到?

查看全部评论