1. 程式人生 > >Jenkins+findbugs對java程式碼進行靜態程式碼分析

Jenkins+findbugs對java程式碼進行靜態程式碼分析

一、POM.xml的修改

1、  在build裡面配置:


程式碼如下:

                     <plugin>

                                   <groupId>org.codehaus.mojo</groupId>

                                   <artifactId>findbugs-maven-plugin</artifactId>

                                   <version>3.0.1</version>

                                   <configuration>

                                   <threshold>High</threshold>

                                   <effort>Default</effort>

                                   <findbugsXmlOutput>true</findbugsXmlOutput>

                                   <findbugsXmlWithMessages>true</findbugsXmlWithMessages>

                                   <xmlOutput>true</xmlOutput>

                                   <findbugsXmlOutputDirectory>target/site</findbugsXmlOutputDirectory>

                                   </configuration>

                     </plugin>

2、  在report裡面配置:


程式碼如下:

<reporting>

        <plugins>

               <plugin>

                      <groupId>org.codehaus.mojo</groupId>

                      <artifactId>findbugs-maven-plugin</artifactId>

                      <version>3.0.1</version>

                      <configuration>

                      <xmlOutput>true</xmlOutput>

                      <!-- Optional directoryto put findbugs xdoc xml report -->

                      <!--<xmlOutputDirectory>target/site</xmlOutputDirectory>-->

                      <findbugsXmlOutput>true</findbugsXmlOutput>

                      <findbugsXmlWithMessages>true</findbugsXmlWithMessages>

                      </configuration>

               </plugin>

        </plugins>

</reporting>

二、JOB的配置

1、安裝外掛findbugs-plug-in


2、新建job


3、  配置svn


4、配置Invoke top-level Maven targets


5、新增PublishFindBugs analysis results,可以預設配置也可以修改相關配置。


三、結果的檢視

1、構建job


2、檢視結果

點選檢視具體問題

 

執行多次後會生成趨勢圖

四、問題備註

問題1、使用findbugs:findbugs後不能檢查到問題

indbugs雖然是一個靜態分析工具,但是它分析的不是Java原始碼(字尾名為.java),而class件(編譯後的檔案)。在執行mvn findbugs:findbugs 時,不會自動編譯專案,即沒有class檔案,所以findbugs沒有執行。

有的技術部落格說:“cleanfindbugs:findbugs install ,這種寫法是錯的,可以執行的,但是並不產生findbugs報告”,說法是對的,但是並沒有說明原因。

原因:執行clean後,class檔案都被刪除了,所以不會執行findbugs,或者說findbugs沒有可分析的class檔案,自然就沒有產生分析結果。

使用maven執行findbugs前一定先編譯,一定要有class檔案!

解決方法:

(1)mvnclean compile findbugs:findbugs

(2)mvnclean test findbugs:findbugs (test會呼叫compile生命週期)

如下圖:


2、配置了findbugs後不能生成報告

       編譯並執行findbugs命令時發現20個問題


但是Jenkins獲取到0個錯誤


解決方法:

註釋reporting裡面的<xmlOutputDirectory>。

相關推薦

Jenkins+findbugsjava程式碼進行靜態程式碼分析

一、POM.xml的修改 1、  在build裡面配置: 程式碼如下:                      <plugin>                                    <groupId>org.cod

Jenkins+Gradle+pmdAndroid工程原始碼進行靜態程式碼分析

轉載請注意出處:http://blog.csdn.net/hwhua1986/article/details/49278941 環境說明 Gradle 2.6. OS:windows server 2008 Jenkins 1.620 pmd 5.4.0 前提: Jen

使用sonarQube程式碼進行靜態檢測

前提: 在安裝sonarqube時,必須先安裝jdk,並配置了環境變數 1.下載 這裡我下載最新的7.3版本的 2.安裝 下載完成後,解壓到某個目錄 我這裡解壓到D盤 在D:\sonarqube-7.3\conf目錄下可以看到Sonar.propertie

Java基礎25-靜態程式碼

1 /* 2 靜態程式碼塊 3 格式: 4 static{ 5 靜態程式碼塊中執行語句 6 } 7 特點:隨著類的載入而執行,並且只會執行一次,並且還優先於主函式。 8 作用:用於給類進行初始化 9 */ 10 11 public class Test{ 12 pub

Java基礎篇——靜態程式碼塊、靜態方法、靜態變數、構造方法、構造程式碼段相關

基本定義 靜態程式碼段 在Java類的設計中,如果某段程式碼想讓其只執行一次,比如一個HashMap的生成,一個數據庫連線池的產生,就可以把相關程式碼寫入static{}包裹的程式碼段中。這個程式碼段就叫靜態程式碼段,在專案啟動時就主動執行,即由虛擬機器內部完成呼叫,且只執

Java提高篇——靜態程式碼塊、構造程式碼塊、建構函式以及Java類初始化順序

靜態程式碼塊:用staitc宣告,jvm載入類時執行,僅執行一次構造程式碼塊:類中直接用{}定義,每一次建立物件時執行。執行順序優先順序:靜態塊,main(),構造塊,構造方法。 建構函式 public HelloA(){//建構函式 } 關於建構函式,以下幾點

使用sonarqube進行靜態程式碼掃描

sonarqube是一個開源的程式碼分析平臺,可用於持續分析程式碼質量,包括已有bug、壞味道、重複程式碼等等,並通過web頁面展示出來。sonarqube不僅可供測試部門使用,個人在開發過程中隨時查驗錯誤也可以使程式碼質量得到一個不錯的提升。1.下載很方便吧,確實get s

webstorm引用ESLint進行靜態程式碼檢查

規範程式碼 JavaScript 的程式碼檢查工具有:JSLint,JSHint, JSCS, ESLint,本文著重介紹 ESLint。 ESLint 在一系列的程式碼質量檢查工具中,是最年輕的一個,當然也是最現代化的。配置多樣,支援 JavaScript, JSON 以

java方法進行功能增強的三種方法

demo1 static @override 反射 調用方法 demo over 使用詳解 知識 對java方法進行功能增強的方法 1.通過繼承的方式   對哪個類中的方法進行增強,可以采用繼承那個類的方式。通過繼承該類,可以重寫方法,如果還需要老方法的一些功能,使用sup

cmd命令java程序進行編譯時出現:編碼GBK的不可映射字符

原因 格式轉化 ava str cmd命令 轉化 code 有用 unicode 原因:由於JDK是國際版的,在編譯的時候,如果我們沒有用-encoding參數指定JAVA源程序的編碼格式,則java.exe首先獲得我們才做系統默認采用的編碼格式,也即在編譯JAVA程序時,

程式碼靜態程式碼塊 區域性程式碼塊 構造程式碼

程式碼塊 程式碼演示 public class Teacher { public Teacher(){ // System.out.println("我是Teacher建構函式");

JMeter學習(十七)JMeter測試Java 目的:Java程式進行測試

目的:對Java程式進行測試   目錄 一、核心步驟 二、例項 三、JMeter Java Sampler介紹 四、自帶Java Request Sampler   一、核心步驟 1.建立一個Java工程; 2.將JMeter的lib目錄下

通過jstat、jmapjava程式進行效能調優

1. 背景 硬體供應商多次反映,在tomcat啟動一段時間後,經常出現cpu佔用率100%,且重啟前一直保持在100%的情況。在重啟後cpu佔用率回落,但是一段時間後再次出現問題。 下圖為cpu佔用率100%時使用top命令的截圖,可以看到java程序的c

程式碼靜態程式碼塊 區域性程式碼塊 構造程式碼

程式碼塊 程式碼演示 public class Teacher { public Teacher(){ // System.out.println("我是Teacher

黑馬程式設計師_java基礎學習筆記之(建構函式&構造程式碼塊&靜態程式碼塊)的區別

在基礎學習中,我常常會概念模糊,特作此學習筆記,進行一下對比,思路自然就清晰了。 建構函式 建構函式定義:建構函式是與類名相同,但沒有返回值的函式。 例子: class Person {     //建構函式     public Person() {} } 作用:

maven-shade-plugin 使用maven外掛java工程進行打包

現在基本上都是採用maven來進行開發管理,我有一個需求是需要把通過maven管理的java工程打成可執行的jar包,這樣也就是說必需把工程依賴的jar包也一起打包。而使用maven預設的package命令構建的jar包中只包括了工程自身的class檔案,並沒有包括依賴的

TPTP(Java Profiling Tools外掛)Java程式進行效能測試

來源:http://blog.csdn.net/wsj19890201/article/details/5492517 概述:Eclipse Test & Performance Tools Platform (TPTP) 的效能測試工具 (Profiling t

蜜罐技術——通過布置一些作為誘餌的主機、網絡服務或者信息,誘使攻擊方它們實施攻擊,從而可以攻擊行為進行捕獲和分析

技術 使用 alt name 防火墻 text 來源 情報 優點 蜜罐技術本質上是一種對攻擊方進行欺騙的技術,通過布置一些作為誘餌的主機、網絡服務或者信息,誘使攻擊方對它們實施攻擊,從而可以對攻擊行為進行捕獲和分析,了解攻擊方所使用的工具與方法,推測攻擊意圖和動機,能夠讓防

圖像進行主成分分析(PCV.tools.pca.pca)

div lis 完成 lose 投影 color axis 分類 排序 1 引言   1.1 維度災難     分類為例:如最近鄰分類方法(基本思想:以最近的格子投票分類)     問題:當數據維度增大,分類空間爆炸增長。如圖1所示,                  

sklearn實戰:文件進行聚類分析(KMeans演算法)

%matplotlib inline import matplotlib.pyplot as plt import numpy as np from time import time from sklearn.datasets import load_fi