打开 smoe 打开了这个问题 2022 年 2 月 6 日 · 1条评论 打开 在连续构建测试中集成 cppcheck#1574 smoe 打开了这个问题 2022 年 2 月 6 日 · 1条评论 注释 贡献者 烟雾 评论了 2022 年 2 月 6 日 如果这被认为对项目有利,我将帮助实施 2.9+0.1 的提议。 有一些自动代码检查器(有时)非常有用。一个很好的刺激是“cppcheck”——并不完美,但应该用它来发现一个或另一个内存泄漏或未定义的变量或普通错误。 我在 src/hal 中尝试过这个,发现了一些有趣的东西,比如 src/hal/drivers/opto_ac5.c:432:13: error: Signed integer overflow for expression '1<<(31-i)'. [integerOverflow] mask=1<<(31-i); 和下面的补丁 $ vim !$ vim hal/drivers/opto_ac5.c $ cppcheck hal/drivers/opto_ac5.c Checking hal/drivers/opto_ac5.c ... $ git diff !$ git diff hal/drivers/opto_ac5.c diff --git a/src/hal/drivers/opto_ac5.c b/src/hal/drivers/opto_ac5.c index 5d81aa5be3..19bdb40ebb 100644 --- a/src/hal/drivers/opto_ac5.c +++ b/src/hal/drivers/opto_ac5.c @@ -429,7 +429,7 @@ Device_DigitalOutWrite(void *arg, long period) pDigital = &pboard->port[portnum].io[23];//one before what we want to check for (i = 0;i < 2;i++) { - mask=1<<(31-i); + mask = (unsigned int) 1 << (31-i); pDigital++; if ( *(pDigital->pValue) ==0 ) { pins |= mask; } 这个错误(如果这实际上是一个错误的话)是默认情况下对整数进行签名。 smoe 提到了这个问题 2022 年 2 月 6 日 int(看起来也是文字)默认签名 #1575 合并 合作者 塞布·库兹明斯基 评论了 2022 年 2 月 7 日 我赞成在我们的 CI 系统中增加使用自动代码检查器。 smoe 提到了这个问题 2022 年 2 月 8 日 集成 cppcheck 的想法 #1581 打开 免费注册 在 GitHub 上加入此对话。已有帐户? 登录评论 受让人 无人分配 标签 还没有 项目 还没有 里程碑 没有里程碑 发展 没有分支机构或拉取请求 2名参加者
如果这被认为对项目有利,我将帮助实施 2.9+0.1 的提议。
有一些自动代码检查器(有时)非常有用。一个很好的刺激是“cppcheck”——并不完美,但应该用它来发现一个或另一个内存泄漏或未定义的变量或普通错误。
我在 src/hal 中尝试过这个,发现了一些有趣的东西,比如
和下面的补丁
这个错误(如果这实际上是一个错误的话)是默认情况下对整数进行签名。