<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ## :-: 采用SonarQube進行代碼規范及單元測試覆蓋率檢查 ## 一、SonarQube安裝 ### 1.1 臨時修改配置 sysctl -w vm.max_map_count=262144 ### 1.2 docker-compose up -d ``` version: "3" services: postgres: image: postgres:12 networks: - sonarnet restart: always container_name: postgres ports: - "5432:5432" environment: - POSTGRES_USER=sonar - POSTGRES_PASSWORD=sonar volumes: - postgresql_data:/var/lib/postgresql/data sonarqube: image: sonarqube:8.2-community ports: - "9000:9000" networks: - sonarnet restart: always container_name: sonar depends_on: - postgres environment: SONARQUBE_JDBC_USERNAME: sonar SONARQUBE_JDBC_PASSWORD: sonar SONARQUBE_JDBC_URL: jdbc:postgresql://postgres:5432/sonar volumes: - sonarqube_conf:/opt/sonarqube/conf - sonarqube_data:/opt/sonarqube/data - sonarqube_extensions:/opt/sonarqube/extensions - sonarqube_bundled-plugins:/opt/sonarqube/lib/bundled-plugins networks: sonarnet: driver: bridge volumes: sonarqube_conf: sonarqube_data: sonarqube_extensions: sonarqube_bundled-plugins: postgresql_data: ``` ### 1.3 訪問 http://ip:9000,管理員默認賬號和密碼為admin/admin ![](https://img.kancloud.cn/cd/91/cd91dc026a1fd9219dd98f2d7e21f6ec_1704x420.jpg) ### 1.4 中文插件安裝 ![](https://img.kancloud.cn/84/db/84db16f67e4eeec619d494e7b091ff32_1656x850.jpg) ## 二、SonarQube安裝P3C插件 ### 2.1 下載插件代碼并構建 ``` >git clone https://github.com/rhinoceros/sonar-p3c-pmd >cd sonar-pmd-p3c >mvn clean install -Dmaven.test.skip=true ``` 注意:驗證時是直接從https://github.com/rhinoceros/sonar-p3c-pmd/tags下載的`pmd-3.2.0-beta-with-p3c1.3.6-pmd6.10.0` ### 2.2 安裝插件 注意:由于sonar-pmd-p3c是在sonar-pmd-plugin基礎上修改的,所以如果已安裝sonar-pmd-plugin,需要先刪除原插件。 ``` >rm -f /opt/sonarqube/extensions/plugins/sonar-pmd* >cp sonar-pmd-p3c/target/sonar-pmd-plugin-3.2.1.jar /opt/sonarqube/extensions/plugins ``` ### 2.3 配置 * 重啟 SonarQube,打開 質量配置`Quality Profiles`頁,點擊右上方的`創建`按鈕,創建`p3c profiles` ![](https://img.kancloud.cn/3b/b2/3bb242a7b4725006c1306e8a3d87a725_2654x1348.png) * 首次創建會跳轉到代碼規則配置頁面,剛新建的 profile 是沒有激活任何規則的,需要手動激活 ![](https://img.kancloud.cn/c7/32/c73215c5c0cecb7142b2e9a9b5a39d5b_2676x1590.png) * 跳轉到激活頁面,搜索p3c,如圖,都是以`[p3c]`開頭的規則 ![](https://img.kancloud.cn/e9/6a/e96ab48d63d7964c0390f0d06ce11c8e_2846x1554.png) * 批量修改->活動 p3c -> 應用 -> 成功 ![](https://img.kancloud.cn/83/28/8328a239b96c6c8d29034dcd26e39b0b_2680x1564.png) ![](https://img.kancloud.cn/4c/3c/4c3c4ea38f18e21080a570e364c0a71d_2670x1414.png) * 綁定規則成功后基本完成,我們返回`質量配置`,在`java`選擇剛設置的`p3c`設置為默認 ![](https://img.kancloud.cn/a2/88/a2885e08f525719dcce11369a0e50e9f_2692x1704.png) ## 三、單元測試報告插件介紹 * 項目pom.xml配置 ``` <!--不顯示引入,在執行 mvn test 命令時也會自動引入maven-surefire-plugin--> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <!--忽略mvn test 命令--> <skip>false</skip> <includes> <include>**/*Test.java</include> </includes> <argLine>${surefireArgLine}</argLine> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-report-plugin</artifactId> <configuration> <aggregate>true</aggregate> </configuration> </plugin> </plugins> </build> ``` * 結果查看 surefire 插件會在mvn test命令后在/target/surefire-reports目錄中生成XML和TXT的單元測試報告,maven-surefire-report-plugin插件會把target/surefire-reports下的所有xml報告轉換成一份html格式的文件。并將這個html格式的測試報告保存在target/site目錄下如下: **注意:maven-surefire-report-plugin插件需要單獨執行mvn surefire-report:report** ![](https://img.kancloud.cn/41/d5/41d570abda43b3bc5a4ae025ee693b2b_695x620.jpg) ## 四、代碼覆蓋率插件介紹 Java中常用的代碼覆蓋率統計的插件有 JaCoCo 與Cobertura,推薦使用JaCoCo,下面是兩者對比: ![](https://img.kancloud.cn/cf/84/cf84ce2c7447e15bf7b0ac6b8e45537c_1534x884.png) * 項目pom.xml配置 ``` <build> <plugins> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <executions> <execution> <id>pre-unit-test</id> <goals> <goal>prepare-agent</goal> </goals> <configuration> <propertyName>surefireArgLine</propertyName> </configuration> </execution> <execution> <id>post-unit-test</id> <phase>test</phase> <goals> <goal>report</goal> </goals> <configuration> <dataFile>${basedir}/target/jacoco.exec</dataFile> <outputDirectory>${basedir}/target/site/jacoco</outputDirectory> </configuration> </execution> </executions> </plugin> </plugins> </build> ``` * 結果查看 執行 mvn test命令后在/target/jacoco.exec生成記錄文件,同時會將代碼執行情況文件轉換生成為 jacoco 報表,在/target/site/jacoco目錄下。 ![](https://img.kancloud.cn/9a/24/9a243ec480a00385c5cd002c8a010c06_669x853.jpg) ## 五、代碼檢查 `sonarqube`可以使用多種方式進行代碼檢查,我們使用簡單的`Maven`觸發代碼檢查。步驟如下: 1、maven 對項目進行編譯打包,并執行單元測試用例,mvn test package install 2、自動執行surfile 和 jacoco 插件 3、使用 mvn sonar:sonar 命令,將代碼覆蓋率報表推送到 sonarqube 平臺 4、登錄 sonarqube 查看代碼覆蓋率統計報告(也可以本地訪問 jacoco/index.html 直接查看報告) * 項目pom.xml配置 ``` <!--不顯示引入,在執行MAVEN命令時也會自動引入--> <build> <plugins> <plugin> <groupId>org.sonarsource.scanner.maven</groupId> <artifactId>sonar-maven-plugin</artifactId> <version>3.6.0.1398</version> </plugin> </plugins> </build> ``` ``` <profiles> <profile> <id>sonar</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <sonar.host.url>http://ip:9000</sonar.host.url> <!--如果sonarQube項目配置的允許Anyone執行分析,則以下屬性不配置--> <sonar.login>yjj</sonar.login> <sonar.password>yjj</sonar.password> </properties> </profile> </profiles> ``` * 先構建項目`mvn package`,注意package時要同時執行`mvn test`,再執行`mvn sonar:sonar` ![](https://img.kancloud.cn/e2/5f/e25fd5e276e98b692361be6d33af8396_1296x922.png) * 查看報告 ![](https://img.kancloud.cn/b3/9c/b39c5dcd0e18a254afec716787308dfc_1688x587.jpg) 可以看到上傳的項目列表,選擇項目查看分析結果,項目健康狀態,代碼覆蓋率等信息 ![](https://img.kancloud.cn/2d/0d/2d0de61fb173cf0d38eadeda4fad2133_1727x1060.jpg)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看