代码之家  ›  专栏  ›  技术社区  ›  Ian Turner

当我运行build和analyze时,是否应该以没有Analyzer结果为目标

  •  0
  • Ian Turner  · 技术社区  · 14 年前

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

    3 回复  |  直到 14 年前
        1
  •  6
  •   TechZen    14 年前

    首先,所有编译器警告都是只在运行时出现的错误。它们不会阻止编译,但最终会在某个地方引起严重的问题。您应该进入生成设置并选中“将警告视为错误”,然后在运行时修复产生的错误。否则,您最终会遇到难以调试的问题。

    分析仪并不完美,但你应该仔细检查它发现的任何问题。它在代码中发现的任何问题都应该被修复。有时它会报告来自api的错误,而这些错误可能没有什么可做的。

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

        2
  •  3
  •   gavinb    14 年前

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

    然而, clang 是伟大的,不是完美的。有时可能会引起假阳性。如果您确定是这种情况,并且诊断出错,那么您应该尝试重新创建显示错误的最小可能测试用例,并将其提交给 http://clang-analyzer.llvm.org/filing_bugs.html 所以他们可以改进分析引擎。

        3
  •  0
  •   Enchilada    14 年前

    我认为,上述答案的一个例外是,当您使用垃圾回收时。在这种情况下,分析器仍然会显示潜在的泄漏,但是在使用垃圾收集时,它们自然不适用。