0

我读过很多次“构建和分析”并不完美。当我运行它时,它确实提供了一些有用的信息,并且确实改进了我的代码,但它也给出了不必要的问题。目前我正在更改我的代码以尝试摆脱所有分析器结果,无论它们是否存在问题。这是最佳实践吗,因为就像警告一样,很容易检查您是否有问题,或者我应该认识到分析器并不完美,除非发现真正的问题,否则不要更改代码?

4

3 回答 3

6

首先,所有编译器警告都只是错误,只会出现在运行时。它们不会阻止编译,但它们最终会在未来的某个地方造成严重的问题。您应该进入构建设置并检查“将警告视为错误”并随时修复由此产生的错误。否则,您最终将难以调试问题。

分析仪并不完美,但您应该仔细检查它发现的任何问题。它在您的代码中发现的任何问题都应该得到修复。有时它会从 API 报告错误,并且可能对此无能为力。

在大多数情况下,忽略来自任何编译器阶段的错误都是“一分钱一分货”的节省时间。您预先保存的任何时间都将在以后丢失调试。

于 2010-03-25T12:17:47.273 回答
3

是的 - 理想情况下,您希望解决分析过程中提出的所有问题。

然而,虽然clang很棒,但并不完美。有时它可能会引发误报。如果您确定是这种情况,并且诊断错误,那么您应该尝试重新创建显示错误的最小可能测试用例,并将其提交到http://clang-analyzer.llvm.org/filing_bugs。 html,以便他们可以改进分析引擎。

于 2010-03-25T12:33:41.373 回答
0

我假设上述答案的一个例外是当您使用垃圾收集时。在这种情况下,Analyzer 仍然会向您显示潜在的泄漏,但在使用 Garbage Collection 时它们自然不适用。

于 2010-03-26T00:03:48.047 回答