После вашего уточняющего комментария я могу сказать, что причина предупреждения в том, как работает проверка MagicNumber . Если потенциальное магическое число находится в определении поля, а это поле final
, то оно не помечено, пока все родительские токены в AST вплоть до узла, представляющегоопределения полей находятся в определенном списке.
Это довольно запутанно, и я думаю, что обычному пользователю это кажется произвольным.Но статический анализ кода часто связан с эвристикой.
Хорошо, что вы можете влиять на это поведение.Настройте проверку следующим образом:
<module name="MagicNumber">
<property name="constantWaiverParentToken"
value="TYPECAST, METHOD_CALL, EXPR, ARRAY_INIT, UNARY_MINUS, UNARY_PLUS, ELIST, STAR, ASSIGN, PLUS, MINUS, DIV, LITERAL_NEW, DOT"/>
</module>
Значение constantWaiverParentToken
является значением по умолчанию плюс DOT
, добавляемое в конец.Это учитывает более сложные выражения.Чтобы это работало, вам нужен как минимум Checkstyle 6.11.