更新不耐煩:很簡單,使用package.-
的子包掃描代替package.*
,作爲每下面martoe的回答!Maven的Codehaus的FindBugs的插件「onlyAnalyze」選項工作不正常
我似乎無法得到onlyAnalyze
我的多模塊項目的工作:不管什麼包(或模式)我設置,Maven的FindBugs的-插件作爲我從它傳遞PACKAGENAME預期不計算子包。*。
爲了證明自己或者或故障插件(雖然我總是假設是前者!),我安裝具有以下結構的小Maven項目:
pom.xml
src/
main/java/acme/App.java
main/java/acme/moo/App.java
main/java/no_detect/App.java
這是很簡單的!
的POM具有以下FindBugs的配置:
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
<version>2.4.0</version>
<executions>
<execution>
<phase>verify</phase>
<goals><goal>findbugs</goal><goal>check</goal></goals>
</execution>
</executions>
<configuration>
<debug>true</debug>
<effort>Max</effort>
<threshold>Low</threshold>
<onlyAnalyze>acme.*</onlyAnalyze>
</configuration>
</plugin>
</plugins>
</build>
,每App.java有兩個明顯的違規下面的代碼:
package acme;
import java.io.Serializable;
public class App implements Serializable
{
private static final class NotSer {
private String meh = "meh";
}
private static final NotSer ns = new NotSer();// Violation: not serializable field
public static void main(String[] args)
{
ns.meh = "hehehe";// Vilation: unused
System.out.println("Hello World!");
}
}
注意no_detect.App
具有相同的內容上面,但我的期望是,它不會被findbugs評估,因爲我的「onlyAnalyze」選項設置爲acme.*
,我認爲它會評估acme.App
和acme.moo.App
而沒有任何el SE。
我現在執行mvn clean install
清理,構建,測試,運行FindBugs的,包裝,安裝,產生預計在構建失敗以下FindBugs的報告(剪斷,爲了簡潔)和結果,因爲acme.App
和acme.moo.App
:
<BugInstance category='BAD_PRACTICE' type='SE_NO_SERIALVERSIONID' instanceOccurrenceMax='0'>
<ShortMessage>Class is Serializable, but doesn't define serialVersionUID</ShortMessage>
<LongMessage>acme.App is Serializable; consider declaring a serialVersionUID</LongMessage>
<Details>
<p> This field is never read.&nbsp; Consider removing it from the class.</p>
</Details>
<BugPattern category='BAD_PRACTICE' abbrev='SnVI' type='SE_NO_SERIALVERSIONID'><ShortDescription>Class is Serializable, but doesn't define serialVersionUID</ShortDescription><Details>
<BugCode abbrev='UrF'><Description>Unread field</Description></BugCode><BugCode abbrev='SnVI'><Description>Serializable class with no Version ID</Description></BugCode>
總結:僅acme.App
分析,acme.moo.App
不是(壞)既不是no_detect.App
(好)。
我有兩個通配符試圖在onlyAnalyze
選擇,但產生一個成功構建但有FindBugs的錯誤(Dangling meta character '*'
等)。
我試着用onlyAnalyze
設置爲acme.*,acme.moo.*
,其分析所有預期的類(acme.App
和acme.moo.App
),這意味着它「作品」,而不是如我所料;即我必須明確聲明我想分析的類的所有父包:這可能會在多模塊項目中變得很大且難以維護!
我是否必須定義每個我想要分析的軟件包,或者我可以聲明一個通配符/正則表達式模式,以實現我想要的功能?
,因爲這需要更多的設置和推理,我目前沒有時間......
在我的挫折和瘋狂的搜索我設法不實際RTFM - 儘管公平我從來沒有實際上找到自己的文檔。謝謝! – 2012-02-15 09:54:23