2014-12-15 10 views
8

Dodałem podążając findbugs exclude.xml złożyćFindbugs nie wyłączając metod w naszej aplikacji java

<Match> 
    <Class name="com.ebay.kernel.service.invocation.SvcInvocationConfig" /> 
    <Method name="getConnectionConfig" /> 
    <Bug pattern="IS2_INCONSISTENT_SYNC" /> 
</Match> 

kod, który musi być ignorowane

public ConnectionConfig getConnectionConfig() { 
    return m_connectionConfig; 
} 

ponieważ Findbugs informuje, że

m_connectionConfig suffers from (inconsistent synchronization) BUG - IS2_INCONSISTENT_SYNC 

Ale z jakiegoś powodu moje znęty nie są ignorowane.

a kiedy nie po -

<Match> 
    <Class name="com.ebay.kernel.service.invocation.SvcInvocationConfig" /> 
    <Bug pattern="IS2_INCONSISTENT_SYNC" /> 
</Match> 

The findbugs jest uzyskiwanie ignorowane dla całej klasy, ale jak tylko mogę przedstawić

<Method name="getConnectionConfig"> 

tag pomiędzy, findbugs przestaje coraz ignorowane dla tej metody .

Czy ktoś może mi pomóc dowiedzieć się, dlaczego?

+0

Co używasz do uruchomienia FindBugs (cel Maven Gradle, itd.)? Czy wiesz, czy Twój plik 'findbugsExclude.xml' jest używany, gdy jest uruchomiony? Może być konieczne uwzględnienie logiki budowania. – mkobit

+0

Mój gut mówi, że powinieneś spróbować dołączyć element Match również do tego pola. Mój mózg mówi, że powinieneś spróbować być bardziej gruboziarnisty (na przykład pasujący tylko do Bugu), aby wyeliminować problemy z literami/scopingiem. Możesz rozważyć całkowite zignorowanie błędu, ponieważ może on dać [fałszywe alarmy] (http://findbugs.sourceforge.net/bugDescriptions.html#IS2_INCONSISTENT_SYNC). – Foosh

+0

Mój plik findbugsExclude.xml działa poprawnie, jestem w stanie wykluczyć klasy, pakiety, a także pola, ale nie mogę wykluczyć metod. –

Odpowiedz

3

Ostrzeżenie jest wydawane na elemencie danych (polu), zgodnie z jego użytecznymi metodami, konstruktorami, blokami statycznymi itd., A nie na samej metodzie, więc nie można tego zignorować za pomocą elementu <Method> .

Zamiast tego można użyć <Field> element:

<Match> 
    <Class name="com.ebay.kernel.service.invocation.SvcInvocationConfig" /> 
    <Field name="m_connectionConfig" /> 
    <Bug pattern="IS2_INCONSISTENT_SYNC" /> 
</Match> 
+0

Działa na poziomie pola, ale naprawdę chciałem zignorować findbugs dla tego pola (m_connectionConfig) tylko w tej metodzie (getConnectionConfig()) i nie wszędzie? Daj mi znać, czy jest jakiś sposób, aby to osiągnąć? –

+0

@ user1675173 Nie jestem świadomy sposobu wyłączenia tego ostrzeżenia tylko dla jednej metody, przepraszam. – Mureinik

+0

Anyways Dzięki za bardzo potrzebną pomoc !!! –

Powiązane problemy