问题标签 [cppcheck]

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 投票
1 回答
466 浏览

memory-management - Cppcheck : mismatchAllocDealloc 错误

我用 cppcheck 检查了我的程序,它抱怨一些 mismatchAllocDealloc 错误。我真的不明白我做错了什么。这个错误是什么意思?

谢谢

0 投票
1 回答
139 浏览

cppcheck - 如何在 cppcheck 中抑制库代码的输出?

在我的项目上运行 cppcheck 会给我大约 80% 的关于库文件而不是我的代码的输出。

有没有办法告诉 cppcheck 只搜索库(-headers)的定义等但实际上不执行检查?

或者至少抑制这些文件的输出?

或者,更好的是,将收集到的信息保存在某个地方以供重复使用,因为库代码不太可能在下次运行时更改?

0 投票
6 回答
16548 浏览

cppcheck - 当 std.cfg 文件可用时,cppcheck std.cfg not found 错误

如果我启动我的 cppcheck,我会收到以下错误:cppcheck ListLib.c(信息)无法加载 std.cfg。您的 Cppcheck 安装已损坏,请重新安装。Cppcheck 二进制文件是在 CFGDIR 设置为“/usr/bin/cfg”的情况下编译的,因此将在该路径中搜索 std.cfg。

系统:opensuse13,cppcheck版本:cppcheck-1.64,编译:make SRCDIR=build CFGDIR=/usr/bin/cfg HAVE_RULES=yes

检查文件是否存在: ls /usr/bin/cfg : gtk.cfg posix.cfg qt.cfg sdl.cfg std.cfg windows.cfg

其中cfg:cfg:/usr/bin/cfg

在哪里 std.cfg: std: /usr/bin/cfg/std.cfg

cat std: /usr/bin/cfg/std.cfg 给了我该文件的输出

堆栈跟踪:

更改为 /usr/bin 目录有效:检查 /.../ListLib.c

cppcheck --check-config ListLib.c: 给出相同的错误并且如果我在 /usr/bin/ 中执行它就可以正常工作

好的,对于登陆此页面的人来说,我可以使用我的主文件夹中的 cfg 文件:

make SRCDIR=build CFGDIR=~/cppcheck_cfg 然后离开
sudo make install

0 投票
3 回答
873 浏览

c - 全局缓冲区溢出,Windows 环境

几天前我问了一个关于缓冲区溢出检测的问题(sprintf 缓冲区全局数据溢出 - 如何检测它,Windows),问题只能通过标准功能的 cppcheck 解决(不安全 _s 版本)。

我更深入并更改了代码

Visual Studio 2012 /RTC 可以在运行时处理堆栈分配的缓冲区溢出,但全局数据不会被检测到。

我想不可能使用 cppcheck 进行深入分析,并且 cppcheck-1.64 没有检测到这个问题。此外,我还尝试将 clang 与 AddressSanitizer ( Windows ) 一起使用,但效果不佳。

是否可以在 Windows 下防止此类问题(最好是免费工具),如果不能,也许一些 linux 工具可以提供帮助?

0 投票
3 回答
14114 浏览

c++ - Cpp检查。变量的范围可以缩小(和循环)

CppCheck 为我找到了一些发现,例如:“变量‘x’的范围可以缩小”。

如果我有这种情况怎么办:

我认为我的代码没问题。你怎么看?应该改成这样吗?

在第二个代码中,为所有迭代定义了一个变量 x ......我猜这不是很好(不是最优的)......

0 投票
2 回答
751 浏览

coding-style - Cppcheck:所有功能的检查注释的自定义规则

Cppcheck是分析我们的 CPP 代码的工具。我想为 Cppcheck 创建自定义规则以检查所有函数是否都有注释。为此,我需要一个 PCRE(珍珠正则表达式)模式。或任何其他预定义的规则来解决这种情况。

0 投票
0 回答
195 浏览

java - 知道一个C文件中的那一行,如何找到它所属的函数名?

我正在处理以下问题:

给定一些用 C 编写的源代码。它们使用 CppCheck 进行扫描,输出为 CppCheck XML 输出格式。每个发现的错误的输出很简单:

错误:$filePath$lineNumber

问题:我想在 C 中找到这个$lineNumber所属的函数名。

是否有可能以CppCheck某种方式检索这些信息?是否可以实现Java代码来检索此信息?

任何意见,想法或建议表示赞赏。谢谢!

0 投票
1 回答
9484 浏览

c - 在 C 程序中跟踪数组越界访问/写入的推荐方法

考虑用 C 编写一些不太明显的算法的实现。例如,让它成为递归快速排序,我在 KN King 的“C Programming: A Modern Approach, 2nd Edition”一书中找到了它,可以从这里获得。最有趣的部分包括以下两个定义:

两个while循环都可以通过删除low < high测试来优化:

确保每次访问或写入数组(在堆栈上分配)实际上是有效的(即不会引发未定义的行为)的推荐方法是什么?我已经尝试过的是:

  • 手动调试gdb一些实际数据
  • 将源代码传递给静态分析工具,例如splitcppcheck
  • valgrind--tool=exp-sgcheck开关

例如有五个元素数组{8, 1, 2, 3, 4}

结果是(当然它依赖于实现):

1. GDB

如您所见,low变量超出了边界:

2.静态分析工具

3. Valgrind 与--tool=exp-sgcheck

该位置at 0x4005A0: split (qsort.c:46)与我gdb手动找到的位置匹配。

0 投票
1 回答
1448 浏览

visual-studio-2013 - 对 cpp check Visual Studio 插件有什么性能建议吗?

我最近刚刚安装了 cppcheck,它为在线 c++ 代码的静态分析提供了一些非常好的建议。cppcheck 已正确安装,我可以从命令行或 gui 成功运行它。然后我为 cppcheck 安装了 Visual Studio Plugin v1.1.0,我对这个插件非常失望。

我正在处理的项目是如此之大,它似乎只是挂起,虽然没有反馈,所以我不能说它是否在做任何事情,而且似乎对故障排除的支持最少。我希望也许一些精通的用户可以就如何提高性能提出一些建议。

我已经删除了除错误之外的所有检查,这并不理想,但我正试图通过减少它需要做的事情来加速它。

我试图向排除包含文件添加一个正则表达式,但我不能确定它是否有效。

我真的没有时间去抓取源代码并开始调试它。

我真的很想将这个工具嵌入到 Visual Studio 中,以便所有开发人员都能真正使用它。我还将 cppcheck 作为外部工具添加到 Visual Studio 中,但这实际上只是一个穷人尝试做插件真正应该做的事情,特别是因为宏已从 Visual Studio 中删除,所以我无法在保存时自动运行它。

http://www.codeproject.com/Tips/472065/Poor-Man-s-Visual-Studio-Cppcheck-Integration

如果 cppcheck 设置为在保存时运行,我认为这将大大增加开发人员使用该工具的可能性,这是插件的一个很棒的功能,如果它可以工作的话。

最后,我真的很希望这个插件能够工作。

0 投票
1 回答
1141 浏览

c++ - 使用 Cppcheck 检查非标准文件扩展名

有没有办法将自定义文件扩展名传递给Cppcheck?例如,*.pc