欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

IDEA集成Sonar的完整流程

 更新時(shí)間:2023年06月07日 09:48:24   作者:畢小寶  
這篇文章主要介紹了IDEA集成Sonar的完整流程,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

背景

最近關(guān)注代碼質(zhì)量管理工具,用過了阿里的開發(fā)者規(guī)范插件后,又看了下 Sonar ,弄明白這個(gè)工具的使用流程花費(fèi)了小半天的時(shí)間,這里整理下其中的盲點(diǎn)。

說來也奇怪,搜索到的 IDEA 集成 Sonar 的文章也不少,就是沒有一篇能教會(huì)我這個(gè)初次接觸 Sonar 的人。

還得靠自己連蒙帶猜地各種嘗試,才搞明白整個(gè)過程。

相關(guān)的模塊及關(guān)系

  • Sonar:該工具的統(tǒng)稱
  • SonarLint:IDEA 的 Sonar 插件
  • SonarQube:一個(gè) Web 應(yīng)用,服務(wù)端,統(tǒng)一管理 Sonar 掃描結(jié)果、掃描規(guī)則配置
  • sonar-maven-plugin:Sonar 客戶端,從 SonarQube 服務(wù)器獲取掃描規(guī)則,并上傳掃描結(jié)果到 SonarQube 平臺(tái)

插件安裝

插件的安裝比較簡單,這個(gè)基本上不會(huì)有問題,在插件倉庫中搜索 “SonarLint” 插件,找到插件后點(diǎn)擊安裝即可。

本機(jī)已經(jīng)安裝過了,結(jié)果如下:

可能是我本機(jī)使用的 IDEA 版本【2016.3.1】比較老,所以插件安裝完成后,只有在某個(gè)文件編輯頁面右鍵才有 “Analyze with SonarLint” 操作,而在工程上右鍵,網(wǎng)上都說菜單位于 Analyze 中:

我的 IDEA 中找不到這個(gè)操作,但是選中某個(gè)文件夾后,可以通過快捷鍵【Ctrl+Shif+S】對該目錄進(jìn)行掃描,通過進(jìn)度條可以知道它掃描的是整個(gè)目錄:

在單個(gè)文件中,右鍵有掃描操作:

注意點(diǎn):插件安裝成功后,可以直接進(jìn)行掃描,雖然當(dāng)前版本的 IDEA 工程右鍵沒有這個(gè)操作,但是快捷鍵可以用,說明插件安裝成功。

SonarQube 啟動(dòng)

SonarQube 是 Sonar 的 Web 管理應(yīng)用,非解壓版的,下載地址 。

由于這是一個(gè) Web 應(yīng)用,需要用到數(shù)據(jù)庫,需要?jiǎng)?chuàng)建一個(gè)數(shù)據(jù)庫,名稱沒有限制,需要修改配置文件中的數(shù)據(jù)庫連接信息。

操作過程:

  • 本地?cái)?shù)據(jù)庫用 MySQL ,創(chuàng)建一個(gè)名為 sonar 的數(shù)據(jù)庫
  • 解壓 SonarQube ,定位到配置文件目錄 E:\software\sonarqube-7.6\conf
  • 修改 sonar.properties 文件,在 28 行添加如下配置:
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
sonar.jdbc.username=root
sonar.jdbc.password=123456
sonar.sorceEncoding=UTF-8
sonar.login=admin
sonar.password=admin
  • 進(jìn)入 bin 目錄找到跟自己主機(jī)一致的目錄 E:\software\sonarqube-7.6\bin\windows-x86-64
  • 運(yùn)行 StartSonar.bat 啟動(dòng) SonarQube

注意點(diǎn):StartSonar.bat 會(huì)啟動(dòng)一個(gè) DOS 窗口運(yùn)行,首次啟動(dòng)時(shí)耗時(shí)較長。此外,關(guān)閉 DOS 界面時(shí),后臺(tái)對應(yīng)的 Java 進(jìn)程不會(huì)結(jié)束。

不會(huì)結(jié)束的坑就是:端口會(huì)繼續(xù)被占據(jù)。

如果再次點(diǎn)擊啟動(dòng)文件,則啟動(dòng)操作會(huì)閃退,此時(shí)可以在 log 目錄中查看日志定位錯(cuò)誤。

因此,沒有事情的話,不要關(guān)閉它的界面,如果必須關(guān)閉后重啟,那么關(guān)閉后手動(dòng)打開進(jìn)程管理器,停掉對應(yīng)的 Java 進(jìn)程。

SonarQube 創(chuàng)建工程

SonarQube 啟動(dòng)后,訪問 http://localhost:9000 進(jìn)入其登錄界面,輸入 sonar.properties 中配置的帳號(hào)和密碼后進(jìn)入主界面:

SonarQube 是以工程為單位進(jìn)行掃描管理的,第一步需要點(diǎn)擊 A 前面的 + 號(hào),創(chuàng)建一個(gè)新工程:

注意點(diǎn):如果插件配置認(rèn)證方式為 Token ,那么這里需要記錄該項(xiàng)目的 Token 信息。

插件配置

IDEA 中需要配置 SonarQube 的訪問地址和工程,配置方法為:

1.打開插件通用配置界面

2.點(diǎn)擊 + 號(hào)添加 SonarServer

3.下一步配置認(rèn)證信息

認(rèn)證方式有兩種,Token 和密碼,Token 即前面創(chuàng)建項(xiàng)目時(shí)生成的 Token 信息。這里選擇密碼方式,輸入 SonarQube 訪問密碼:

4.SonarLint 項(xiàng)目配置

至此,IDEA 插件 SonarLint 和 SonarQube 關(guān)聯(lián)配置完成。

maven-sonar 插件

maven-sonar 插件,本質(zhì)是一個(gè) sonar-runner 掃描工具,也是一個(gè)客戶端。

根據(jù) 官方 maven-sonar 插件配置教程 完成 Maven setting.xml 配置。

1.添加 maven-sonar 插件

在 pluginGroups 節(jié)點(diǎn)下,添加一個(gè)子節(jié)點(diǎn):

<pluginGroup>org.sonarsource.scanner.maven</pluginGroup>

2.添加 sonar 的 profile

在 profiles 節(jié)點(diǎn)下添加一個(gè)子節(jié)點(diǎn),配置 sonar 插件的主機(jī) URL:

<profile>
		<id>sonar</id>
		<activation>
			<activeByDefault>true</activeByDefault>
		</activation>
		<properties>
			<!-- Optional URL to server. Default value is http://localhost:9000 -->
			<sonar.host.url>
			  http://localhost:9000
			</sonar.host.url>
		</properties>
    </profile>

3.工程 pom.xml 配置插件版本

在待掃描工程的 pom.xml 文件中,添加 build 插件,配置 maven-sonar 插件版本:

 <plugin>
    <groupId>org.sonarsource.scanner.maven</groupId>
    <artifactId>sonar-maven-plugin</artifactId>
    <version>3.6.0.1398</version>
  </plugin>

maven 執(zhí)行掃描命令

直接運(yùn)行 maven 生命周期中的各種方法,都不能完成 soanr 代碼掃描及結(jié)果上傳。

官方是通過執(zhí)行mvn sonar:sonar 命令完成的,所以想到的辦法是在 IDEA 的 termianl 控制界面執(zhí)行該命令,測試它的確能完成掃描結(jié)果的上傳:

執(zhí)行成功結(jié)果為:

maven-sonar 插件使用的注意點(diǎn):不能對 SVN 服務(wù)器端版本較低的 SVN 項(xiàng)目進(jìn)行掃描,否則會(huì)執(zhí)行失敗。

錯(cuò)誤信息如下:

Error when executing blame for file src/main/java/com/xxxx/SpringContextUtil.java: svn: E200007: Retrieval of mergeinfo unsupported by svn:url

網(wǎng)上找的解決辦法不生效,所以只能對本地非 SVN 項(xiàng)目進(jìn)行代碼掃描。

掃描結(jié)果查看

mvn sonar:sonar 命令執(zhí)行完成后,訪問 SonarCube 主頁能查看最新的掃描結(jié)果:

Issues 菜單下,選擇 All 而不是 My Issues ,貌似它可以對掃描到的 Issues 進(jìn)行分配,這里能看到所有的問題。

Project 菜單下,呈現(xiàn)各個(gè)項(xiàng)目的,這里使用命令執(zhí)行后,自動(dòng)創(chuàng)建了一個(gè)與工程應(yīng)用名相同的項(xiàng)目:

啟示錄

反復(fù)執(zhí)行掃描后,發(fā)現(xiàn) SonarLint 插件的功能跟 maven-sonar 插件是一樣的。理論上來講,通過 SonarLint 功能,即對某個(gè)功能執(zhí)行 Analyze with SonarLint 與在終端執(zhí)行 mvn sonar:sonar 命令效果應(yīng)該一樣才對。

maven 的 setting.xml 中只配置了 SonarQube 的 host.url ,并沒有指定項(xiàng)目名稱,所以執(zhí)行完成 mvn sonar:sonar 命令后,在 Web 頁面會(huì)自動(dòng)創(chuàng)建一個(gè)與掃描工程名稱一樣的項(xiàng)目。

而前面對插件配置的 SonarQube Server 和 project 指定是針對 Analyze with SonarLint 的,手動(dòng)執(zhí)行該操作后,理論上應(yīng)該在對應(yīng)的項(xiàng)目中看到掃描結(jié)果的??上?,我這個(gè) IDEA 版本下沒有完成掃描結(jié)果的上傳。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring Cloud出現(xiàn)Options Forbidden 403問題解決方法

    Spring Cloud出現(xiàn)Options Forbidden 403問題解決方法

    本篇文章主要介紹了Spring Cloud出現(xiàn)Options Forbidden 403問題解決方法,具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-11-11
  • springboot的jar包如何啟用外部配置文件

    springboot的jar包如何啟用外部配置文件

    本文主要介紹了springboot的jar包如何啟用外部配置文件,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Spring基于@Conditional條件化裝配bean

    Spring基于@Conditional條件化裝配bean

    這篇文章主要介紹了Spring @Conditional條件化裝配bean,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Java模版引擎Freemarker

    Java模版引擎Freemarker

    FreeMarker是一個(gè)模板引擎,一個(gè)基于模板生成文本輸出的通用工具,使用純Java編寫 FreeMarker被設(shè)計(jì)用來生成HTML Web頁面,特別是基于MVC模式的應(yīng)用程序
    2016-04-04
  • SpringBoot+devtools實(shí)現(xiàn)熱部署的示例代碼

    SpringBoot+devtools實(shí)現(xiàn)熱部署的示例代碼

    在軟件項(xiàng)目的開發(fā)過程中,不可避免的會(huì)經(jīng)常修改代碼,每次修改代碼,都需要手動(dòng)停止然后再啟動(dòng)服務(wù),最后驗(yàn)證代碼的正確性,今天通過這篇文章,我們一起來學(xué)習(xí)一下如何使用Spring?Boot?+?devtools?輕松搞定熱部署,需要的朋友可以參考下
    2024-08-08
  • Java參數(shù)校驗(yàn)Validator與@AssertTrue深度解析

    Java參數(shù)校驗(yàn)Validator與@AssertTrue深度解析

    本文詳細(xì)介紹了Java的Validator框架及其@AssertTrue注解的使用,包括環(huán)境準(zhǔn)備、基礎(chǔ)注解介紹、實(shí)戰(zhàn)示例、@AssertTrue的深入解析、高級(jí)特性和最佳實(shí)踐建議,感興趣的朋友跟隨小編一起看看吧
    2025-01-01
  • IntelliJ IDEA(或者JetBrains PyCharm)中彈出

    IntelliJ IDEA(或者JetBrains PyCharm)中彈出"IntelliJ IDEA License

    今天小編就為大家分享一篇關(guān)于IntelliJ IDEA(或者JetBrains PyCharm)中彈出"IntelliJ IDEA License Activation"的解決辦法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • java8新特性之接口默認(rèn)方法示例詳解

    java8新特性之接口默認(rèn)方法示例詳解

    這篇文章主要給大家介紹了關(guān)于java8新特性之接口默認(rèn)方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用java8具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • springboot中RabbitMQ死信隊(duì)列的實(shí)現(xiàn)示例

    springboot中RabbitMQ死信隊(duì)列的實(shí)現(xiàn)示例

    死信隊(duì)列是一種特殊的消息隊(duì)列,用來存儲(chǔ)無法被正常消費(fèi)的消息,常被用來實(shí)現(xiàn)延遲處理,異常消息處理等,本文主要介紹了springboot中RabbitMQ死信隊(duì)列的實(shí)現(xiàn)示例,感興趣的可以了解一下
    2024-01-01
  • java實(shí)現(xiàn)隊(duì)列queue數(shù)據(jù)結(jié)構(gòu)詳解

    java實(shí)現(xiàn)隊(duì)列queue數(shù)據(jù)結(jié)構(gòu)詳解

    大家好,本篇文章主要講的是java實(shí)現(xiàn)隊(duì)列queue數(shù)據(jù)結(jié)構(gòu)詳解,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02

最新評論