2016-10-25 4 views
0

私たちは、例外をスローする1つのメソッドを持つサードパーティ製のフレームワークをいくつか使用しています。この動作を変更することはできません。 PMDはそのコードに対して私にSignatureDeclareThrowsExceptionという警告を与えています。PMDの特定のパッケージに対してSignatureDeclareThrowsException警告を表示する方法?

特定のパッケージで警告メッセージSignatureDeclareThrowsExceptionを無視するようにPMDを設定するにはどうすればよいですか? 私のクラス署名は、私がmy.company.ui.listenersパッケージのすべてのクラスのPMDの警告の上無視するこの

package my.company.ui.listeners; 

public class XYZListner extends Composer<Component> { 
    @Override 
    public void onCompose(Component comp) throws Exception { 
     super.onCompose(comp); 
     // my code 
    } 
} 

のようなものです。

@HairyFotrの提案に従って、strictexception.xmlファイルを修正し、次のコンテンツをルールSignatureDeclareThrowsExceptionに追加しました。

<properties> 
     <property name="violationSuppressXPath" value="//PackageDeclaration/Name[starts-with(@Image, 'my.company.ui.listeners')]" /> 
    </properties> 

でも、これらのクラスは無視されません。

+0

私の答えを試す機会を得ましたか?それを受け入れるか、私がそれをあなたのために働かせるために何かを加えることができるかどうか私に知らせてください。 – HairyFotr

+0

@HairyFotr質問を更新しました。そして遅く返事を申し訳ありません。 –

答えて

0

ルールセットでは、exclude-patternタグを使用して特定のパスを除外できます。

<exclude-pattern>.*/path/to/third/party/framework/.*</exclude-pattern>

これはSignatureDeclareThrowsExceptionだけではなく、指定したパスパターンのすべてのPMDの警告を無効になりますが、あなたは、このコードを変更することはできませんから、私はあなたがからの警告では興味がない推測していますこのパッケージ。

この警告のみを抑制したい場合は、このルールをルールセットに含めるviolationSuppressXPathプロパティで行うことができます。ルールを見つけてその中にプロパティを追加します(third.party.frameworkを実際のパッケージ名に変更してください):

<rule ref="rulesets/java/strictexception.xml/SignatureDeclareThrowsException"> 
    <properties> 
    <property name="violationSuppressXPath" value="//PackageDeclaration/Name[starts-with(@Image, 'third.party.framework')]" /> 
    </properties> 
</rule> 
関連する問題