国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java代碼質(zhì)量分析Sonar

這篇具有很好參考價(jià)值的文章主要介紹了Java代碼質(zhì)量分析Sonar。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。


1. sonar安裝

Java代碼質(zhì)量分析Sonar

1.1 簡(jiǎn)介

sonar是一款靜態(tài)代碼質(zhì)量分析工具,支持Java、Python、PHP、JavaScript、CSS等25種以上的語言,而且能夠集成在IDE、Jenkins、Git等服務(wù)中,方便隨時(shí)查看代碼質(zhì)量分析報(bào)告。

? 通過插件機(jī)制,Sonar 可以集成不同的測(cè)試工具,代碼分析工具,以及持續(xù)集成工具,比如findbugs、Jenkins,通過不同的插件對(duì)這些結(jié)果進(jìn)行再加工處理,通過量化的方式度量代碼質(zhì)量的變化,從而可以方便地對(duì)不同規(guī)模和種類的工程進(jìn)行代碼質(zhì)量管理。

? 簡(jiǎn)單來說,SonarQube是一個(gè)質(zhì)量平臺(tái),用于收集質(zhì)量數(shù)據(jù)(代碼掃描結(jié)果、測(cè)試覆蓋率等),并對(duì)數(shù)據(jù)進(jìn)行各維度的統(tǒng)計(jì)分析。

Java代碼質(zhì)量分析Sonar

1.1.1 客戶端

Sonar的客戶端共有四種

  • Sonar-Scanner:一個(gè)獨(dú)立的掃描器,通過簡(jiǎn)單的命令就能對(duì)項(xiàng)目進(jìn)行靜態(tài)掃描,并將掃描結(jié)果上傳至SonarQube
  • sonar maven:一個(gè)maven插件,能通過maven命令執(zhí)行靜態(tài)掃描。
  • sonar ant插件:ant上的插件。
  • sonar IDE插件:可以直接集成到IDE中(比如IntelliJ)。

1.1.2 sonar 版本區(qū)分

SonarQube除了開源的社區(qū)版之外,還有開發(fā)者版、企業(yè)版和數(shù)據(jù)中心版等不同的發(fā)行版本,以滿足不同類型的客戶需求,以下是根據(jù)SonarSource官網(wǎng)整理的各個(gè)版本之間的差異。

Java代碼質(zhì)量分析Sonar

1.1.2.1 社區(qū)版

? 社區(qū)版就是通常大家所說的開源版本的SonarQube,通過其核心的代碼質(zhì)量和安全問題的掃描能力,以及質(zhì)量門禁的功能,成為了目前代碼靜態(tài)掃描事實(shí)上的標(biāo)準(zhǔn)。

據(jù)有以下功能

  • 60多個(gè)插件
  • DevOps工具鏈集成
  • 代碼質(zhì)量和安全
  • 支持15種語言
  • 支持5種IDE

?

? 此外,開源版支持15種常見的開發(fā)語言,尤其是在互聯(lián)網(wǎng)行業(yè)中廣泛使用Java和JavaScript的情況下,通過與構(gòu)建工具(如maven/gradle插件)以及持續(xù)集成工具(如Jenkins)的集成,基本能滿足個(gè)人和團(tuán)隊(duì)的日常代碼掃描所需。

1.1.2.2 開發(fā)者版

當(dāng)然,在開源社區(qū)版本的基礎(chǔ)上,SonarQube還提供了開發(fā)者版。在全部社區(qū)版功能的基礎(chǔ)上,新增了以下的功能

  • Branch analysis(分支分析)
  • Pull Request decoration(PR/MR注釋)
  • Detection of injection vulnerabilities(注入漏洞探測(cè))
  • SonarLint notifications(SonarLint通知)
  • 22 Programming Languages Covered(尤其新增了c/c++/plsql)
  • Developer Edition is available up to 20M Lines of Code.

對(duì)于金融行業(yè)來說,開發(fā)者版本支持了C/C++以及Oracle PL/SQL這三種語言,這樣就為核心交易類系統(tǒng)以及遺留的業(yè)務(wù)系統(tǒng)展開代碼掃描掃清了障礙。

? 另外一個(gè)非常有用的功能是多分支分析,社區(qū)版主要適合主干開發(fā)的團(tuán)隊(duì),而目前Gitlab/Github-Flow以及特性分支等也非常流行,具備多分支分析能力,讓SonarQube與現(xiàn)有團(tuán)隊(duì)的工作模式更加貼合。

1.1.2.3 企業(yè)版

對(duì)于大型跨國(guó)公司或者是集團(tuán)性企業(yè)來說,開發(fā)者版就有些不夠用了。當(dāng)然,只要肯花錢,SonarQube也還有適用的版本。

  • Portfolio Management(項(xiàng)目集管理)
  • Executive Reporting(管理層報(bào)告)
  • Security Reports(安全報(bào)告)
  • Project Transfer(項(xiàng)目匯聚)
  • 27 Programming Languages Covered
  • Enterprise Edition is available up to 100M Lines of Code.

? 從上述特性清單來看,企業(yè)版主要是關(guān)注于管理層面的增強(qiáng)了。例如,多個(gè)應(yīng)用可以匯聚成一條產(chǎn)品線或者事業(yè)部,通過其項(xiàng)目集管理也可以把若干個(gè)SonarQube項(xiàng)目匯聚到一個(gè)統(tǒng)計(jì)口徑之下。

1.2 安裝部署

1.2.1 修改文件句柄數(shù)

系統(tǒng)配置,避免啟動(dòng)問題

# 系統(tǒng)配置,避免啟動(dòng)問題
echo "vm.max_map_count=262144" >> /etc/sysctl.conf
sysctl -p

1.2.2 創(chuàng)建掛載目錄

mkdir -p ~/sonarqube && cd ~/sonarqube
# 創(chuàng)建所有的sonarqube映射文件
mkdir -p ~/sonarqube/postgres && \
mkdir -p ~/sonarqube/data && \
mkdir -p ~/sonarqube/extensions && \
mkdir -p ~/sonarqube/logs && \
mkdir -p ~/sonarqube/conf
# 創(chuàng)建數(shù)據(jù)庫掛載
mkdir -p ~/sonarqube/postgresql &&\
mkdir -p ~/sonarqube/datasql
# 目錄設(shè)置為 777 權(quán)限,避免權(quán)限問題
chmod 777  ~/sonarqube/*

1.2.3 創(chuàng)建docker-compose.yml

vi ~/sonarqube/docker-compose.yml
version: '3'
services:
  postgres:
    image: postgres:9.6.24
    restart: always
    container_name: sonarqube_postgres
    ports:
      - 5432:5432
    volumes:
      - ~/sonarqube/postgresql/:/var/lib/postgresql
      - ~/sonarqube/datasql/:/var/lib/postgresql/data
    environment:
      TZ: Asia/Shanghai
      POSTGRES_USER: sonar
      POSTGRES_PASSWORD: sonar
      POSTGRES_DB: sonar
    networks:
      - sonar-network
  sonar:
    image: sonarqube:8.9.9-community
    restart: always
    container_name: sonarqube
    depends_on:
      - postgres
    volumes:
      - ~/sonarqube/extensions:/opt/sonarqube/extensions
      - ~/sonarqube/logs:/opt/sonarqube/logs
      - ~/sonarqube/data:/opt/sonarqube/data
      - ~/sonarqube/conf:/opt/sonarqube/conf
    ports:
      - 9000:9000
    environment:
      SONARQUBE_JDBC_USERNAME: sonar
      SONARQUBE_JDBC_PASSWORD: sonar
      SONARQUBE_JDBC_URL: jdbc:postgresql://postgres:5432/sonar
    networks:
      - sonar-network
networks:
  sonar-network:
    driver: bridge

1.2.4 啟動(dòng)

docker-compose up -d
1.2.4.1 訪問測(cè)試

瀏覽器訪問:ip+端口,如:192.168.245.139:9000,賬號(hào)密碼都是 admin

Java代碼質(zhì)量分析Sonar

登錄后進(jìn)入項(xiàng)目頁面

Java代碼質(zhì)量分析Sonar

1.2.5 安裝插件

可以進(jìn)入應(yīng)用市場(chǎng)下載一些常見的插件,一般是通過github下載,可能出現(xiàn)現(xiàn)在不下來的情況,可以手動(dòng)下載后將jar包放進(jìn)對(duì)應(yīng)的extensions/downloads下載目錄就可以,然后點(diǎn)擊install就可以進(jìn)行安裝了

Java代碼質(zhì)量分析Sonar

1.2.5.1 漢化插件

Chinese Pack是一個(gè)sonar的漢化插件,安裝后就可以體驗(yàn)中文界面了,以下是各版本的對(duì)應(yīng)關(guān)系

SonarQube 9.0 9.1 9.2
sonar-l10n-zh 9.0 9.1 9.2
SonarQube 8.0 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9
sonar-l10n-zh 8.0 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9
SonarQube 7.0 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9
sonar-l10n-zh 1.20 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29
SonarQube 6.0 6.1 6.2 6.3 6.4 6.5 6.6 6.7
sonar-l10n-zh 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19
SonarQube 5.4 5.5 5.6
sonar-l10n-zh 1.9 1.10 1.11
SonarQube 4.0 4.1
sonar-l10n-zh 1.7 1.8
SonarQube 3.1 3.2 3.3 3.4 3.5 3.6 3.7
sonar-l10n-zh 1.0 1.1 1.2 1.3 1.4 1.5 1.6

下載地址:https://github.com/xuhuisheng/sonar-l10n-zh,找到對(duì)應(yīng)的版本下載后上傳到dowload文件夾

Java代碼質(zhì)量分析Sonar

在應(yīng)用市場(chǎng)進(jìn)行重啟即可

Java代碼質(zhì)量分析Sonar

再次訪問就變成了中文界面了

Java代碼質(zhì)量分析Sonar

1.3 靜態(tài)分析插件介紹

1.3.1 什么是靜態(tài)代碼分析

? 靜態(tài)代碼分析是指無需運(yùn)行被測(cè)代碼,僅通過分析或檢查源程序的語法、結(jié)構(gòu)、過程、接口等來檢查程序的正確性,找出代碼隱藏的錯(cuò)誤和缺陷,如參數(shù)不匹配,有歧義的嵌套語句,錯(cuò)誤的遞歸,非法計(jì)算,可能出現(xiàn)的空指針引用等等。

? 在軟件開發(fā)過程中,靜態(tài)代碼分析往往先于動(dòng)態(tài)測(cè)試之前進(jìn)行,同時(shí)也可以作為制定動(dòng)態(tài)測(cè)試用例的參考。統(tǒng)計(jì)證明,在整個(gè)軟件開發(fā)生命周期中,30% 至 70% 的代碼邏輯設(shè)計(jì)和編碼缺陷是可以通過靜態(tài)代碼分析來發(fā)現(xiàn)和修復(fù)的。

? 但是,由于靜態(tài)代碼分析往往要求大量的時(shí)間消耗和相關(guān)知識(shí)的積累,因此對(duì)于軟件開發(fā)團(tuán)隊(duì)來說,使用靜態(tài)代碼分析工具自動(dòng)化執(zhí)行代碼檢查和分析,能夠極大地提高軟件可靠性并節(jié)省軟件開發(fā)和測(cè)試成本。

1.3.1.1 靜態(tài)代碼分析優(yōu)勢(shì)
  1. 幫助程序開發(fā)人員自動(dòng)執(zhí)行靜態(tài)代碼分析,快速定位代碼隱藏錯(cuò)誤和缺陷。
  2. 幫助代碼設(shè)計(jì)人員更專注于分析和解決代碼設(shè)計(jì)缺陷。
  3. 顯著減少在代碼逐行檢查上花費(fèi)的時(shí)間,提高軟件可靠性并節(jié)省軟件開發(fā)和測(cè)試成本。

1.3.2 java靜態(tài)分析插件

1.3.2.1 Checkstyle

? Checkstyle 是 SourceForge 的開源項(xiàng)目,通過檢查對(duì)代碼編碼格式,命名約定,Javadoc,類設(shè)計(jì)等方面進(jìn)行代碼規(guī)范和風(fēng)格的檢查,從而有效約束開發(fā)人員更好地遵循代碼編寫規(guī)范。

? 此外,Checkstyle 支持用戶根據(jù)需求自定義代碼檢查規(guī)范,在配置面板中,用戶可以在已有檢查規(guī)范如命名約定,Javadoc,塊,類設(shè)計(jì)等方面的基礎(chǔ)上添加或刪除自定義檢查規(guī)范。

檢查內(nèi)容

  • Javadoc 注釋:檢查類及方法的 Javadoc 注釋
  • 命名約定:檢查命名是否符合命名規(guī)范
  • 標(biāo)題:檢查文件是否以某些行開頭
  • Import 語句:檢查 Import 語句是否符合定義規(guī)范
  • 代碼塊大小,即檢查類、方法等代碼塊的行數(shù)
  • 空白:檢查空白符,如 tab,回車符等
  • 修飾符:修飾符號(hào)的檢查,如修飾符的定義順序
  • 塊:檢查是否有空塊或無效塊
  • 代碼問題:檢查重復(fù)代碼,條件判斷,魔數(shù)等問題
  • 類設(shè)計(jì):檢查類的定義是否符合規(guī)范,如構(gòu)造函數(shù)的定義等問題
1.3.2.2 FindBugs

? FindBugs 是由馬里蘭大學(xué)提供的一款開源 Java 靜態(tài)代碼分析工具,F(xiàn)indBugs 通過檢查類文件或 JAR 文件,將字節(jié)碼與一組缺陷模式進(jìn)行對(duì)比從而發(fā)現(xiàn)代碼缺陷,完成靜態(tài)代碼分析,F(xiàn)indBugs 既提供可視化 UI 界面,同時(shí)也可以作為 Idea 插件使用。

檢查內(nèi)容

  • Bad practice 壞的實(shí)踐:常見代碼錯(cuò)誤,用于靜態(tài)代碼檢查時(shí)進(jìn)行缺陷模式匹配
  • Correctness 可能導(dǎo)致錯(cuò)誤的代碼,如空指針引用等
  • 國(guó)際化相關(guān)問題:如錯(cuò)誤的字符串轉(zhuǎn)換
  • 可能受到的惡意攻擊,如訪問權(quán)限修飾符的定義等
  • 多線程的正確性:如多線程編程時(shí)常見的同步,線程調(diào)度問題。
  • 運(yùn)行時(shí)性能問題:如由變量定義,方法調(diào)用導(dǎo)致的代碼低效問題。
1.3.2.3 PMD

? PMD 是由 DARPA 在 SourceForge 上發(fā)布的開源 Java 代碼靜態(tài)分析工具,PMD 通過其內(nèi)置的編碼規(guī)則對(duì) Java 代碼進(jìn)行靜態(tài)檢查,主要包括對(duì)潛在的 bug,未使用的代碼,重復(fù)的代碼,循環(huán)體創(chuàng)建新對(duì)象等問題的檢驗(yàn)。

檢查內(nèi)容

  • 可能的 Bugs:檢查潛在代碼錯(cuò)誤,如空 try/catch/finally/switch 語句
  • 未使用代碼(Dead code):檢查未使用的變量,參數(shù),方法
  • 復(fù)雜的表達(dá)式:檢查不必要的 if 語句,可被 while 替代的 for 循環(huán)
  • 重復(fù)的代碼:檢查重復(fù)的代碼
  • 循環(huán)體創(chuàng)建新對(duì)象:檢查在循環(huán)體內(nèi)實(shí)例化新對(duì)象
  • 資源關(guān)閉:檢查 Connect,Result,Statement 等資源使用之后是否被關(guān)閉掉

1.3.3 幾種插件對(duì)比

1.3.3.1 技術(shù)對(duì)比
Java 靜態(tài)分析工具 分析對(duì)象 應(yīng)用技術(shù)
Checkstyle Java 源文件 缺陷模式匹配
FindBugs 字節(jié)碼 缺陷模式匹配;數(shù)據(jù)流分析
PMD Java 源代碼 缺陷模式匹配
1.3.3.2 分析對(duì)比
代碼缺陷分類 示例 Checkstyle FindBugs PMD
引用操作 空指針引用
對(duì)象操作 對(duì)象比較(使用 == 而不是 equals)
表達(dá)式復(fù)雜化 多余的 if 語句
數(shù)組使用 數(shù)組下標(biāo)越界
未使用變量或代碼段 未使用變量
資源回收 I/O 未關(guān)閉
方法調(diào)用 未使用方法返回值
代碼設(shè)計(jì) 空的 try/catch/finally 塊

2. Sonar使用

2.1 Maven代碼掃描

2.1.1 創(chuàng)建項(xiàng)目

點(diǎn)擊創(chuàng)建項(xiàng)目就可以創(chuàng)建一個(gè)項(xiàng)目,為項(xiàng)目創(chuàng)建令牌

Java代碼質(zhì)量分析Sonar

選擇手工創(chuàng)建項(xiàng)目即可

Java代碼質(zhì)量分析Sonar

點(diǎn)擊手工后,輸入項(xiàng)目標(biāo)識(shí)符以及項(xiàng)目名稱,標(biāo)識(shí)符是為了區(qū)分不同的項(xiàng)目,輸入完成后,在輸入令牌點(diǎn)擊創(chuàng)建即可

Java代碼質(zhì)量分析Sonar

創(chuàng)建令牌后,會(huì)生成一個(gè)token,這個(gè)token是需要保存的,只會(huì)在這里顯示一次

Java代碼質(zhì)量分析Sonar

2.1.2 Maven 分析項(xiàng)目

2.1.2.1 生成sonar分析的命令

點(diǎn)擊后面的Maven分析項(xiàng)目,會(huì)生成一個(gè)maven分析項(xiàng)目的命令保存下來

Java代碼質(zhì)量分析Sonar

mvn sonar:sonar \
  -Dsonar.projectKey=taxi \
  -Dsonar.host.url=http://192.168.245.139:9000 \
  -Dsonar.login=7aafcd2c4da5c2e80bde66a3a0970d3278d359d6
2.1.2.2 項(xiàng)目配置 Sonar

我們需要配置 Maven 的 setting.xml文件,增加 sonarQube 配置

<!-- Apache Maven 配置 -->
<pluginGroups>
    <pluginGroup>com.spotify</pluginGroup>
    <!-- 添加一個(gè)maven掃描的配置 -->
    <pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
</pluginGroups>
<profiles>
    <profile>
        <id>sonar</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
           <!-- 配置 Sonar Host地址,默認(rèn):http://localhost:9000 -->
            <sonar.host.url>
                http://192.168.245.139:9000
            </sonar.host.url>
        </properties>
    </profile>
</profiles>
2.1.2.3 單元測(cè)試覆蓋率

項(xiàng)目中一般要求需要編寫測(cè)試用例,可以使用sonar統(tǒng)計(jì)單元測(cè)試的覆蓋率,需要在maven項(xiàng)目由以下配置

<plugin>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <version>0.8.8</version>
    <executions>
        <execution>
            <id>prepare-agent</id>
            <goals>
                <goal>prepare-agent</goal>
            </goals>
        </execution>
        <execution>
            <id>report</id>
            <phase>prepare-package</phase>
            <goals>
                <goal>report</goal>
            </goals>
        </execution>
        <execution>
            <id>post-unit-test</id>
            <phase>test</phase>
            <goals>
                <goal>report</goal>
            </goals>
            <configuration>
                <dataFile>target/jacoco.exec</dataFile>
                <outputDirectory>target/jacoco-reports</outputDirectory>
            </configuration>
        </execution>
    </executions>
    <configuration>
        <systemPropertyVariables>
            <jacoco-agent.destfile>target/jacoco.exec</jacoco-agent.destfile>
        </systemPropertyVariables>
    </configuration>
</plugin>

2.1.3 執(zhí)行掃描任務(wù)

2.1.3.1 沒有單元測(cè)試覆蓋率

配置完成setting.xml后就可以到項(xiàng)目中執(zhí)行maven的執(zhí)行命令了,可以執(zhí)行以下命令

mvn sonar:sonar -Dsonar.projectKey=hitch  -Dsonar.login=7c73f9b0176966c98ae9f52f129a3123227af29e

然后在項(xiàng)目中執(zhí)行相關(guān)命令

Java代碼質(zhì)量分析Sonar

執(zhí)行后就可以等待sonar掃描即可

Java代碼質(zhì)量分析Sonar

掃描完成后就可以看到分析的項(xiàng)目問題了

Java代碼質(zhì)量分析Sonar

2.1.3.1 單元測(cè)試覆蓋率

配置完成項(xiàng)目后,就需要執(zhí)行sonar掃描命令了,如果需要單元測(cè)試執(zhí)行如下命令

mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent install -Dmaven.test.failure.ignore=true -Dsonar.core.codeCoveragePlugin=jacoco -Dsonar.projectKey=robocode -Dsonar.login=7e469127ed58539844f1c68dd0cb77f60e02d0e6 sonar:sonar 

在項(xiàng)目中執(zhí)行maven命令

Java代碼質(zhì)量分析Sonar

執(zhí)行后就可以等待sonar掃描完成即可

Java代碼質(zhì)量分析Sonar

掃描完成后就可以看到分析的項(xiàng)目問題了

Java代碼質(zhì)量分析Sonar

2.2 使用SonarLint

? SonarLint是一款強(qiáng)大快速的能幫助開發(fā)者發(fā)現(xiàn)代碼里的bug或是代碼質(zhì)量?jī)?yōu)化點(diǎn)的擴(kuò)展工具。支持很多主流的語言:JAVA、js、PHP、Python,也支持主流的IDE們,idea、Eclipse、vs。在idea里更是以插件的形式無縫接入。

2.2.1 掃描模式區(qū)別

2.2.1.1 獨(dú)立模式

使用插件內(nèi)置規(guī)則進(jìn)行檢查,由于剛安裝完插件之后設(shè)置是默認(rèn)打開自動(dòng)檢測(cè)的,所以現(xiàn)在你的最底層工具欄里應(yīng)該會(huì)多一項(xiàng)sonarlint,你打開不同的Java文件,檢測(cè)會(huì)自動(dòng)進(jìn)行 ,檢測(cè)結(jié)果也會(huì)直接展示在那里。

  • 優(yōu)點(diǎn):無須配置,開箱即用,檢查速度快;
  • 缺點(diǎn):內(nèi)置規(guī)則與SonarQube服務(wù)器規(guī)則的不一致,會(huì)造成檢查結(jié)果的不一致。

使用

Java代碼質(zhì)量分析Sonar

2.2.1.2 連接模式

需連接SonarQube服務(wù)器

  • 優(yōu)點(diǎn):簡(jiǎn)單配置后,即可使用SonarQube服務(wù)器的規(guī)則和配置項(xiàng)進(jìn)行檢查,檢查結(jié)果保持最大一致。
  • 缺點(diǎn):項(xiàng)目需先接入SonarQube。

2.2.2 安裝插件

打開IDEA,F(xiàn)ile-> Setteings->Plugins,在搜索欄搜索SonarLint,然后安裝,安裝完后點(diǎn)擊Restart IntelliJ IDEA重啟idea

Java代碼質(zhì)量分析Sonar

2.2.3 配置SonarLint

對(duì)于企業(yè)級(jí)的開發(fā),很多企業(yè)可能對(duì)代碼風(fēng)格和檢查項(xiàng)有自己的要求。這就可以為公司的開發(fā)者提供sonarqube服務(wù)器,在其上進(jìn)行配置,然后開發(fā)者連接以后就可以讓sonarlint按照公司的定義來進(jìn)行檢查了。

2.2.3.1 添加sonarqube server

依次點(diǎn)擊File–>Settings–>Other Settings–>SonarLint General Settings,并進(jìn)行如下操作:

Java代碼質(zhì)量分析Sonar

配置本地nodejs.exe,然后添加sonarqube服務(wù)器

Java代碼質(zhì)量分析Sonar

2.2.3.2 配置項(xiàng)目

輸入剛剛創(chuàng)建的Token

Java代碼質(zhì)量分析Sonar

最后選擇對(duì)應(yīng)的projectKey即可

Java代碼質(zhì)量分析Sonar

可以配置響應(yīng)的模塊來查看進(jìn)行檢測(cè)項(xiàng)目

Java代碼質(zhì)量分析Sonar

2.2.4 聯(lián)動(dòng)測(cè)試

使用了連接模式后,我們對(duì)于sonarqube服務(wù)求上面的規(guī)則變更會(huì)反映到我們的本地sonarlint插件上

2.2.4.1 分析代碼

該類存在四個(gè)空指針的問題,我們假設(shè)改代碼不會(huì)出現(xiàn)空指針問題

Java代碼質(zhì)量分析Sonar

2.2.4.2 關(guān)閉服務(wù)器bug

我們到sonarqube將該問題給改為不會(huì)修復(fù),并點(diǎn)擊評(píng)論即可

Java代碼質(zhì)量分析Sonar

2.2.4.3 查看本地掃描結(jié)果

再次來查看下本地的掃描結(jié)果,發(fā)現(xiàn)該bug提示已經(jīng)消失。

Java代碼質(zhì)量分析Sonar

2.3 指標(biāo)分析

2.3.1 總覽

Java代碼質(zhì)量分析Sonar

2.3.2 質(zhì)量閾值

表示掃描是否通過,如果沒有通過會(huì)顯示失敗,就需要進(jìn)行修改代碼了

2.3.3 可靠性

可靠性主要反應(yīng)代碼的bug數(shù)量,分為A-E五個(gè)等級(jí),計(jì)算規(guī)則如下

  • A :0 Bug 最高等級(jí)A,表示代碼無bug
  • B :at least 1 Minor Bug 代碼只要有一個(gè)次要bug,等級(jí)就為B
  • C:at least 1 Major Bug 只要包含一個(gè)重要bug,等級(jí)將為C
  • D:at least 1 Critical Bug 只要有一個(gè)嚴(yán)重bug,等級(jí)評(píng)估為D
  • E:at least 1 Blocker Bug 只要有一個(gè)最高等級(jí)的阻斷級(jí)別的bug,可靠性評(píng)估為E,最低級(jí)別

2.3.4 漏洞嚴(yán)重級(jí)別

2.3.4.1 阻斷

直接獲取重要服務(wù)器(客戶端)權(quán)限的漏洞。

? 包括但不限于遠(yuǎn)程任意命令執(zhí)行、上傳 webshell、可利用遠(yuǎn)程緩沖區(qū)溢出、可利用的 ActiveX 堆棧溢出、可利用瀏覽器 use after free 漏洞、可利用遠(yuǎn)程內(nèi)核代碼執(zhí)行漏洞以及其它因邏輯問題導(dǎo)致的可利用的遠(yuǎn)程代碼執(zhí)行漏洞; 直接導(dǎo)致嚴(yán)重的信息泄漏漏洞,包括但不限于重要系統(tǒng)中能獲取大量信息的SQL注入漏洞; 能直接獲取目標(biāo)單位核心機(jī)密的漏洞。

2.3.4.2 嚴(yán)重

直接獲取普通系統(tǒng)權(quán)限的漏洞

? 包括但不限于遠(yuǎn)程命令執(zhí)行、代碼執(zhí)行、上傳webshell、緩沖區(qū)溢出等; 嚴(yán)重的邏輯設(shè)計(jì)缺陷和流程缺陷。包括但不限于任意賬號(hào)密碼修改、重要業(yè)務(wù)配置修改、泄露; 可直接批量盜取用戶身份權(quán)限的漏洞。包括但不限于普通系統(tǒng)的SQL注入、用戶訂單遍歷; 嚴(yán)重的權(quán)限繞過類漏洞。包括但不限于繞過認(rèn)證直接訪問管理后臺(tái)、cookie欺騙。 運(yùn)維相關(guān)的未授權(quán)訪問漏洞,包括但不限于后臺(tái)管理員弱口令、服務(wù)未授權(quán)訪問

2.3.4.3 重要

需要在一定條件限制下,能獲取服務(wù)器權(quán)限、網(wǎng)站權(quán)限與核心數(shù)據(jù)庫數(shù)據(jù)的操作

? 包括但不限于交互性代碼執(zhí)行、一定條件下的注入、特定系統(tǒng)版本下的getshell等; 任意文件操作漏洞。包括但不限于任意文件寫、刪除、下載,敏感文件讀取等操作; 水平權(quán)限繞過,包括但不限于繞過限制修改用戶資料、執(zhí)行用戶操作。

2.3.4.4 次要

能夠獲取一些數(shù)據(jù),但不屬于核心數(shù)據(jù)的操作

? 在條件嚴(yán)苛的環(huán)境下能夠獲取核心數(shù)據(jù)或者控制核心業(yè)務(wù)的操作, 需要用戶交互才可以觸發(fā)的漏洞,包括但不限于XSS漏洞、CSRF漏洞、點(diǎn)擊劫持。

2.3.5 安全性

安全性主要反應(yīng)代碼中可能存在的漏洞的數(shù)量

2.3.5.1 熱點(diǎn)和漏洞

熱點(diǎn)和漏洞之間的主要區(qū)別:在決定是否應(yīng)用修復(fù)之前需要進(jìn)行審查

2.3.5.2 安全熱點(diǎn)

可以突出顯示安全敏感的一段代碼,但可能不會(huì)影響整體應(yīng)用程序安全性。由開發(fā)人員審查代碼以確定是否需要修復(fù)以保護(hù)代碼。

2.3.5.3 漏洞

已發(fā)現(xiàn)需要立即修復(fù)的影響應(yīng)用程序安全性的問題文章來源地址http://www.zghlxwxcb.cn/news/detail-491062.html

到了這里,關(guān)于Java代碼質(zhì)量分析Sonar的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Sonar】使用SonarQube檢測(cè)Vue項(xiàng)目代碼

    【Sonar】使用SonarQube檢測(cè)Vue項(xiàng)目代碼

    本文以Vue項(xiàng)目為例,介紹了如何配置Sonarqube檢測(cè)工具環(huán)境 GitHub倉庫 https://docs.sonarqube.org/latest/requirements/requirements/ sonarqube運(yùn)行依賴Java環(huán)境 推薦Java 11 Sonarqube支持連接數(shù)據(jù)庫輸出檢測(cè)結(jié)果,但目前涉及的功能中并未使用到數(shù)據(jù)庫 下載 https://www.sonarqube.org/downloads/ 版本:本教程使

    2024年02月11日
    瀏覽(24)
  • sonar8.9版本 win10安裝使用手冊(cè)

    sonar8.9版本 win10安裝使用手冊(cè)

    1. 安裝包準(zhǔn)備: 注意:不同版本之間是有兼容性問題的,可參考官方推薦版本 下載地址 sonarqube 版本:8.9.9.56886 說明:snoar服務(wù)器 sonar-pdfplugin 版本:3.x 說明:測(cè)試報(bào)告生成pdf插件 sonarscanner 版本:4.7.0.2747-windows 說明:掃描器 sonarqube-community-branch-plugin-1.8.0.jar 說明:指定掃描

    2024年01月23日
    瀏覽(41)
  • sonar覆蓋率、代碼覆蓋率、分支覆蓋率的計(jì)算方式

    sonar覆蓋率、代碼覆蓋率、分支覆蓋率的計(jì)算方式

    代碼質(zhì)量的覆蓋率分為三種,覆蓋率、代碼覆蓋率、分支覆蓋率,那每一種的計(jì)算方式是怎么樣的呢? 舉例: 上面最有疑惑的是覆蓋率,不知道怎么算出了來的,后面再說。 通過sonarqube可以分析出: 指標(biāo) 值 可覆蓋行(lines_to_cover) 13242 未覆蓋的代碼(uncovered_lines) 7943 可

    2024年02月06日
    瀏覽(23)
  • Sonar+postsql的安裝配置,centos7.9系統(tǒng)

    Sonar+postsql的安裝配置,centos7.9系統(tǒng)

    1.安裝postsql15 2.進(jìn)入postgres并且,創(chuàng)建sonar數(shù)據(jù)庫 3.下載sonar安裝包(java版本為java17) https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-9.9.4.87374.zip 下載完成后上傳到linux服務(wù)器中 4.準(zhǔn)備環(huán)境并且配置相關(guān)配置 5. 啟動(dòng)sonar使用sonar用戶啟動(dòng) 6.啟動(dòng)成功,訪問 192.168.118.182:9000 (端口可

    2024年04月18日
    瀏覽(34)
  • jenkins+sonar配置

    jenkins+sonar配置

    Sonar Scanner 用于掃描項(xiàng)目 1、sonar生成token ?生成完保存好,刷新后無法查看 2、jenkins配置全局憑據(jù) 3、jenkins配置系統(tǒng)設(shè)置 ? ?

    2024年04月13日
    瀏覽(19)
  • sonar搭建(linux系統(tǒng))

    sonar搭建(linux系統(tǒng))

    靜態(tài)代碼掃描是CI/CD中重要的一環(huán),可以在代碼提交到代碼倉庫之后,在CI/CD流程中加入代碼掃描步驟,從而及時(shí)地對(duì)代碼進(jìn)行質(zhì)量的檢查。這可以有效地降低后期維護(hù)成本,優(yōu)化產(chǎn)品質(zhì)量,提高產(chǎn)品交付速度。同時(shí),靜態(tài)代碼掃描還可以將代碼問題自動(dòng)通知給開發(fā)人員,使得

    2024年04月11日
    瀏覽(17)
  • jenkins+sonar

    jenkins集成sonar流水線部署_sonar jenkins-CSDN博客 jenkins+sonar 實(shí)現(xiàn)代碼檢測(cè)_jenkins sonar_dsdasun的博客-CSDN博客 SonarQube中的sonar.java.binaries用法介紹_筆記大全_設(shè)計(jì)學(xué)院

    2024年02月08日
    瀏覽(30)
  • Jenkins集成Sonar Qube

    Jenkins集成Sonar Qube

    2024年01月17日
    瀏覽(38)
  • sonar靜態(tài)掃描安全靶場(chǎng)webgoat

    sonar靜態(tài)掃描安全靶場(chǎng)webgoat

    docker安裝sonarqube,sonarQube靜態(tài)代碼掃描 - Joson6350 - 博客園 (cnblogs.com) 掃描結(jié)果? 意思是這里的else if語句不會(huì)執(zhí)行,因?yàn)閕pAddressKnow為true,所以if 和else if的條件結(jié)果是一樣的。 提示資源沒有關(guān)閉,需要在finally中進(jìn)行資源關(guān)閉,但是把資源關(guān)閉放到finally中由提示這樣寫不規(guī)范有

    2024年02月04日
    瀏覽(15)
  • Docker sonar9.x 啟動(dòng)失敗

    使用的鏡像:sonarqube:lastest / sonarqube:9.8-community ,9.x 版本應(yīng)該都會(huì)報(bào)錯(cuò) 啟動(dòng)命令(只是為了看能都啟動(dòng)成功) docker run sonarqube 報(bào)錯(cuò)如下 2023.02.04 01:55:35 INFO app[][o.s.a.AppFileSystem] Cleaning or creating temp directory /opt/sonarqube/temp 2023.02.04 01:55:35 INFO app[][o.s.a.es.EsSettings] Elasticsearch listen

    2024年01月19日
    瀏覽(9)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包