Leo Tolstoy和静态代分析

发布时间:2019-05-26 16:25

这次我们用PVS-Studio检查了Apache HTTP Server。正如我们所料,我们在那里发现了错误。错误很少。我们也期待这一点。

其他开发人员在他们的项目上测试PVS-Studio时也会遇到这种情况。不幸的是,你只想看到一些错误就得出的第一个结论就是像这样的工具对你来说是无用的。我刚刚发明了一个很好的比喻来说明为什么不是这样。

想象一下以下情况。我们有Leo Tolstoy的作品,例如“战争与和平”。我们想在本书中测试集成到Microsoft Word中的拼写检查机制。我们启动分析,发现一些真正的错误和大量错误报告。此外,列夫托尔斯泰很容易写长句。无法理解文本的Microsoft Word将使用绿色强调许多片段,假设存在标点符号错误。我们正在关注这一切并对此嗤之以鼻。我们不喜欢Word认为许多名称不正确。我们不喜欢标点符号分析。我们得出结论,Word中的拼写检查是绝对没用的。

让我们找出这种研究工具的方法有什么问题。

我们忘记了人们已经完成了书中的错误。他们花了很多时间和精力。利奥托尔斯泰重写了他的选秀并消除了错误。编辑正在努力将文本转化为书。在下一版中已经修复了一些东西。

当然,该程序不会发现书中的所有错误。人们可以做得更好。但该计划的速度更快,因此大大减少了人力资源的浪费。这个工具的真正优势在于它经常使用:你刚刚写了一个段落,注意到一个带下划线的错误并立即修复它。现在,在重读文本时,一个人可以专注于内容和微妙的错误,而不是修复琐碎的错误。

关于虚假报道问题的评论也令人难以置信。您只需要在字典中添加一个未知单词,它将不再打扰文本的作者。好吧,其余的显然是错误的警告你可以点击鼠标右键并选择“忽略”。

我认为在Word,Thunderbird和TortoiseSVN等程序中嵌入文本检查机制的有用是不合理的。我们使用它们并不担心它们在“战争与和平”一书中找不到任何错误。

软件源代的静态分析也存在类似的情况。检查像Apache HTTP Server这样的项目并试图估计从分析中得出的可能利润是没有意义的。从编程的角度来看,Apache HTTP Server的代是旧的。作为一个项目,Apache HTTP Server已存在超过15年。代的质量得到了大量基于它的项目的证实。当然,由于大量程序员对代的广泛使用以及较长的开发时间,许多错误得到了解决。

假设如果使用静态分析,可以更容易地发现前面发现的许多错误是合乎逻辑的。在这种情况下,与Word的类比是完整的。定期搜索错误比一次搜索更有用。

就像在Word编辑器中一样,可以轻松消除PVS-Studio中的错误报告:您只需单击一条错误消息并将其隐藏(特殊注释将自动添加到相应的代片段中)。

让我们通过错误检测速度的参数进行最终比较。 Word编辑器可以立即强调错误。 PVS-Studio分析器在编译文件后执行此作。这不能提前完成,因为语法太复杂,无法分析不完整的代。然而,这已经足够了。我们可能会将PVS-Studio视为获取更多编译器生成警告的工具。顺便说一句,PVS-Studio可以在各种Visual Studio版本中实现:2005年,2008年,2010年。欢迎您尝试增量分析。

总而言之,我发现与Word绝对的类比。如果有人不同意,我们可以通过评论或电子邮件继续讨论(karpov [@] viva64.com)。

我已经制定了我想与你分享的主要想法。但是,如果我没有写一些Apache HTTP Server中发现的错误示例,我会让读者失望。那么,让我们谈谈检测到的错误。

不必要的sizeof()。

的示例
 PSECURITY_ATTRIBUTES GetNullACL(void){PSECURITY_ATTRIBUTES sa;sa =(PSECURITY_ATTRIBUTES)LocalAlloc(LPTR,?的sizeof(SECURITY_ATTRIBUTES));sa-> nLength = sizeof(sizeof(SECURITY_ATTRIBUTES));...} 

PVS-Studio的诊断信息如下:V568 a很奇怪

这次我们用PVS-Studio检查了Apache HTTP Server。正如我们所料,我们在那里发现了错误。错误很少。我们也期待这一点。

其他开发人员在他们的项目上测试PVS-Studio时也会遇到这种情况。不幸的是,你只想看到一些错误就得出的第一个结论就是像这样的工具对你来说是无用的。我刚刚发明了一个很好的比喻来说明为什么不是这样。

想象一下以下情况。我们有Leo Tolstoy的作品,例如“战争与和平”。我们想在本书中测试集成到Microsoft Word中的拼写检查机制。我们启动分析,发现一些真正的错误和大量错误报告。此外,列夫托尔斯泰很容易写长句。无法理解文本的Microsoft Word将使用绿色强调许多片段,假设存在标点符号错误。我们正在关注这一切并对此嗤之以鼻。我们不喜欢Word认为许多名称不正确。我们不喜欢标点符号分析。我们得出结论,Word中的拼写检查是绝对没用的。

让我们找出这种研究工具的方法有什么问题。

我们忘记了人们已经完成了书中的错误。他们花了很多时间和精力。利奥托尔斯泰重写了他的选秀并消除了错误。编辑正在努力将文本转化为书。在下一版中已经修复了一些东西。

当然,该程序不会发现书中的所有错误。人们可以做得更好。但该计划的速度更快,因此大大减少了人力资源的浪费。这个工具的真正优势在于它经常使用:你刚刚写了一个段落,注意到一个带下划线的错误并立即修复它。现在,在重读文本时,一个人可以专注于内容和微妙的错误,而不是修复琐碎的错误。

关于虚假报道问题的评论也令人难以置信。您只需要在字典中添加一个未知单词,它将不再打扰文本的作者。好吧,其余的显然是错误的警告你可以点击鼠标右键并选择“忽略”。

我认为在Word,Thunderbird和TortoiseSVN等程序中嵌入文本检查机制的有用是不合理的。我们使用它们并不担心它们在“战争与和平”一书中找不到任何错误。

软件源代的静态分析也存在类似的情况。检查像Apache HTTP Server这样的项目并试图估计从分析中得出的可能利润是没有意义的。从编程的角度来看,Apache HTTP Server的代是旧的。作为一个项目,Apache HTTP Server已存在超过15年。代的质量得到了大量基于它的项目的证实。当然,由于大量程序员对代的广泛使用以及较长的开发时间,许多错误得到了解决。

假设如果使用静态分析,可以更容易地发现前面发现的许多错误是合乎逻辑的。在这种情况下,与Word的类比是完整的。定期搜索错误比一次搜索更有用。

就像在Word编辑器中一样,可以轻松消除PVS-Studio中的错误报告:您只需单击一条错误消息并将其隐藏(特殊注释将自动添加到相应的代片段中)。

让我们通过错误检测速度的参数进行最终比较。 Word编辑器可以立即强调错误。 PVS-Studio分析器在编译文件后执行此作。这不能提前完成,因为语法太复杂,无法分析不完整的代。然而,这已经足够了。我们可能会将PVS-Studio视为获取更多编译器生成警告的工具。顺便说一句,PVS-Studio可以在各种Visual Studio版本中实现:2005年,2008年,2010年。欢迎您尝试增量分析。

总而言之,我发现与Word绝对的类比。如果有人不同意,我们可以通过评论或电子邮件继续讨论(karpov [@] viva64.com)。

我已经制定了我想与你分享的主要想法。但是,如果我没有写一些Apache HTTP Server中发现的错误示例,我会让读者失望。那么,让我们谈谈检测到的错误。

不必要的sizeof()。

的示例
 PSECURITY_ATTRIBUTES GetNullACL(void){PSECURITY_ATTRIBUTES sa;sa =(PSECURITY_ATTRIBUTES)LocalAlloc(LPTR,?的sizeof(SECURITY_ATTRIBUTES));sa-> nLength = sizeof(sizeof(SECURITY_ATTRIBUTES));...} 

PVS-Studio的诊断信息如下:V568 a很奇怪

上一篇:Destiny 2 Dev解释导游和新武器系统 下一篇:没有了

相关新闻