【问题标题】:Maven Java not warning about nonexhaustive switchMaven Java没有警告非详尽的开关
【发布时间】:2019-10-13 23:49:07
【问题描述】:

如果您打开一个枚举,并且既不涵盖所有情况也不提供默认值,则获得编译器警告很有用。该站点上的其他答案表明 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 语句保持沉默。我可以设置其他标志来启用此类警告吗?

【问题讨论】:

  • 为什么不在 maven 中集成 SonarLint/Qube。
  • 值得一提的是您正在使用的 Java 和 Maven 版本,当然还有示例代码,如果能够成为重现错误的问题的一部分。

标签: java maven switch-statement compiler-warnings


【解决方案1】:

我知道这样的警告是因为:

后者应该是有趣的:

注释处理器将确保您收到编译时错误。
该项目还包括一个部分枚举映射器类,您可能希望使用它来代替 switch 语句。

项目是available in Maven Central,所以你可以将它添加到你的依赖中。

重点是:

-Xlint 这样的javac non-standard option 可能不足以单独捕获部分开关枚举用例。
它只会检测失败案例:switch 块中的案例,除了块中的最后一个案例,其代码不包含 break 语句,允许代码执行“失败”从那个案例到下一个案例

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多