问题标签 [clang-static-analyzer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
583 浏览

objective-c - 静态分析和“创建规则”

我想在 NSBezierPath 上添加一个类别以返回路径的 CGPathRef。由于这是一个核心基础对象,我不能自动释放它,方法的调用者负责释放它。通过将“复制”或“创建”作为方法名称的一部分,我认为我遵循 Apple 在此处设置的约定:https ://developer.apple.com/library/mac/#documentation/CoreFOundation/Conceptual/ CFMemoryMgmt/Concepts/Ownership.html

但是,除非我更进一步,否则静态分析器不会接受它,而且——不仅包括 create/copy 作为名称的一部分,而且——实际上以“copy”(或 mutableCopy 等)开头的方法名称。

但是,这样做违反了命名类别方法的最佳实践,因为它们应该加前缀以避免命名冲突。

实现以下所有目标的最佳方法是什么:

  1. 在 Cocoa 类的类别上添加方法
  2. …返回一个核心基础对象
  3. …这不会在分析器中发出警告
  4. …并根据最佳实践命名?
0 投票
1 回答
1002 浏览

clang - 如何告诉 ccc-analyzer(c 静态分析器)函数无法返回

我目前正在使用ccc-analyzerbystatic-build来分析我们的代码库。我正在使用从 Git 镜像制作的最新版本。

现在在 PC-Lint 中,只要函数没有返回,我就可以告诉 Lint。这通常通过/*lint -unreachable*/控制 PC-Lint 行为的或类似的注释(“标记”)来完成。

我现在scan-build遇到了一些我想抑制的误报,因为我知道一个特定的函数永远不会返回(最终它会调用exitC 运行时的函数)。有什么方法可以告诉static-build/ccc-analyzer我的函数无法返回?

0 投票
1 回答
898 浏览

continuous-integration - Clang 静态分析器和持续集成?

事实证明,Clang 静态分析器在发现实际问题方面比 PC-Lint 和其他 Lint 变体和类似软件可靠得多(在阅读背景时毫不奇怪)。即使对于自动构建,该scan-build方法也很好,但它缺少一个我没有找到任何信息的重要功能。我如何才能确定最新的提交是否会恶化整体代码质量?!当然,我必须比较前一次运行的错误计数。但是解析 HTML(也给出了伪随机命名方案)似乎很奇怪。

在这种情况下,有什么方法可以有意义地集成静态分析器?

注意:在ccc-analyzer这里运行似乎也没有多大意义。虽然在这种情况下,输出是纯文本(即不是 HTML),因此更容易解析。但我愿意接受建议,即使它们涉及ccc-analyzer在单个文件而不是scan-build整个make过程上运行。

0 投票
1 回答
134 浏览

clang-static-analyzer - Clang scan-build 没有在非 ARC 文件上拾取 -fno-objc-arc 标志

嗨,我有一个 XCode 项目,它是 ARCd,但使用了一些不是 ARCd 的第 3 方(AFNetworking)类。我已经针对这些文件指定了 -fno-objc-arc 标志,但是当我运行 scan-build 时,我得到了许多错误,例如:-

在编译/检查这些不正确的类时,我可以看到 scan-build 正在使用 -fobjc-arc。

请有人建议我如何获得扫描构建以获取正确的设置?

仅供参考,我使用的是从http://clang-analyzer.llvm.org/下载的 checker-267 版本

非常感谢

0 投票
3 回答
1426 浏览

c++ - 如果返回值未用于某种类型,则编译失败

我想让某些函数调用的编译失败,但其他的不行。我想要失败的函数调用是那些在值属于某种类型时不处理返回值的函数调用。在下面的示例中,不处理返回的函数Error是编译错误,但不处理返回任何其他内容的函数应该会成功。

注意:我们的运行时环境(嵌入式)不允许我们使用以下构造:RTTI、异常。

这段代码只需要用 Clang 编译,我宁愿不必注释每个函数。

我们更喜欢在编译时而不是在运行时失败的解决方案。

0 投票
1 回答
171 浏览

ios - 使用 ABRecord 和 ARC 的潜在泄漏

我有这个代码:

静态分析仪说有潜在的泄漏。我知道我需要释放 phoneNumberProperty 但如何?我正在使用 ARC,所以 [phoneNumberProperty release] 不起作用。将其设置为零,它仍然会抱怨。

谢谢您的帮助

0 投票
3 回答
1976 浏览

objective-c - 如果我在使用 ARC 时未能初始化变量,clang 如何警告我?

我忘记初始化一个局部变量,使用它时没有收到任何警告。由于我使用的是 ,所以ARC变量被初始化为nil,所以没有造成任何伤害,但是当我使用未初始化的值时,我仍然想要一个警告。如果我禁用ARC,我会收到我期望的警告。

没有 ARC:

- 编辑 -

我已经想出了如何使用 local blocks 使未初始化的值变得不可能。这消除了对警告的需要。

0 投票
0 回答
710 浏览

xcode4.5 - 在寄存器分配期间用尽寄存器

我刚刚更新到 Xcode 4.5.1。现在,当我“分析”我的代码时,我得到了这个错误。请注意,它编译并运行得很好。知道这是为什么吗?

更新 10/25 实际上,我的代码在发布配置中编译并运行良好。但是,在调试配置中,我收到“寄存器用尽...”错误,就像我使用 clang-static-analyzer 进行“分析”时一样。任何帮助表示赞赏。

在此处输入图像描述

0 投票
1 回答
1128 浏览

report - 带有编译器警告的clang扫描构建报告?

用于静态分析器的 clang 的 scan-build 驱动程序会生成漂亮的 html 报告。但这些仅包含分析器发现的问题。

有没有办法从编译器本身生成相同类型的警告(和错误)报告?

0 投票
1 回答
4317 浏览

c++ - Vera++ 规则实现

如果有人了解 Vera++ 或静态分析器,请通过。

如何将复杂的 C++ 规则验证机实现为静态分析器?我想实现复杂的规则,如基类中的虚函数,识别用户定义的变量,如类、结构等。变量范围如全局、本地、静态等。我非常了解 Vera++,根据我的理解,它只做令牌解析,语言的上下文需要通过脚本实现(如果语言像C++,实现的上下文可能太复杂);因为区分 a *b; (可能是类类型 a 的指针 b)或 a *b;(可能只是两个变量之间的乘法);

我什至觉得复杂规则的实现可能需要一些像状态机这样的编译器,这样脚本才能理解语言的上下文。

我的问题只是问:

  1. 我对静态分析器规则实施的理解是否正确。

  2. 你能否请指导我如何才能完成这项任务。

  3. 这些任务可以通过 tcl 的 REGEXP 来简化吗?

  4. 您是否可以建议任何特定的设计方法来实现 Solid C++ 代码分析器的良好实施。