2016-10-25 2 views
0

Мы используем стороннюю структуру, которая имеет один метод, который генерирует исключение. Мы не можем изменить это поведение. PMD дает мне SignatureDeclareThrowsException предупреждение для этого кода.Как подавить предупреждение SignatureDeclareThrowsException для определенного пакета в PMD?

Как настроить PMD для игнорирования предупреждения SignatureDeclareThrowsException в частности пакета? Мой класс подписи как этот

package my.company.ui.listeners; 

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

Я хочу игнорировать выше PMD предупреждения во всем классе my.company.ui.listeners пакета.

Согласно предложению @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>

Это отключит все предупреждения PMD для указанного шаблона пути, а не только SignatureDeclareThrowsException, но так как вы не можете изменить этот код, я предполагаю, что вы не заинтересованы в каких-либо предупреждений от этот пакет.

Если вы хотите подавить только это предупреждение, вы можете сделать это с помощью свойства 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> 

 Смежные вопросы

  • Нет связанных вопросов^_^