IntelliJ IDEA,ReSharper,SonarLint和SonarQube发现与PVS-Studio相同的错误-那么我们为什么需要PVS-Studio?

有时人们会问这个问题,这个问题解决了某个主题,但实际上是关于另一件事。 俗话说,一个有能力的问题包含一半的答案。

最近,我从JPoint会议上回来了,在会议上我们首先展示了用于Java的新型PVS-Studio分析仪。 在最近几年中,对静态分析的兴趣迅速增长,因此观众对PVS-Studio充满热情。 除了积极的反馈,我们还必须处理异议。 对于尝试使用PVS-Studio的建议,最常见的异议是这样的:“来吧,为什么我们要尝试PVS-Studio? 我们使用IntelliJ IDEA,ReSharper,SonarLint和SonarQube。 我们最近运行了PVS-Studio,发现了错误,IntelliJ IDEA已突出显示该错误!”

我不禁对此评论写一个简短的答复说明。 对于这个异议,我什至有两种回应。 是的,我故意对ReSharper说,因为我们的C#分析器也有一些问题。 好吧,答案来了。

首先,我们不会通过复制竞争对手的诊断程序来制作PVS-Studio。 不了解要点而盲目抄写无济于事。 静态代码分析的价值,其诊断价值不在发出警告的位置。 在这里不发出警告。 当每个诊断不能触发时,我们有10、20甚至更多的异常。 仅通过文档中的描述从其他产品复制诊断程序,与通过照片构造类似的建筑物相同。 如果“神使”与您建立相同的照片,大剧场的照片会有用吗?

因此,我们永远不会复制。 “但是你有类似的诊断!” -你会说。 当然可以。 表面上有许多错误的概念。 这是绝对显而易见的。 但是通常,具有相同描述的诊断甚至表现不同。

换句话说,如果您在标头中使用这些产品之一,则很可能会在运行PVS-Studio时发现一堆新错误,而其他产品尚未检测到这些错误。 客户的反馈和我们检查开源项目的经验都证实了这一点。

其次,即使您使用IntelliJ IDEA,ReSharper和SonarLint / SonarQube,并且它们在您的代码中发现与PVS-Studio相同的错误,对您来说也有个坏消息。 您使用发现错误的工具,确定。 为什么PVS-Studio在您的代码中发现其他工具似乎发现的错误? 为什么使用“将检测与PVS-Studio相同的东西”的工具仍然无助于修复错误? 也许这些工具只是让它们停留而不修复?

IntelliJ IDEA,ReSharper,SonarLint和SonarQube是出色的工具,无一例外。 高技能的团队正在使他们。 如果您使用它们-做正确的事。 工程文化的水平越高,业务越好。

但是,如果所有这些工具都发现“与PVS-Studio相同的错误”,但是错误仍然存​​在于代码中,则说明您做错了什么。 介绍团队中常规使用PVS-Studio之类的做法。 这样,将发现并修复错误。 PVS-Studio的引入将使开发人员修复错误。 但不仅仅是找到他们。

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


All Articles