PVS-Studio用户支持的一天

图片1

我们欢迎任何有关代码质量的主题讨论。 互联网上的客户,学生和任何其他用户都与我们联系。 无论国家,时区或语言如何。 当然是口语。 在编程语言中,我们仍然对有限的集合感兴趣。 现在是C,C ++,C#和Java。 交流的好处很多。 我们会立即实施一些用户优惠,因为 他们真的很有帮助。 通常,我们只是简单地帮助某人的项目,解释分析器警告,最终结果是一个错误。 此注释是关于一种这样的情况。

关于分析仪


PVS-Studio是用于检测用C,C ++,C#和Java编写的程序的源代码中的错误和潜在漏洞的工具。 它可以在Windows,Linux和macOS上运行。

对于交流,有3种形式的反馈:

  1. 意见反馈
  2. 试用要求
  3. 价格要求

星期四晚上


一个主动在其代码上尝试使用分析器的活跃用户开始发送错误警告。 在我回答之前,累积了3个字母。 这是工作日的结束,并且几乎没有力量(关于手动代码审查的可靠性问题)。 我们的团队正在为即将发布的大版本进行积极准备。

我决定将答案推迟到星期五甚至下周:

您好,康斯坦丁。

我们解析警告。 下周我将在可疑的地方发表评论:-)

请注意,静态代码分析非常有效,并且在许多情况下,尤其是在工作日结束时,手动代码检查将不如自动验证。

在用户许可下,我将向您介绍相关信息:

字母1

误报V712:

uint32_t StartUpCounter = 0, HSEStatus = 0; RCC->CR |= ((uint32_t)RCC_CR_HSEON); /* Wait till HSE is ready and if Time out is reached exit */ { HSEStatus = RCC->CR & RCC_CR_HSERDY; StartUpCounter++; } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); // V712... 

字母2

V715有误报:

 { // V715 ... lpmode.cpp 356 HSEStatus = RCC->CR & RCC_CR_HSERDY; StartUpCounter++; } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); 

字母3

圣诞树棒,附魔的地方! 发誓,一切都在那里(请参阅前几个字母的代码):

V560条件表达式的一部分始终为true:(StartUpCounter!=((Uint16_t)0x5000))。 lpmode.cpp 356

V776潜在无限循环。 循环退出条件“ HSEStatus == 0”中的变量在两次迭代之间不会更改其值。 lpmode.cpp 356

也许我听不懂? 但是实际上,一切正常,如果石英无法启动,那么我们将通过超时退出本节;-)

字母4(答案)

您好,康斯坦丁。

我们解析警告。 下周我将在可疑的地方发表评论:-)

信5

地狱 我只有在横向书写后才能看到您的代码-do语句被跳过了……一切都准备就绪! 眼睛很模糊%)

{...}期间(...);

结论


您可能已经注意到,同一位置有4个分析仪警告,但是仍然需要一些时间才能使用户确信错误。 在这种情况下,手动检查甚至没有机会。

一个类似的故事以一个幸福的结局为例:“ PVS-Studio原来比三个半程序员更专心 。”

在您的项目中使用静态分析器。 它们不能代替同事进行代码审查,而是对代码质量控制的有用补充。



如果您想与说英语的读者分享这篇文章,请使用以下链接:Svyatoslav Razmyslov。 PVS-Studio用户支持的一天

Source: https://habr.com/ru/post/zh-CN467563/


All Articles