簡體   English   中英

FindBugs的問題排除過濾器

[英]Problems with FindBugs exclude filter

我正在評估FindBugs並嘗試使用excludeFilter,以便該工具不處理測試包或生成的ejb存根。

我嘗試過以下方法:

<FindBugsFilter>
<!-- Match any test packages -->
<Match>
    <Package name="~.*\.test"/>
</Match>
<Match>
    <Or>
        <Class name="~.*\.^_*"/>
        <Class name="~.*EJS*"/>
    </Or>
    <Bug pattern="MALICIOUS_CODE"/>
</Match>

生成的EJB仍然在被查看。 有人可以為此提供更好的指導。

我想排除所有以“_”開頭的類

例:

COM / myCompany中/業務/管理/ EJB / _AdminRemoteHome_Stub.java

COM / myCompany中/業務/管理/ EJB / _EJSRemoteStatelessAdminHome_054d51b9_Tie.java

更新過濾文件。

我使用建議的regx更改將過濾器文件更改為以下結構,現在事情按預期工作:

<FindBugsFilter>
<!-- Match any test packages -->
<Match>
    <Package name="~.*\.test"/>
</Match>
<Match>
    <Class name="~.*\._.*"/>
</Match>
<Match>
    <Class name="~.*?EJS.*"/>       
</Match>

看起來我需要回去刷新我的regx。

關於FindBugFilter

(只是為了確定)你確定你正在考慮編譯的類文件目錄,而不是sourcePath? (如本SO答案所述 )。

Java元素名稱匹配部分:

如果Class,Method或Field的name屬性以〜字符開頭,則屬性內容的其余部分將被解釋為與正在討論的Java元素的名稱匹配的Java正則表達式

以下正則表達式會更准確嗎?

    <Class name="~.*\._.*"/>
    <Class name="~.*?EJS.*"/>
  • .*\\._.* ”而不是“ .*\\.^_* ”,因為應該在應用正則表達式模式的字符串的開頭匹配。

  • .*?EJS.* ”而不是“ .*EJS* ”因為? 量詞使得匹配變得懶惰,避免“吃掉”EJS。 (加上“ S* ”表示“0或n S”,這對此沒有幫助)

我的findbugs排除文件不能像上面那樣工作。 我正在使用findbugs-maven-plugin v3.0.0。 為了解決這個問題,我運行了一個生成findbugsXml.xml的構建,然后發出:

mvn findbugs:gui

這將啟動用戶界面findbugs。 然后我加載了findbugsXml.xml文件,導航到我想要排除的警告,排除它們,然后將排除項保存到findbugs_exclude.xml。 我把它添加到maven插件中

<excludeFilterFile>findbugs_exclude.xml</excludeFilterFile>

生成的文件正常工作,並且findbugs報告中確實省略了排除項。

我發現maven插件的另一個重要提示是添加:

<omitVisitors>UnreadFields</omitVisitors>

有必要提一下,如果要排除某個類,請注意其內部類 花了我幾個小時才發現它而不是

<Match>
    <Class name="com.some.Proto" /> <!--or com.some.Proto$.*-->
</Match>

我應該使用以下配置,其內部類逐個列出

<Match>
    <Or>
    <Class name="com.some.Proto$Event" />
    <Class name="com.some.Proto$Msg" />
    <Class name="com.some.Proto$Query" />
    </Or>
</Match>

到目前為止,我還沒有找到如何排除一個類及其所有子類(不是過濾器中的線索),像com.some.Proto$.*這樣的簡單正則com.some.Proto$.*只是不起作用。 我還注意到$ in regex意味着行結束,而findbugs將其視為文本字符,我認為,否則應該是com.some.Proto\\$Query 此外,一個有價值的正則表達式測試人員通過解釋其中的每個字符幫助我進行正則表達式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM