问题标签 [pc-lint]
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.
c++ - 将项目划分为不同的 PC-Lint 警告策略
我对 PC-Lint 及其配置文件有疑问。在该文件中,我从以下内容开始:
该项目混有 .c 和 .cpp 文件。如何告诉 PC-Lint 仅在 C-Files 上使用 C-Policy,在 CPP-Files 上使用 CPP-Policy?
提前致谢!
c++ - Visual Lint 中的每个项目选项?
我过去使用过 Visual Lint(作为 PC-lint 的前端),并以某种方式将其配置为对不同的项目使用不同的 options.lnt 文件。我的回忆可能是不正确的,它被配置为在任何项目的目录中自动获取任何名为“options.lnt”的东西——也就是说,我不必为每个项目单独配置它。
例如,我可能有两个项目,ProjX 和 ProjY,并且每个项目中可能有不同的 options.lnt 文件:
可能这些可能是指存储在其他文件中的某些通用选项集;例如,我有 C:\MyProjects\Lint\options.lnt 用于非常一般的东西,然后有更具体的选项文件用于与某些包相关的东西;例如,我有 C:\MyProjects\Lint\options_boost.lnt 供使用 Boost 的项目使用。因此,如果 ProjX 使用 Boost,C:\MyProjects\ProjX\options.lnt 将包含(至少)以下行:
而 ProjY 可能不使用 Boost,因此它的 options.lnt 将具有“一般”行,而不是 Boost-specific 行。
这一切都很好,但我已经迁移到一台新计算机,我似乎无法让它再次工作。当我对 ProjX 运行 Visual Lint 时,它会显示应该被(例如)C:\MyProjects\Lint\options_boost.lnt 中的条目抑制的消息。
我进入了 Visual Lint 的“工具/选项”,在“分析”选项卡下,我将“首选分析方法”设置为“每个项目”。我有专业版,我认为这是此功能所必需的。我使用的是第 5 版(而之前运行的机器是第 4 版)。
我是否可能缺少一些我需要设置的额外配置才能让 Visual Lint 关注项目的选项文件?
regex - 按缩进模式处理文本文件
我尝试了一些 sed 与 s/regex/../ 的组合,但没有成功。所以这是我的问题:我有一个看起来像这样的文本文件(PCLint 输出)
我想将结果更改为以下内容(teamcity 服务消息):
所以我知道文本将在每个“---”之间以某种方式分成块。然后我应该用正则表达式功能包装/替换文本块。但我不知道如何有效地做到这一点。理想情况下,我喜欢使用busybox 中可用的工具,例如sed、awk 等,以保持工具“简单”(需要在Win64 上工作)。
正则表达式我可以很好地工作,但我无法确定这个范围。对我有什么提示吗?
c - IAR EWARM PC-LINT 禁止来自包含在 -header 选项中的标头的消息
我正在使用 IAR EWARM 7.4
我已按照此处的说明进行操作:http: //www.safetycritical.info/library/static/pc-lint/ewb-pclint-v2.pdf
我使用 --predef_macros 编译器选项创建了一个包含编译器定义的头文件
在 iar-co-arm-v6.lnt 我添加了以下内容:
Lint 它在该文件中抱怨大量的 MISRA 违规行为。
编辑:我尝试添加该行
这减少了许多 MISRA 违规行为,但我仍然得到一些,例如:
c - MISRA C 2012 是否说不使用 bool
我正处于一个新项目框架的早期阶段。
我定义了一个返回类型为“bool”的函数
我从 PC-Lint 得到了这个输出
我继续在另一个标题中定义它以关闭 lint:
然后我开始想知道为什么我必须这样做以及为什么它改变了任何东西。我转向 MISRA 2012 Dir 4.6。它主要关注原始类型的宽度,如 short、int 和 long、它们的宽度以及它们是如何签名的。
该标准没有给出 bool 的任何放大、合理、例外或示例。
bool 在 C99 的 stdbool.h 中明确定义为 _Bool。那么这个标准真的适用于布尔吗?
根据 C99 的第 6.2.5 节,我认为 _Bool 始终是“足以存储值 0 和 1 的最小标准无符号整数类型”。所以我们知道 bool 是无符号的。那么 _Bool 不是固定宽度并且主题以某种方式被提升的事实是否只是问题所在?因为理性似乎与这个概念相矛盾。
遵守本指南并不能保证可移植性,因为 int 类型的大小可能决定表达式是否接受整数提升。
放置如何typedef bool bool_t;
改变任何东西 - 因为我没有做任何事情来表明这样做的宽度或签名?bool_t 的宽度也将取决于平台。有没有更好的方法来重新定义 bool?
除非实现的类型实际上具有该长度,否则不得以特定长度定义类型
所以typedef bool bool8_t;
应该是完全非法的。
Gimpel 对指令 4.6 的解释是错误的,还是他们发现了?
c++ - 在编译时或静态分析期间强制执行 std::nothrow
是否可以在编译时或至少在使用 pc-lint 的静态分析期间new
严格强制使用运算符?std::nothrow
使用 c++ (GCC) 4.8.3 20140911 (Red Hat 4.8.3-9) 编译器。
c++ - PC Lint + Eigen 库
我尝试将 PCLint 与 c++ 一起使用。我正在使用仅在我的 cmake 文件中定义为包含目录的 Eigen 标头库。我尝试了以下命令:
问题是我不知道我必须在我的 std.lnt 中写什么,以便 lnt 忽略 Eigen 库上的错误。我试过了 :
有人有这方面的经验吗?
我收到很多错误,例如:
c++ - 如何解决 lint 错误“引用初始化导致 const/volatile 完整性丢失”
PC-lint 给我以下错误:
处理此代码的最后一行时:
知道
为什么会出现此错误以及如何解决它吗_sortedSelectedItems
?std::vector<SmartPointer<DataItem>>
编辑
此代码不在 const 成员函数内。
pc-lint - 如何显示抑制的 PC-Lint 警告类型列表
寻找一种方法让 PC-Lint 在 PC-lint 完成后显示所有抑制的警告类型。
背景:在一个大型旧项目上工作,有几个警告类型被抑制(-e#)并且没有适当地恢复。寻找一种方法来找到更多此类问题。
c - MISRA 错误 10.1 复整数的隐式转换
我正在根据 MISRA 规则编写代码。我收到以下表达式的 MISRA 错误
check_Val = ( ~( 0x000Fu << Src_Data ) ); //其中 Src_Data 是 uint8,check_Val 是 uint32。
我分析了错误
违反 MISRA 2004 要求的规则 10.1,复杂整数表达式的隐式转换
因为 check_Val 是uint32
,所以 Lf 应该适合它。那么为什么它给出一个错误。