是否有任何编译器或选项可以触发无感和错误切换语句的警告?

4 c c++ code-analysis compiler-warnings switch-statement

给出以下代码:

bool doGoodThing;

switch (some_variable)
{
case 1:
case 2:
    doGoodThing = true;

default:
    doGoodThing = false;
}
Run Code Online (Sandbox Code Playgroud)

最新gcc版本足够智能,可以检测何时分配变量但仍未使用,等等.是否有任何编译器或标志可以触发警告说整个开关对这样的代码没有任何意义?

更新:问题不在于doGoodThing变量.这是一个愚蠢的switch陈述,没有多大意义.

更新2:在你将"重复"选民标记为重复之前通过它 - 再次阅读一个问题.这不是关于"案件"之后缺少"休息"声明的警告.这是关于死代码,逻辑错误,编译器对代码的静态语义分析.如果没有"休息",我不需要警告.

Céd*_*ien 5

如果你在谈论switch语句中缺少的中断,那么它就是GCC中的一个强化要求.

编辑2:如果您使用Java,FindBugs可以为您完成

再次编辑:CPPCheck似乎检测到相关的东西:

switch语句中的冗余赋值

  • @Als:如果在没有返回语句的情况下警告未使用的变量或执行路径的范围内,编译器的范围超出范围会怎么警告?在我看来,那些东西需要相同数量的静态分析. (2认同)