投稿004期|SonarQube 學習注意事項和技巧

投稿004期|SonarQube 學習注意事項和技巧

來自專欄猿論4 人贊了文章

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] Exceptionjava.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需要特別注意的事項,其他的操作都很容易了,大家可以參考官網。

作者:小強聊架構

鏈接:imooc.com/article/32157

來源:慕課網

本文原創發佈於慕課網 ,轉載請註明出處,謝謝合作


推薦閱讀:

【官方】手記欄目認證作者招募,長期有效,隨時報名!_慕課手記

有獎徵文005期 |人生路上得一良師,是何感受?

用proxy實現一個更優雅的vue

五種網路IO模型和select/epoll對比

暴露真實IP真的沒關係嗎?


推薦閱讀:

Git各種錯誤操作撤銷的方法

TAG:Sonar | 編程技巧 | 架構 |