sonar掃描普通JAVA執行,SonarQube掃描源代碼的方法

SonarQube掃描源代碼的方法

雷建鋒

一、分析源代碼綜述

一旦成功安裝了SonarQube平臺,您就可以開始安裝一個分析器并開始創建項目了。在第一次分析時,該平臺會自動創建一個項目。如果您需要在第一個分析之前在項目上設置一些配置,那么您可以選擇配置它。

1.分析范圍:文件類型和數據類型

SonarQube可以對20多種不同的語言進行分析。這種分析的結果將是質量度量和問題(編碼規則被破壞的實例)。然而,分析的內容會因語言而異:

l? 在所有語言中,“(blame)責備”數據將自動從支持的SCM提供者中導入。Git和SVN都是自動支持的。其他提供商需要額外的插件。

l? 在所有語言中,都執行對源代碼的靜態分析(Java文件、COBOL程序等)

l? 可以對某些語言執行編譯后的代碼的靜態分析(Java中的類文件,c#的dll文件等等。)

l? 可以對某些語言執行對代碼的動態分析

2.無法識別的文件

默認情況下,只有在分析過程中,才會將被語言插件識別的文件加載到項目中。例如,如果您的SonarQube實例上有Java和JavaScript插件,那么所有.Java和.js文件都會被加載,但是.xml文件將被忽略。

3.分析過程中

在分析過程中,從服務器請求數據,分析文件,然后以報告的形式將結果數據發送回服務器,然后在服務器端異步分析。分析報告是排隊的,并按順序處理,因此很有可能在您的分析日志顯示完成之后的一個短暫的時間內,更新后的值在SonarQube項目中是不可見的。但是,您將能夠知道發生了什么,因為一個圖標將被添加到項目名稱旁邊。鼠標懸停在上面以獲得更詳細的信息(如果您使用適當的權限登錄,則會鏈接到鏈接)。

一旦處理完成,圖標就會消失,但是如果分析報告處理失敗了,那么圖標將會改變:

4.運行分析

首先,您應該為將要分析的項目的語言安裝插件,可以直接下載,也可以通過更新中心下載安裝;然后,您需要選擇一個分析方法。以下是可用的:

·??????? :?分析.net項目

·??????? :

Launch analysis from Maven with minimal configuration

·??????? :?Launch Gradle analysis

·??????? : Launch analysis from Ant

·??????? : Launch analysis from Jenkins

·??????? :?當其他分析程序都不合適時,從命令行啟動分析。

注意,我們不建議在SonarQube分析運行的機器上運行防病毒掃描器,它可能導致不可預測的行為。

5.?? FAQ

Q.分析報錯:java.lang.OutOfMemoryError:

GC overhead limit exceeded.這個應該怎么處理?

A.這意味著您的項目太大或太復雜,以至于掃描器無法用默認的內存分配進行分析。要解決這個問題,您需要將較大的內存(使用-Xmx數值)分配給運行分析的進程,一些CI引擎可能會給你一個輸入來指定必要的值,例如,如果你在Jenkins的工作中使用Maven構建步驟來運行分析。否則,使用Java選項來設置更高的值。請注意,這里省略了設置Java選項的細節,因為它們根據環境的不同而有所不同。

二、

1.

特性Feature

SonarQube Scanner是默認用于分析SonarQube項目的啟動器。

2.

安裝

1)

下載軟件,并解壓到,下載地址:

2)

更新全局設置以指向您的SonarQube服務器,打開并編輯編輯/conf/sonar-scanner.properties:

#-----

Default SonarQube server

sonar.host.url= #sonar.host.url配置的是實際sonar服務器的地址

3)

將?/bin?目錄添加到系統環境變量"path"中

4)

驗證安裝是否成功:打開cmd面板,輸入sonar-scanner -h,出現下圖,則表示環境變量設置成功:

如果您需要更多的調試信息,您可以添加sonar.verbose屬性,添加命令行參數-Dsonar.verbose=true。

3.

用法use

1)在項目的根目錄中創建一個配置文件:?sonar-project.properties

\

需要注意的是,需要分析的源碼在windows系統上的,路徑分隔符需要將'\'替換為'/'。

2)

按照官方文檔設置配置文件時候,sonar scanner掃描報錯“Please provide compiled classes of your project with

sonar.java.binaries property”,解決辦法是在sonar-project.properties

文件中增加一行

sonar.java.binaries=項目路徑/target/classes

以下是一個實際項目的配置文件:

# must be

unique in a given SonarQube instance

sonar.projectKey=game-of-life

# this is the

name and version displayed in the SonarQube UI. Was mandatory #prior to

SonarQube 6.1.

sonar.projectName=game-of-life

sonar.projectVersion=1.0

#sonar.language=java

# Path is

relative to the sonar-project.properties file. Replace "\" by

"/" on #Windows.

# This property

is optional if sonar.modules is set.

sonar.sources=.

# Encoding of

the source code. Default is default system encoding

#sonar.sourceEncoding=UTF-8

sonar.java.binaries=C:/game-of-life-master/gameoflife-core/build/classes

3)

進行項目根目錄,也即sonar-project.properties文件所在目錄,運行命令sonar-scanner

4)

若分析成功,則出現如下界面:

5)

登錄sonar服務器,會發現多了一個項目,即剛剛分析的項目。

6)

安全

任何授予執行分析權限的用戶都可以進行分析。如果任何一個組沒有被授予執行分析權限,或者SonarQube實例被保護(屬性被設置為true),具有執行分析權限的用戶的分析令牌必須通過?sonar.login屬性提供。舉例::?sonar-scanner -Dsonar.login=[my

analysis token]

4.

故障排除troubleshooting

5.?????? Going Future

三、

特性

建議對Java Maven項目使用此分析器進行分析。

先決條件

l? Maven 3.x

l? SonarQube已經完成

l? 至少您的SonarQube服務器支持的最小版本的Java是在使用的(最新LTS的Java 8)

l? 您希望分析的每種語言的語言插件都已安裝

l? 您已經閱讀了

初始設置:全局設置

編輯位于$ MAVEN_HOME

/ conf或?/ .m2中的settings.xml文件。有三個地方需要新增:1)本地倉庫路徑localRepository? 2)pluginGroup 3)sonar配置。舉例:

D:/maven/repo? #替換成本地repo倉庫

org.sonarsource.scanner.maven

sonar

true

#替換成自己sonar服務器的實際RUL

分析一個Maven項目

分析一個Maven項目包括在pom.xml文件所在的目錄中運行Maven目標:sonar:sonar

mvn clean verify sonar:sonar

# In some situation you may want to run sonar:sonar goal as a dedicated

step. Be sure to use install as first step for multi-module projects

mvn clean install

mvn sonar:sonar

# Specify the version of sonar-maven-plugin instead of using the latest.

See also 'How to Fix Version of Maven Plugin' below.

mvn org.sonarsource.scanner.maven:sonar-maven-plugin:3.4.1.1170:sonar

舉例:

xmlns:xsi=""

xsi:schemaLocation="

">

D:/maven/repo

org.sonarsource.scanner.maven

sonar

true

分析完成后,若分析成功,則會出現這樣的界面

打開SonarQube系統,發現新項目已經體現在系統中的了

要獲得覆蓋率信息,您需要在分析之前生成覆蓋率報告。有關更多信息,請參閱。

四、

五、其他

sonarlint和pylint,與IDE結合使用非常好。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/541822.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/541822.shtml
英文地址,請注明出處:http://en.pswp.cn/news/541822.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

html的學習思維導圖

轉載于:https://www.cnblogs.com/lingdublog/p/6438088.html

php語言冒泡法,PHP實現冒泡排序算法的案例

PHP實現冒泡排序算法的案例發布時間:2020-10-23 17:39:38來源:億速云閱讀:84作者:小新這篇文章主要介紹PHP實現冒泡排序算法的案例,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定…

線性代數分塊矩陣求逆矩陣_單位矩陣屬性(AI = A)| 使用Python的線性代數

線性代數分塊矩陣求逆矩陣Prerequisites: 先決條件: Defining Matrix 定義矩陣 Identity matrix 身份矩陣 numpy.matmul( ) matrix multiplication numpy.matmul()矩陣乘法 In linear algebra, the identity matrix, of size n is the n n square matrix with one…

MySQL5.7.17的簡單配置文件

#編譯安裝mysql5.7.17 [rootweb_1 data]# cat ../my.cnf [client]port3307socket/data/3307/mysql.sock[mysqld]user mysqlbasedir /usr/local/mysqldatadir /data/3307/dataport3307server-id 1socket/data/3307/mysql.sockcharacter-set-server utf8log-error /data/33…

cubic-bezier_帶CSS中的示例的cube-bezier()函數

cubic-bezierIntroduction: 介紹: How many times have we come across the word function? Well, it would not be wrong to say a lot. The fact that functions are used in web development while developing a website or web page is very important. There…

php時間調用最簡單的,PHP調用時間通過引用不可避免?

給定以下接口:interface ISoapInterface {public static function registerSoapTypes( &$wsdl );public static function registerSoapOperations( &$server );}以及以下代碼:$soapProvider array( "FilePool", "UserList" );foreach( $soapProvi…

上手Caffe(一)

author:oneBite 本文記錄編譯使用caffe for windows 使用環境 VS2013 ultimate,win7 sp1,caffe-windows源碼(從github上下載caffe的windows分支,下載解壓之后,不要改變原有的目錄結構,因為solution rebuild時會使用文件的相對路徑…

使用JavaScript的圖像識別游戲

Today we are going to develop a fully functional image recognition game using JavaScript. JavaScript is the best fit choice since it is a web-based game. The game is totally based on event handling and event objects. 今天,我們將使用JavaScript開發…

php 判斷 in,tinkphp常用判斷條件in、notin、between、AND、OR

越來越多的人使用thinkphp框架開發應用,容易上手開發周期短,接下來吾愛編程為大家分享一下tinkphp常用判斷條件in、notin、between、AND、OR,有需要的小伙伴可以參考一下:in:{in name"Think.get.level" valu…

關于設置不同linux主機之間ssh免密登錄簡易方法

2019獨角獸企業重金招聘Python工程師標準>>> 在linux日常中,經常會有ssh鏈接其他主機服務器的action,也學習過大家日常用配置ssh免密登錄的方法。 小編今天在這里給大家介紹一種比較簡單的配置linux主機ssh免密登錄的方法。 兩臺主機的IP地址&#xff1a…

c語言指針++_C ++此指針| 查找輸出程序| 套裝1

c語言指針Program 1: 程序1&#xff1a; #include <iostream>using namespace std;int main(){int A 10;this* ptr;ptr &A;*ptr 0;cout << *ptr << endl;return 0;}Output: 輸出&#xff1a; main.cpp: In function ‘int main()’:main.cpp:7:5: e…

java自定義線程池池,線程池使用及自定義線程池

一 案例引申編寫代碼同時只允許五個線程并發訪問(以下文的函數為例子)private static void method() {System.out.println("ThreadName" Thread.currentThread().getName() "進來了");Thread.sleep(2000);System.out.println("ThreadName" Th…

long類型20位示例_Java Long類reverseBytes()方法與示例

long類型20位示例長類reverseBytes()方法 (Long class reverseBytes() method) reverseBytes() method is available in java.lang package. reverseBytes()方法在java.lang包中可用。 reverseBytes() method is used to returns the value generated by reversing the order o…

impala和mysql語法,impala CREATE TABLE語句

CREATE TABLE語句用于在Impala中的所需數據庫中創建新表。 創建基本表涉及命名表并定義其列和每列的數據類型。語法以下是CREATE TABLE語句的語法。 這里&#xff0c;IF NOT EXISTS是一個可選的子句。 如果使用此子句&#xff0c;則只有在指定數據庫中沒有具有相同名稱的現有表…

Guava翻譯系列之EventBus

EventBus 類解析 當我們開發軟件時&#xff0c;各個對象之間的數據共享和合作是必須的。 但是這里比較難做的是 怎樣保證消息之間的傳輸高效并且減少各個模塊之間的耦合。 當組件的職責不清楚時&#xff0c;一個組件還要承擔另一個組件的職責&#xff0c;這樣的系統我們就認為是…

Java PipedOutputStream close()方法與示例

PipedOutputStream類close()方法 (PipedOutputStream Class close() method) close() method is available in java.io package. close()方法在java.io包中可用。 close() method is used to close this PipedOutputStream and free all system resources linked with this str…

Java二維數組谷電,java二維數組遍歷的2種代碼

二維數組遍歷&#xff1a;思想&#xff1a;1.先將二維數組中所有的元素拿到2.再將二維數組中每個元素進行遍歷&#xff0c;相當于就是在遍歷一個一維數組第一種方法&#xff1a;雙重for循環//遍歷二維數組public class Traverse_a_two_dimensional_array {public static void m…

【轉】MyEclipse快捷鍵大全

常用快捷鍵 -------------------------------------MyEclipse 快捷鍵1(CTRL)-------------------------------------Ctrl1 快速修復CtrlD: 刪除當前行 CtrlQ 定位到最后編輯的地方 CtrlL 定位在某行 CtrlO 快速顯示 OutLine CtrlT 快速顯示當前類的繼承結構 CtrlW 關閉當…

Java整數類的compareTo()方法和示例

整數類compareTo()方法 (Integer class compareTo() method) compareTo() method is available in java.lang package. compareTo()方法在java.lang包中可用。 compareTo() method is used to check equality or inequality for this Integer object against the given Integer…

MATLAB元胞自動機報告,元胞自動機概述與MATLAB實現

什么是元胞自動機&#xff1f;元胞自動機(cellular automata&#xff0c;CA) 是一種時間、空間、狀態都離散&#xff0c;空間相互作用和時間因果關系為局部的網格動力學模型&#xff0c;具有模擬復雜系統時空演化過程的能力。它能構建隨時間推移發生狀態轉移的系統&#xff0c;…