|
公司基本資料信息
|
sonarqube架構介紹
SonarQube平臺主要由4個組件組成:
(1). SonarQube服務器:
主要包括web服務器,基于ElasticSearch的搜索服務器,計算引擎服務器。
其中,web服務器,是供開發人員瀏覽查看代碼分析結果,進行相應的配置等。
計算引擎服務器主要是處理代碼分析報表并將其存儲在數據庫。
(2). SonarQube 數據庫:
存儲配置信息和代碼分析報表。
(3). 多個Soanr插件:包括分析各種語言的插件。
(4). 多個Sonar Scanner,主要運行在開發人員的代碼端,可以單獨部署,也可以集成在Maven,Gradle等。
SonarQube 8.7 升級詳細說明(二)
sonarcube Mysql數據庫切換到PgSQL
備份 sonar 現有的MySQL數據庫用于導入 PgSQL
使用sonarcube初始化一下tgresql數據庫
Could no determine SonarQube version of the target database. Could not select version from schema_migration.
新創建的空PG庫是不能進行遷移的,需要同版本的soanr使用后才會找到和這個表!就是需要舊版本的SonarQube 初始化一次
重啟服務
升級 7.9.5
升級 8.7.0
sonarqube問題修改總結
三、可讀性問題
1、用isEmpty()去做容器的空或者非空判斷。
說明:Use isEmpty() to check whether the collection is empty or not.
原因:增加可讀性。
2、刪除沒有用的import、field、class、method。
原因:增加可維護性。
修改建議:刪除無用代碼塊、申明、方法和引用。
3、if語句被拆分不利于可讀
說明:Merging collapsible if statements increases the code's readability.
3、方法內多個return出口
錯誤示例:
解決建議:定義一個return,賦值,統一返回。
4、修改了入參說明:修改了入參降低了代碼的可讀性,丟失了原始參數的值。
錯誤示例:
5、用equalsIgnoreCase()方法替代字符串的無視大小寫比較。
說明:Replace these toUpperCase()/toLowerCase() and equals() calls with a single equalsIgnoreCase() call.
原因:參數應當是final的
解決建議,利用一個臨時變量充當需要變動的參數。
SonarQube使用流程
使用流程圖
1、開發負責人獲取蕞新代碼到本地;
2、開發負責人執行sonar-runner開始代碼分析工作;
3、開發負責人將分析出來的issue指派給開發人員;
4、開發人員修復issue;
5、開發負責人重新獲取蕞新源碼,重新執行sonar-runner,檢查issue的修復情況。