开源改变世界

在连续构建测试中集成 cppcheck #1574

推推 grbl 3年前 (2023-01-30) 184次浏览
打开
smoe 打开了这个问题 2022 年 2 月 6 日 · 1条评论
打开

在连续构建测试中集成 cppcheck#1574

smoe 打开了这个问题 2022 年 2 月 6 日 · 1条评论

注释

在连续构建测试中集成 cppcheck #1574
贡献者

如果这被认为对项目有利,我将帮助实施 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;       }   

这个错误(如果这实际上是一个错误的话)是默认情况下对整数进行签名。

在连续构建测试中集成 cppcheck #1574

我赞成在我们的 CI 系统中增加使用自动代码检查器。

免费注册 在 GitHub 上加入此对话。已有帐户? 登录评论
标签
还没有
项目

还没有

发展

没有分支机构或拉取请求

2名参加者
在连续构建测试中集成 cppcheck #1574在连续构建测试中集成 cppcheck #1574

喜欢 (0)