Maven Java не предупреждает о неисчерпывающем переключателе - PullRequest
2 голосов
/ 11 октября 2019

Если вы включаете перечисление и не охватывает все случаи и не задаете значение по умолчанию, полезно получить предупреждение компилятора. Другие ответы на этом сайте предполагают, что javac должен выдавать такое предупреждение.

Я использую Maven и добавил следующее в pom.xml, чтобы включить все предупреждения:

    <plugin>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>3.8.0</version>
      <configuration>
        <compilerArgs>
          <arg>-Xlint:all</arg>
        </compilerArgs>
        <showDeprecation>true</showDeprecation>
        <showWarnings>true</showWarnings>
      </configuration>
    </plugin>

Но компилятор все еще молчит о неисчерпывающих операторах switch в моем коде. Могу ли я установить какой-либо другой флаг для включения таких предупреждений?

1 Ответ

2 голосов
/ 13 октября 2019

Я знаю о таких предупреждениях из-за:

Последний должен представлять интерес:

Процессор аннотаций обеспечит получениеошибка времени.
Проект также включает частичный класс enum-mapper, который вы можете использовать вместо оператора switch.

Проект доступен в Maven Central , так что вы можете добавить его к своим зависимостям.

Суть остается:

A javac нестандартный вариант вроде -Xlint может быть недостаточно, в одиночку, чтобы перехватить этот частный случай использования перечисления частичного переключателя.
Он будет обнаруживать только аварийные случаи: случаи в блоке switch, отличные отпоследний случай в блоке, , чей код не содержит оператора останова , что позволяет исполнению кода "проваливаться" из этого случая в следующий случай .

...