Как включить проверку MissingOverride в checkstyle?
У меня есть
public interface Interface0 {
void method0();
}
и
public class Implementation0 implements Interface0 {
public void method0() {
throw new UnsupportedOperationException("Not supported yet.");
}
}
и я использую maven-checkstyle-plugin
объявив
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<id>checkstyle</id>
<phase>validate</phase>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
<configuration>
<configLocation>${basedir}/check_style.xml</configLocation>
</configuration>
</plugin>
и наконец я активирую MissingOverride
в check_style.xml
:
<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
"-//Puppy Crawl//DTD Check Configuration 1.2//EN"
"http://www.puppycrawl.com/dtds/configuration_1_2.dtd">
<module name="Checker">
<module name="TreeWalker">
<module name="MissingOverride"/>
</module>
</module>
Это выдержка из моего опыта во многих проектах, что все проверки работают нормально, за исключением MissingOverride
который не имеет никакого эффекта, т.е. не обнаруживает ни одного пропавшего @Override
аннотаций.
2 ответа
Документация MissingOverride
Состояния модуля:
Проверяет, присутствует ли аннотация java.lang.Override, когда присутствует тег javadoc {@inheritDoc}.
Другими словами, он не предназначен для проверки того, что вы хотите, чтобы проверить - он только проверяет, если использование {@inheritDoc}
тег в комментарии Javadoc в сочетании с @Override
аннотаций.
Если вы читаете документацию по Checkstyle для MissingOverride
, говорится, что вам понадобится {@inheritDoc}
Тег javadoc также для того, чтобы это работало, но он только проверит, что он связан с другой аннотацией.
Попробуй это. Меня устраивает:)
Хотя, забыть включить это будет так же, как ваша первоначальная проблема.