2013-01-31 35 views
1

我是新來的註釋。我試圖做的是寫一個包括其他人。我以前從來沒有需要過,我是新手,所以這部分是爲了學習經驗。如何爲checkstyle豁免編寫超級註釋?

我對某些第三方代碼有checkstyle豁免,並且沒有人想爲我添加免責聲明到Sonar服務器。我想要做的是編寫一個超級註釋,這將允許我選擇使用checkstyle排除,而不是應用@SupressWarnings(「all」),這對我來說似乎很危險。建議的註釋基本上只適用@SupressWarnings組(「在此放置checkstyle鍵」)。第一個版本將排除所有的checkstyle。下一個版本將增加按類別,子類別等向下排除的功能。可以使用我能得到的任何建議。我正在閱讀我現在可以得到的任何註釋,但也沒有使用反射。

回答

0

SuppressWarnings註釋非常適合編譯器/ IDE。你不能在其中創建你自己的註釋條目,它會奇蹟般地修改Java編譯器 - 除非你願意做一個項目 - 龍目島風格的代碼生成來將@SuppressWarnings(「特定語法」)更改爲各種其他@SuppressWarnings。爲此你必須與AST交互。查看Lombok源代碼並閱讀註釋處理工具(APT)。

+1

我的意圖只是寫一個簡單而安全的註釋,用於關閉Sonar關於無人關心的生成代碼,我無法改變。事情是,時不時的人從錯誤的統計數據中得到錯誤的想法,並且嚇壞了。不,他們不會爲我改變服務器配置。 – user447607

+0

最接近正確的答案。正確的答案可能是「找一份更好的工作」。 – user447607

0

這已經內置在Checkstyle中。
您必須激活並設置特定的exlusion字符串,該字符串會觸發checkstyle 以忽略接下來N行的指定警告。

使用自定義的CheckStyle配置checks.xml,並添加:

<module name="SuppressWithNearbyCommentFilter"> 
    <property name="commentFormat" value="CS\:IGNORE ([\w\|]+) (\d+)"/> 
    <property name="checkFormat" value="$1"/> 
    <property name="influenceFormat" value="$2"/> 
    </module> 

現在可以忽略的特定檢查與線或上述方法評價:

實施例:

// CS:IGNORE Catch|MethodLength 10 
public void longMethod() { 
    // Method that would cause checkstlye to detetced a length and Catch Exception warning 
} 

Catch | MethodLength:忽略警告:Catch和MethodLength

10表示:排除規則對於接下來的10行是有效的。

+0

提醒:我沒有服務器訪問權限,也無法獲取它。 – user447607

+0

我不明白,服務器訪問?您必須更改或要求構建管理器設置單個checkstyle配置,該配置可以從標準checkstyle配置複製。 – AlexWien

+0

他們忽略的請求。我必須承認遺囑將繼續無視他們。 – user447607