浅谈警告即错误

版权声明: https://blog.csdn.net/nicai_xiaoqinxi/article/details/91128251

编译警告给人的感觉是让人注意这个问题。更有甚者认为,编译警告只不过是给过分小心的人看。事实上为什么会有警告这一个问题本身值得我们去思考?

  昨天,新来不久的同事调试一个准备上线的功能,可是怎么也调试不出来。当时刚好在喝水,看到他几百个警告。就和他说你还是处理一下编译警告吧。他一脸焦虑地说:没空弄啊?!功能快要上线了,来帮我看看。他还说,如果是很严重的警告,会导致编译错误,能编译过就可以了。

  看着有些无奈,对此非常地不认同。看着他焦虑的表情,先解决问题先。
浏览代码看到有一条警告进入法眼,是这样的use '==' to turn this assignment into an equality comparison.,意思是使用'=='将该赋值转换为相等比较。找到相应的代码:

if (isEmpty = true) {
...
}

  同事看了看代码,我知道问题出在哪里了。今晚大吉大利,请你吃鸡腿。既然解决问题了,你也应该解决一下你那些编译警告,这些警告里面可能隐藏着很多bug。

  比如呢?同事一脸好学的样子。看到你程序里面有很多变量未使用的警告,你应该清理一下它。因为变量可能真的没使用,又可能是你错误使用了其他变量导致。后者带来的后果可能让你的程序刚好能运行,但某些情况下可能出现致命的错误。

  正当我转身准备下班的时候,他又问,那我调一下编译警告提升为编译错误这样可以吗?

  可以是可以,但是要分情况。如果你是新写的程序你可以这样做,如果是已经写了一大部分的项目,如果你这样做可能会造成颠覆性的后果,导致难以控制。因为编译器能轻易地将编译警告变为编译错误,可是你不能轻易地解决它。

  那我应该怎么做?
  一步一步来吧。新加的警告你就在编写的时候解决它,而旧的警告也要谨慎地解决。对于GCC编译器你可以使用-Werror参数来让警告不能忽略。让过是MSVC编译器,你可以改变项目的设置。另外一般IDE都有设置怎么将编译警告作为编译错误的操作。

猜你喜欢

转载自blog.csdn.net/nicai_xiaoqinxi/article/details/91128251