标签: cppcheck

cppcheck的规则集

Cppcheck允许您创建自己的规则文件,但我不知道暴露了多少cppcheck的功能.

是否有人在制定强制执行JSFMISRA规则的集合?

c++ testing safety-critical static-code-analysis cppcheck

34
推荐指数
1
解决办法
7726
查看次数

c ++,usleep()是过时的,Windows/MingW的变通方法?

我已经发现了另一个问题,即Windows/MingW没有为过时的usleep()提供nanosleep()和setitimer()替代方案.但我的目标是修复cppcheck给我的所有警告,包括usleep()样式警告.

那么,是否有一种解决方法可以在使用cygwin或安装大量新依赖项/库的情况下以某种方式避免使用Windows上的usleep()?谢谢.

c++ windows cppcheck usleep

24
推荐指数
6
解决办法
6万
查看次数

如何在C++代码中使用cppcheck的内联抑制过滤器选项?

我想使用Cppcheck进行C++代码的静态代码分析.我了解到我可以用--inline-suppr命令抑制某种警告.但是,我无法在评论中找到"suppress_error_id":

// cppcheck-suppress "suppressed_error_id"
Run Code Online (Sandbox Code Playgroud)

c++ static-analysis error-suppression cppcheck

23
推荐指数
2
解决办法
2万
查看次数

如何使用CMAKE_EXPORT_COMPILE_COMMANDS?

我一直在尝试使用clang-modernizeCMAKE_EXPORT_COMPILE_COMMANDS在该工具的帮助推荐.

使用此选项,cmake会生成一个包含编译信息(如include路径)的JSON文件(另请参阅).

此变量在cmake的命令行中被接受,但cmake --help-variable CMAKE_EXPORT_COMPILE_COMMANDS不起作用(这与此邮件列表发布一致).

有人知道如何使用它吗?

我也可以用cppcheck.

更多信息

我在clang开发者论坛上发现,这个cmake功能并非在所有生成器上都可用.这可能会在未来发生变化,同时我的问题仍然存在,我也会尝试看看如果我使用其他生成器而不是Visual Studio会发生什么.

c++ cmake clang cppcheck

23
推荐指数
3
解决办法
3万
查看次数

cppcheck找不到包含文件

cppcheck甚至找不到像iostream这样的标准头文件.有任何想法吗?

我正在使用Ubuntu 11.04和cppcheck来自存储库.

c++ cppcheck

21
推荐指数
2
解决办法
2万
查看次数

确定"未知的评估顺序"

从版本1.80开始,Cppcheck告诉我

表达式'msg [ipos ++] =校验和(&msg [1],ipos-1)'取决于副作用的评估顺序

在这个代码序列中(简化,data是一个变量)

BYTE msg[MAX_MSG_SIZE];  // msg can be smaller, depending on data encoded
int ipos = 0;
msg[ipos++] = MSG_START;
ipos += encode(&msg[ipos], data);
msg[ipos++] = checksum(&msg[1], ipos-1);  // <---- Undefined Behaviour?
msg[ipos++] = MSG_END;   // increment ipos to the actual size of msg
Run Code Online (Sandbox Code Playgroud)

并将此视为错误,而不是可移植性问题.

它是C代码(包含在C++主导的项目中),使用C++ 98兼容编译器编译,同时按预期运行数十年.Cppcheck使用C++ 03,C89,自动检测语言运行.

我承认代码应该更好地重写.但在此之前,我试图弄清楚:它真的依赖于评估顺序吗?根据我的理解,正在首先评估正确的操作数(它需要在调用之前),然后msg[ipos]使用ipos最后完成的增量进行赋值(to ).

我错了这个假设,还是只是假阳性?

c c++ static-analysis operator-precedence cppcheck

21
推荐指数
2
解决办法
1411
查看次数

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

考虑在C中编写一些不那么明显的算法的实现.例如,让我们在KN King的"C编程:现代方法,第2版"一书中找到它的递归快速排序,它可以从这里获得.最有趣的部分包括以下两个定义:

void quicksort(int a[], int low, int high)
{
    int middle;

    if (low >= high)
        return;

    middle = split(a, low, high);
    quicksort(a, low, middle - 1);
    quicksort(a, middle + 1, high);
}

int split(int a[], int low, int high)
{
    int part_element = a[low];

    for (;;) {
       while (low < high && part_element <= a[high])
           high--;
       if (low >= high)
           break;
       a[low++] = a[high];

       while (low < high && a[low] <= part_element)
           low++;
       if (low >= high) …
Run Code Online (Sandbox Code Playgroud)

c gdb splint memcheck cppcheck

20
推荐指数
1
解决办法
5561
查看次数

当std.cfg文件可用时,找不到cppcheck std.cfg错误

如果我启动我的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

where cfg:cfg:/ usr/bin/cfg

whereis std.cfg:std:/usr/bin/cfg/std.cfg

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

堆栈跟踪:

lstat("/home/.../ListLib.c", {st_mode=S_IFREG|0644, st_size=4568, ...}) = 0
stat("/home/.../ListLib.c", {st_mode=S_IFREG|0644, st_size=4568, ...}) = 0
open("std.cfg", O_RDONLY)               = -1 ENOENT (No such file or directory)
open("cfg/std.cfg", O_RDONLY)           = -1 ENOENT (No such file or directory)
write(2, "(information) Failed to load std"..., 213) = 213
write(2, "\n", 1)                       = 1
exit_group(1)                           = ?
+++ exited with 1 +++ …
Run Code Online (Sandbox Code Playgroud)

cppcheck

19
推荐指数
2
解决办法
1万
查看次数

是否有Cppcheck消息列表?

我们的团队以前使用Lint作为静态代码分析器,但它变得过于混乱并且噪音太大.

我们使用C++ 03经常使用Boost,而Lint似乎不喜欢Boost(我听说这在后来的版本中变得更好).我开始查看其他静态代码分析器并遇到了Cppcheck并尝试了它.我对它所警告的内容印象深刻(我看过十几个信息和风格问题).

我感兴趣的是:是否有Cppcheck发布的所有Cppcheck消息的列表,类似于LintPVS-Studio 如何都有他们的消息列表?官方网站Cppcheck名单:

  • 越界检查
  • 内存泄漏检查
  • 检测可能的空指针解引用
  • 检查未初始化的变量
  • 检查STL的无效使用情况
  • 检查异常安全
  • 如果使用过时或不安全的功能,请发出警告
  • 警告未使用或冗余的代码
  • 检测指示错误的各种可疑代码
  • ...

但是我对类似于Lint和PVS-Studio的东西更感兴趣,并且类似于在Visual Studio中显示结果的方式:

ID | Category/Severity | Text
Run Code Online (Sandbox Code Playgroud)

static-analysis cppcheck

15
推荐指数
1
解决办法
3507
查看次数

Cppcheck在CMake中的支持

我不是要问各种可用的第三方模块以某种方式支持Cppcheck.

有了CMake 3.10,CMake似乎获得了一些官方的Cppcheck支持.请参阅CMAKE_ <LANG> _CPPCHECK.

不幸的是,如何使用这个变量的文档有点稀疏.是否有一个很好的例子说明Cppcheck应该如何与CMake 3.10(或更高版本)一起使用?

cmake cppcheck

14
推荐指数
1
解决办法
6222
查看次数