静态分析和ROI

发布时间:2019-05-23 11:53

我经常与担心C ++程序错误的潜在用户进行沟通。他们担心的方式如下:他们尝试使用PVS-Studio工具并开始编写测试期间发现的错误太少。虽然我们觉得他们觉得这个工具很有意思,但他们的反应仍然很持怀疑态度。

然后讨论开始,我试图说服他们PVS-Studio是一个非常好的和有用的产品,它可以非常有利于他们的公司。作为回应,他们批评我的解释,并对分析仪的工作和它产生的误报作出苛刻的评论。通常的营销工作。

在与其中一位用户沟通时,我写了一个详细的答案,我的对手建议我把它作为一篇文章安排。这就是我在做的事情。我们正在等待您对静态代分析工具可能带来的利润估算的评论。虽然我写的文章记住了PVS-Studio,但无论在讨论什么样的静态分析工具,其中的计算似乎都很有趣。

下面引用的文字是对以下信件片段的回答:

...

大约有40(40)个真正的缺陷被发现 - 在大多数情况下,这是一个糟糕的粘贴。

问题是:我们从一个昂贵的程序集成到开发软件产品的过程中会得到什么,代中的程序检测到的缺陷很少?是的,我知道我们会更快地发现新错误,但没有那么多新错误。

...

因此,让我们从ROI的角度看一下静态分析工具。

让我们选择一名普通程序员,他将大部分工作时间花在开发C ++软件上。我很容易想象这样一个人,因为我自己已经很长时间编程了很多。假设他在晚上运行静态代分析器。还假设在这种工作模式下以中等编程速率使用的分析仪可以在一周内找到程序员编写的代中的两个缺陷。

这不是抽象的推理 - 我依靠自己的经验告诉这个。我现在只用一半的努力来处理代,但几乎每周我都会因为夜间分析而在我自己的代中发现错误。通常情况下,在编写测试或运行回归测试时会显露出一些小事,但有时候我会发现非常严肃的事情。以下是PVS-Studio最近在我自己的代中找到的缺陷示例:

 bool staticSpecification = IsStaticSpecification(sspec); 
bool virtualSpecification = IsVirtualSpecification(sspec);
bool externSpecification = IsVirtualSpecification(sspec);

我写关于伤害Copy-Paste的文章的事实绝不会阻止我犯这样的错误。我也是人类,我也会代片段并犯错误。很难捕捉到如上所示的错误。在实践中,它会导致分析器在某些情况下对某些代构造产生误报。我很难设法为这种罕见的情况创建一个手动测试(确切地说,由于我将此代放入SVN,我确实未能创建此测试)。这个错误的阴险是,如果一些用户抱怨它,我将至少在几个小时内搜索它,并且还要求用户向我发送* .i文件。但是,不要分心。

如果程序员比我更经常地编写代,分析师在一周内生成的2个真实警告是自然数量。总的来说,分析仪一年内可以产生2 * 4 * 11 = 88个实际警告。我们可以忽略修复此类缺陷和抑制误报所需的时间。但仍然要考虑到这一点。

假设程序员每周花费20分钟来修复2个真实错误和2个错误警报。他总共花费20 * 4 * 11 = 880分钟来处理分析仪。换句话说,它是15个小时。这似乎是浪费大量时间吗?与我们将进一步计算的内容相比,这是非常少的。

现在让我们考虑消除相同缺陷的价格,以防分析仪在夜间测试中检测不到它们。

程序员在单独的初步测试或调试其他代片段的过程中,在编写单元测试时稍后会发现这些错误的60%。假设在这种情况下搜索错误本身并修复它将花费大约15分钟,因为该人正在处理最近编写的代并且知道它很好。例如,程序员可能会在某个对话框中找到一个不应该存在的文本,并发现昨天他使用x.empty()而不是x.clear()通过acc

我经常与担心C ++程序错误的潜在用户进行沟通。他们担心的方式如下:他们尝试使用PVS-Studio工具并开始编写测试期间发现的错误太少。虽然我们觉得他们觉得这个工具很有意思,但他们的反应仍然很持怀疑态度。

然后讨论开始,我试图说服他们PVS-Studio是一个非常好的和有用的产品,它可以非常有利于他们的公司。作为回应,他们批评我的解释,并对分析仪的工作和它产生的误报作出苛刻的评论。通常的营销工作。

在与其中一位用户沟通时,我写了一个详细的答案,我的对手建议我把它作为一篇文章安排。这就是我在做的事情。我们正在等待您对静态代分析工具可能带来的利润估算的评论。虽然我写的文章记住了PVS-Studio,但无论在讨论什么样的静态分析工具,其中的计算似乎都很有趣。

下面引用的文字是对以下信件片段的回答:

...

大约有40(40)个真正的缺陷被发现 - 在大多数情况下,这是一个糟糕的粘贴。

问题是:我们从一个昂贵的程序集成到开发软件产品的过程中会得到什么,代中的程序检测到的缺陷很少?是的,我知道我们会更快地发现新错误,但没有那么多新错误。

...

因此,让我们从ROI的角度看一下静态分析工具。

让我们选择一名普通程序员,他将大部分工作时间花在开发C ++软件上。我很容易想象这样一个人,因为我自己已经很长时间编程了很多。假设他在晚上运行静态代分析器。还假设在这种工作模式下以中等编程速率使用的分析仪可以在一周内找到程序员编写的代中的两个

缺陷。

这不是抽象的推理 - 我依靠自己的经验告诉这个。我现在只用一半的努力来处理代,但几乎每周我都会因为夜间分析而在我自己的代中发现错误。通常情况下,在编写测试或运行回归测试时会显露出一些小事,但有时候我会发现非常严肃的事情。以下是PVS-Studio最近在我自己的代中找到的缺陷示例:

 bool staticSpecification = IsStaticSpecification(sspec); 
bool virtualSpecification = IsVirtualSpecification(sspec);
bool externSpecification = IsVirtualSpecification(sspec);

我写关于伤害Copy-Paste的文章的事实绝不会阻止我犯这样的错误。我也是人类,我也会代片段并犯错误。很难捕捉到如上所示的错误。在实践中,它会导致分析器在某些情况下对某些代构造产生误报。我很难设法为这种罕见的情况创建一个手动测试(确切地说,由于我将此代放入SVN,我确实未能创建此测试)。这个错误的阴险是,如果一些用户抱怨它,我将至少在几个小时内搜索它,并且还要求用户向我发送* .i文件。但是,不要分心。

如果程序员比我更经常地编写代,分析师在一周内生成的2个真实警告是自然数量。总的来说,分析仪一年内可以产生2 * 4 * 11 = 88个实际警告。我们可以忽略修复此类缺陷和抑制误报所需的时间。但仍然要考虑到这一点。

假设程序员每周花费20分钟来修复2个真实错误和2个错误警报。他总共花费20 * 4 * 11 = 880分钟来处理分析仪。换句话说,它是15个小时。这似乎是浪费大量时间吗?与我们将进一步计算的内容相比,这是非常少的。

现在让我们考虑消除相同缺陷的价格,以防分析仪在夜间测试中检测不到它们。

程序员在单独的初步测试或调试其他代片段的过程中,在编写单元测试时稍后会发现这些错误的60%。假设在这种情况下搜索错误本身并修复它将花费大约15分钟,因为该人正在处理最近编写的代并且知道它很好。例如,程序员可能会在某个对话框中找到一个不应该存在的文本,并发现昨天他使用x.empty()而不是x.clear()通过acc

我经常与担心C ++程序错误的潜在用户进行沟通。他们担心的方式如下:他们尝试使用PVS-Studio工具并开始编写测试期间发现的错误太少。虽然我们觉得他们觉得这个工具很有意思,但他们的反应仍然很持怀疑态度。

然后讨论开始,我试图说服他们PVS-Studio是一个非常好的和有用的产品,它可以非常有利于他们的公司。作为回应,他们批评我的解释,并对分析仪的工作和它产生的误报作出苛刻的评论。通常的营销工作。

在与其中一位用户沟通时,我写了一个详细的答案,我的对手建议我把它作为一篇文章安排。这就是我在做的事情。我们正在等待您对静态代分析工具可能带来的利润估算的评论。虽然我写的文章记住了PVS-Studio,但无论在讨论什么样的静态分析工具,其中的计算似乎都很有趣。

下面引用的文字是对以下信件片段的回答:

...

大约有40(40)个真正的缺陷被发现 - 在大多数情况下,这是一个糟糕的粘贴。

问题是:我们从一个昂贵的程序集成到开发软件产品的过程中会得到什么,代中的程序检测到的缺陷很少?是的,我知道我们会更快地发现新错误,但没有那么多新错误。

...

因此,让我们从ROI的角度看一下静态分析工具。

让我们选择一名普通程序员,他将大部分工作时间花在开发C ++软件上。我很容易想象这样一个人,因为我自己已经很长时间编程了很多。假设他在晚上运行静态代分析器。还假设在这种工作模式下以中等编程速率使用的分析仪可以在一周内找到程序员编写的代中的两个缺陷。

这不是抽象的推理 - 我依靠自己的经验告诉这个。我现在只用一半的努力来处理代,但几乎每周我都会因为夜间分析而在我自己的代中发现错误。通常情况下,在编写测试或运行回归测试时会显露出一些小事,但有时候我会发现非常严肃的事情。以下是PVS-Studio最近在我自己的代中找到的缺陷示例:

 bool staticSpecification = IsStaticSpecification(sspec); 
bool virtualSpecification = IsVirtualSpecification(sspec);
bool externSpecification = IsVirtualSpecification(sspec);

我写关于伤害Copy-Paste的文章的事实绝不会阻止我犯这样的错误。我也是人类,我也会代片段并犯错误。很难捕捉到如上所示的错误。在实践中,它会导致分析器在某些情况下对某些代构造产生误报。我很难设法为这种罕见的情况创建一个手动测试(确切地说,由于我将此代放入SVN,我确实未能创建此测试)。这个错误的阴险是,如果一些用户抱怨它,我将至少在几个小时内搜索它,并且还要求用户向我发送* .i文件。但是,不要分心。

如果程序员比我更经常地编写代,分析师在一周内生成的2个真实警告是自然数量。总的来说,分析仪一年内可以产生2 * 4 * 11 = 88个实际警告。我们可以忽略修复此类缺陷和抑制误报所需的时间。但仍然要考虑到这一点。

假设程序员每周花费20分钟来修复2个真实错误和2个错误警报。

他总共花费20 * 4 * 11 = 880分钟来处理分析仪。换句话说,它是15个小时。这似乎是浪费大量时间吗?与我们将进一步计算的内容相比,这是非常少的。

现在让我们考虑消除相同缺陷的价格,以防分析仪在夜间测试中检测不到它们。

程序员在单独的初步测试或调试其他代片段的过程中,在编写单元测试时稍后会发现这些错误的60%。假设在这种情况下搜索错误本身并修复它将花费大约15分钟,因为该人正在处理最近编写的代并且知道它很好。例如,程序员可能会在某个对话框中找到一个不应该存在的文本,并发现昨天他使用x.empty()而不是x.clear()通过acc

上一篇:生化奇兵瞄准六月
下一篇:Gamerbee在The Traveling Circus下打架

相关文章:
  • dna序列分析发现
  • 据省气象台副台长叶成志分析
  • 作为《武魂》国战中最基础