最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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 平臺

插件安裝

插件的安裝比較簡單,這個(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í),后臺對應(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 中配置的帳號和密碼后進(jìn)入主界面:

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

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

插件配置

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

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

2.點(diǎn)擊 + 號添加 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)文章

  • Java?中如何使用?stream?流

    Java?中如何使用?stream?流

    這篇文章主要介紹了Java中如何使用stream流,文章圍繞Stream?API支持的許多操作展開主題,感興趣的小伙伴可以參考一下
    2022-09-09
  • 使用Java實(shí)現(xiàn)通用樹形結(jié)構(gòu)構(gòu)建工具類

    使用Java實(shí)現(xiàn)通用樹形結(jié)構(gòu)構(gòu)建工具類

    這篇文章主要為大家詳細(xì)介紹了如何使用Java實(shí)現(xiàn)通用樹形結(jié)構(gòu)構(gòu)建工具類,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-03-03
  • SpringBoot+本地消息表實(shí)現(xiàn)分布式最終一致性

    SpringBoot+本地消息表實(shí)現(xiàn)分布式最終一致性

    本文主要介紹了SpringBoot+本地消息表實(shí)現(xiàn)分布式最終一致性,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2026-02-02
  • SpringBoot整合Shiro框架,實(shí)現(xiàn)用戶權(quán)限管理

    SpringBoot整合Shiro框架,實(shí)現(xiàn)用戶權(quán)限管理

    Apache Shiro是一個(gè)強(qiáng)大且易用的Java安全框架,執(zhí)行身份驗(yàn)證、授權(quán)、密碼和會(huì)話管理。作為一款安全框架Shiro的設(shè)計(jì)相當(dāng)巧妙。Shiro的應(yīng)用不依賴任何容器,它不僅可以在JavaEE下使用,還可以應(yīng)用在JavaSE環(huán)境中。
    2021-06-06
  • 淺談mybatis如何半自動(dòng)化解耦(推薦)

    淺談mybatis如何半自動(dòng)化解耦(推薦)

    這篇文章主要介紹了淺談mybatis如何半自動(dòng)化解耦,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • Java方法遞歸調(diào)用實(shí)例解析

    Java方法遞歸調(diào)用實(shí)例解析

    這篇文章主要介紹了Java方法遞歸調(diào)用實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • java實(shí)現(xiàn)汽車租賃系統(tǒng)

    java實(shí)現(xiàn)汽車租賃系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)汽車租賃系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • java中幾種常見的排序算法總結(jié)

    java中幾種常見的排序算法總結(jié)

    大家好,本篇文章主要講的是java中幾種常見的排序算法總結(jié),感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • Java Swing組件單選框JRadioButton用法示例

    Java Swing組件單選框JRadioButton用法示例

    這篇文章主要介紹了Java Swing組件單選框JRadioButton用法,結(jié)合具體實(shí)例形式分析了Swing單選框JRadioButton的使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2017-11-11
  • springboot中@component注解的使用實(shí)例

    springboot中@component注解的使用實(shí)例

    這篇文章主要介紹了springboot中@component注解的使用實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03

最新評論

朝阳县| 莱州市| 泸西县| 柏乡县| 乌拉特后旗| 秦安县| 东城区| 郯城县| 荣昌县| 汾西县| 浑源县| 台江县| 龙海市| 宜宾市| 扶沟县| 宁海县| 绵竹市| 台东县| 广丰县| 郎溪县| 江都市| 桃江县| 尚义县| 衡山县| 临汾市| 康马县| 阿瓦提县| 方城县| 镶黄旗| 阿合奇县| 安达市| 长宁区| 阳城县| 洪江市| 大宁县| 兴业县| 沙雅县| 如皋市| 普格县| 大邑县| 丰县|