1. 程式人生 > >靜態程式碼掃描平臺SonarQube簡介

靜態程式碼掃描平臺SonarQube簡介

靜態程式碼掃描這個詞對很多人來說並不陌生,從字面上理解就是檢查專案的原始碼,從原始碼中找出程式碼存在的缺陷:潛在的bug,未使用的程式碼,複雜的表示式,重複的程式碼等。
把靜態程式碼掃描引入到自動化測試工作中,需要感謝公司樓上一個同行哥們。在工具的選擇上也糾結了一段時間,公司的產品有PC端,Web端和移動端,也就意味著需要掃描的原始碼有多種語言,C,C++,c#,Java,Object C,就需要有一個平臺可以同時支援多種開發語言的程式碼掃描,SonarQube就很好的解決了這個問題,再次感謝那位哥們。

剛瞭解SonarQube,以下僅僅是自己在使用中的個人學習心得,如有不對的地方,還勞煩指正,萬分感謝。

  • Sonar的工作原理
    Sonar實際上是一個Web系統,展現了靜態程式碼掃描的結果,結果是可以自定義的,而真正實現程式碼掃描的是Sonar Scanner這個工具,另外同時支援多種語言的原理是它的擴充套件性,通過外掛實現的,也就是Java Jar架包,可以在Sonar平臺上線上安裝或者離線安裝。

修改sonar.properties(Sonar預設的DB是自帶的H2資料庫,是很小的嵌入式資料庫引擎,這裡的配置我換成了MySQL,為了方便檢查資料的正確性)
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
sonar.jdbc.url=jdbc:mysql://127.0.0.1:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance

執行 D:\sonarqube-5.3\bin\windows-x86-64\StartSonar.bat
這裡寫圖片描述
出現以上資訊則表示啟動成功,若提示記憶體 溢位的異常,修改wrapper.conf
wrapper.java.initmemory=64
wrapper.java.maxmemory=128

安裝Sonar服務,跟隨系統啟動
D:\sonarqube-5.3\bin\windows-x86-64\InstallNTService.bat
這裡寫圖片描述
啟動服務需要配置登入賬號密碼,即作業系統的登入賬號和密碼(這裡沒有配置的話,服務是無法正常啟動的)
這裡寫圖片描述
這裡寫圖片描述

用以下SQL語句建立sonar專用的DB以及使用者(請逐行執行)
CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
GRANT all ON sonar.* TO

[email protected] IDENTIFIED BY ‘sonar’;
FLUSH PRIVILEGES
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
注意:當Sonar的DB伺服器從預設的h2遷移到MySQL的時候,需用做資料遷移,在http://127.0.0.1:9000/setup中操作。

  • Jenkins下面配置Sonar
    Jenkins下面安裝Sonar外掛
    這裡寫圖片描述
    配置Sonar server URL(指向內網IP,Jenkins構建結果所指向的IP,預設localhost是無法從其他機器上直接訪問的)
    這裡寫圖片描述
    Jenkins下面配置Sonar和SonarRunner
    這裡寫圖片描述
    這裡寫圖片描述
    Sonar預設的管理員賬號和密碼都是admin

jenkins中配置需要做靜態掃描的專案
這裡寫圖片描述
若專案是用maven管理的,可以在構建後操作中加入SonarQube
這裡寫圖片描述
若不是maven管理的,不能這樣呼叫,在Add post-build step中加入Invoke Standalone SonarQube Analysis
這裡寫圖片描述
Jenkins中啟動專案構建,構建結果如下:
這裡寫圖片描述
分析結果可以點選上面的連結檢視,即跳轉到Sonar平臺。

注意,若原始碼是通過SVN或者其它的工具管理的,通過Jenkins的SVN外掛下載即可,需要從Sonar平臺中刪除SVN的外掛,不然會出錯。原因還沒有找到,先暫時這樣處理。
配置 - 系統 - 更新 - 找到SVN外掛並解除安裝。

MySQL中也會建立資料
這裡寫圖片描述

開啟Sonar平臺
這裡寫圖片描述

在Sonar的properties檔案中也是可以修改IP地址和埠號的
sonar.web.host=192.168.101.76
sonar.web.port=8081

下面是整個生產環境的配置截圖,後期有做修改
這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

這就是從搭建環境到執行掃描的整個過程,當然,分析結果的話需要有開發經驗,可以讓開發童鞋幫忙分析,我這裡預設的掃描規則是SonarQube Way,可以根據具體情況增刪規則,也可以下載其它規則的外掛,如:FindBugs,Checkstyle等,也可以自己開發新的規則外掛,所以可擴充套件性還是蠻強的。由於我這邊還是初步階段,還沒有涉及到這方面的研究,以後會引入。

相關推薦

靜態程式碼掃描平臺SonarQube簡介

靜態程式碼掃描這個詞對很多人來說並不陌生,從字面上理解就是檢查專案的原始碼,從原始碼中找出程式碼存在的缺陷:潛在的bug,未使用的程式碼,複雜的表示式,重複的程式碼等。 把靜態程式碼掃描引入到自動化測試工作中,需要感謝公司樓上一個同行哥們。在工具的選擇上也糾結

使用sonarqube進行靜態程式碼掃描

sonarqube是一個開源的程式碼分析平臺,可用於持續分析程式碼質量,包括已有bug、壞味道、重複程式碼等等,並通過web頁面展示出來。sonarqube不僅可供測試部門使用,個人在開發過程中隨時查驗錯誤也可以使程式碼質量得到一個不錯的提升。1.下載很方便吧,確實get s

程式質量管理(二)——關於靜態程式碼掃描

騰訊開源了一款靜態程式碼掃描工具: http://code.tencent.com/tscancode.html 這個工具可以掃描發現程式碼中潛在的漏洞隱患,比如解引用為空,客戶端不同步問題等。 牆裂推薦在開發過程中作為日常掃描,可以幫助發現很多潛在的Bug。 TScanCode提供了命令列

隨行付微服務測試之靜態程式碼掃描

靜態程式碼掃描為整個發展組織增加價值。無論您在開發組織中發揮的作用如何,靜態程式碼掃描解決方案都具有附加價值,擁有軟體開發中所需要的尖端功能,最大限度地提高質量並管理軟體產品中的風險。 背景 微服務架構模式具有服務間獨立,可獨立開發部署等特點,獨立開發誘發了技術上的分離,HTTP通訊增加了問題診斷的複雜度

PHP靜態程式碼掃描工具PHPCheckStyle果真如此不靠譜嗎?

今天嘗試用了下PHPCheckStyle看看對PHP程式碼做靜態掃描效果如何,結果誤報率,,,摻不忍睹啊,是不是我哪裡用錯了?原始碼:<?php $first=$_GET["first"]; $value=strval($_GET["tainted"]); echo

靜態程式碼掃描(四)——Java資源關閉研究

最近一直在研究java資源關閉的檢查規則,發現市面上開源的工具針對資源關閉的檢測都存在一定不足,同時也無法滿足我們業務的需求。所以火線團隊針對資源關閉進行了深度的研究,取得了一些不錯的進展,但是過程的艱辛也遠超了我們的預料。現在就跟大家聊聊我們的心路歷程,

全面剖析PMD靜態程式碼掃描工具

這是個人原創的一篇全面介紹PMD靜態程式碼掃描工具的文件,最近部門需要調研靜態程式碼掃描工具以提高程式碼的質量,經過對比幾十款工具,剔除了商用和多年沒有更新的,最終鎖定的有PMD、SanorQube以及Facebook infer。PMD是使用JavaCC生成解析器來解析原始

Jenkins+SonarQube+Gitlab搭建自動化持續程式碼掃描質量平臺

文章目錄 前言 程式碼評審 SonarQube簡介 SonarQube安裝配置 小團隊持續程式碼掃描實踐 技術方案&實現 流程&標準 團隊&文化

sonarqube基礎:掃描規則:3: 指定Quality Profile進行程式碼掃描

這篇文章以前面建立的Spring boot2的web應用為例,使用自定義的Quality Profile來進行質量的檢查。 事前準備 關於spring boot+maven+jacoco+sonarqube+junit等相關基礎,請參看 spring快速入門系列中的整理,此處不再

Docker搭建程式碼質量檢測平臺-SonarQube(中文版)

Sonar是一個用於程式碼質量管理的開源平臺,用於管理原始碼的質量,可以從七個維度檢測程式碼質量。通過外掛形式,可以支援包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等等二十幾種程式語言的程式碼質量管理與檢測。    &nb

靜態程式碼檢查工具簡介

靜態程式碼檢查工具簡介 在 Java 軟體開發過程中,開發團隊往往要花費大量的時間和精力發現並修改程式碼缺陷。傳統的程式碼複審、同行評審,通過人工方式來檢查缺陷仍然是一件耗時耗力的事情。Java 靜態程式碼分析(static code analysis)工具能夠在程式碼構建過程中幫助開發人員快速

開發人員學Linux(10):CentOS7安裝配置程式碼質量管理平臺SonarQube

1.前言上一章講述瞭如何配置使用原始碼管理工具SVN並使之與Apache整合,從而實現程式碼的變更可追溯,雖然在大多數團隊裡強調程式碼提交之前必須找團隊中經驗豐富的人來稽核通過後方可提交,但這一條有時候不是所有時候都能得到滿足,有沒有依賴於機制而不是人來保證程式碼質量呢,我們

程式碼質量管理平臺SonarQube的安裝、配置與使用

準備工作;1、jdk(不再介紹)2、sonarqube:http://www.sonarqube.org/downloads/3、SonarQube+Scanner:https://sonarsource.bintray.com/Distribution/sonar-scanner-cli/sonar-sca

免費使用SonarQube 進行程式碼掃描

我有一臺線上伺服器,Sonar Qube已經配置好了,但是沒怎麼使用,貢獻出來給大夥用吧。 地址:http://www.mahoutchina.com:9010 有需要用的給我聯絡吧(站短),說明一下用途即可,程式碼不能用於非法用途,公益、慈善類組織機構優先使用,希望對

Docker構建SonarQube檢測程式碼質量平臺

1、SonarQube需要資料庫支援,所以需要先安裝資料庫可以是Postgresql和Mysql,在這裡推薦使用MySql;1、獲取 postgresql 的映象$ docker pull postgres2、啟動 postgresql$ docker run --name

程式碼質量分析平臺Sonarqube介紹

問題:如何保證工程師提交的程式碼是符合標準的? 找個技術經理或架構師有事沒事就Code Review或者不定期舉行Review大會

持續整合工具之jenkins+sonarqube程式碼掃描

  上一篇我們主要聊了下程式碼質量管理平臺sonarqube的安裝部署以及它的工作方式做了簡單的描述和程式碼掃描演示;回顧請參考https://www.cnblogs.com/qiuhom-1874/p/13822428.html;今天我們來聊一下使用持續整合工具jenkins結合程式碼質量管理平臺sonar

SonarQube學習(三)- 專案程式碼掃描

## 一、前言 元旦三天假,兩天半都在玩86版本DNF,不得不說,這個服真的粘度太高了,但是真的很良心。 **作為一個老玩家,玩的就是個情懷!** 說明: > 註冊賬號上線100w點券,一身+15紅字史詩裝備以及+21強化新手武器。線上泡點一分鐘888點券。所有東西皆可白嫖! ### 遊戲成就 附圖1

GourdScanV2 SQL被動掃描平臺搭建

es2017 .com 出錯 更改 foo com install 使用 /usr 項目地址:https://github.com/ysrc/GourdScanV2 搭建環境:Kali Linux 1.首先安裝redis-server root@kali:~# apt-g

構建springmvc+myabtis+dubbo分布式平臺-dubbo簡介

推送 透明 簡單配置 sta 調優 分布式服務框架 開始 reg 架構圖 上一篇我們介紹《構建dubbo分布式平臺-maven構建ant-utils工具包的構建》,從今天開始,我們進入分布式服務項目的核心教程,真正使用dubbo實現分布式服務進行企業服務。 在學習dubbo