主页 > 44woool传世发布网 > >

静态分析作为虚幻引擎中开发过程的一部分

发布时间:2019-07-03 11:09

虚幻引擎继续开发,因为添加了新代并且以前编写的代已更改。项目中持续发展的必然结果是什么?程序员希望尽早识别代中新错误的出现。减少错误数量的方法之一是使用像PVS-Studio这样的静态分析器。此外,分析器不仅在不断发展,而且还在不断学习寻找新的错误模式,其中一些我们将在本文中讨论。如果您关心代质量,那么本文适合您。

本文由Andrey Karpov编写;代片段由PVS-Studio团队的Ilya Ivanov和Sergey Vasiliev提供。本文最初发布于虚幻引擎博客。

静态代分析,理论参考

静态代分析是检测程序源代中的错误和缺陷的过程。静态分析可以看作是自动代审查的过程。让我们更详细地谈谈代审查。

代审查是检测缺陷的最古老,最有用的方法之一。它涉及联合阅读源代,并提供有关如何进行改进的建议。此过程有助于检测可能在将来出错的错误或代片段。此外,还有一种规则,即代的作者不应对程序的某个部分如何工作给出任何解释。通过查看程序文本和代中的注释,算法应该清晰。如果不是这样,则应修改代。

作为一项规则,代审查工作得很好,因为程序员注意到别人的代中的错误比他们自己的代更容易。您可以在Steve McConnell的一本好书中找到有关代审查方法的更多详细信息,“Code Complete”。

代审查的方法有两个缺点:

价格非常高。有必要分散几个程序员的主要任务,以审查新编写的代,或在建议的修改后重写代。与此同时,程序员应该在工作时经常休息休息。如果一个人试图查看大型代片段,则存在迅速失去注意力和使用它的危险。检测与新/修改的代没有直接关系的错误也很困难。查看一个新的代片段,并不容易认为 malloc 函数工作不正确,因为头文件 stdlib.h 未包含在中。您可以在文章“C中的一个漂亮的64位错误”中找到有关此情况的更多详细信息。还有一个例子:更改函数类型或头文件中的变量。理想情况下,程序员应该检查在此类更改之后使用此函数或变量的整个代。在实践中,这太费时了,而且作为规则,审查仅限于程序员改变某些内容的那些片段。

一方面,我们希望定期进行代审查。另一方面,它太贵了。妥协是静态分析。静态分析工具检查程序的源文本,并向程序员提供有关查看某些代片段的建议。分析器不会感到疲倦,并检查受头文件更改影响的整个代。当然,程序不会取代由开发团队完成的完整代审查。然而,利益/价格比率使静态分析成为许多公司采用的非常有用的方法。

与任何其他错误检测方法一样,静态分析有其优点和缺点。没有理想的测试程序方法。使用各种方法的组合可以实现最佳结果,例如:良好的编风格,静态代分析,动态代分析,单元测试,回归测试等。

静态分析的一个重要优势是能够在代出现后立即检测到大量错误,这意味着修复它们不会花费太多。

问题是,检测到的错误越早,纠正错误的成本就越低。因此,根据书籍“Code Complete”,通过McConnell,在测试代阶段纠正错误的成本是编写代阶段的十倍:

表N1。 图7 - 根据检测时间纠正缺陷的平均成本(表中显示的数据来自S. McConnell的“Code Complete”一书

静态分析工具allo

虚幻引擎继续开发,因为添加了新代并且以前编写的代已更改。项目中持续发展的必然结果是什么?程序员希望尽早识别代中新错误的出现。减少错误数量的方法之一是使用像PVS-Studio这样的静态分析器。此外,分析器不仅在不断发展,而且还在不断学习寻找新的错误模式,其中一些我们将在本文中讨论。如果您关心代质量,那么本文适合您。

本文由Andrey Karpov编写;代片段由PVS-Studio团队的Ilya Ivanov和Sergey Vasiliev提供。本文最初发布于虚幻引擎博客。

静态代分析,理论参考

静态代分析是检测程序源代中的错误和缺陷的过程。静态分析可以看作是自动代审查的过程。让我们更详细地谈谈代审查。

代审查是检测缺陷的最古老,最有用的方法之一。它涉及联合阅读源代,并提供有关如何进行改进的建议。此过程有助于检测可能在将来出错的错误或代片段。此外,还有一种规则,即代的作者不应对程序的某个部分如何工作给出任何解释。通过查看程序文本和代中的注释,算法应该清晰。如果不是这样,则应修改代。

作为一项规则,代审查工作得很好,因为程序员注意到别人的代中的错误比他们自己的代更容易。您可以在Steve McConnell的一本好书中找到有关代审查方法的更多详细信息,“Code Complete”。

代审查的方法有两个缺点:

价格非常高。有必要分散几个程序员的主要任务,以审查新编写的代,或在建议的修改后重写代。与此同时,程序员应该在工作时经常休息休息。如果一个人试图查看大型代片段,则存在迅速失去注意力和使用它的危险。检测与新/修改的代没有直接关系的错误也很困难。查看一个新的代片段,并不容易认为 malloc 函数工作不正确,因为头文件 stdlib.h 未包含在中。您可以在文章“C中的一个漂亮的64位错误”中找到有关此情况的更多详细信息。还有一个例子:更改函数类型或头文件中的变量。理想情况下,程序员应该检查在此类更改之后使用此函数或变量的整个代。在实践中,这太费时了,而且作为规则,审查仅限于程序员改变某些内容的那些片段。

一方面,我们希望定期进行代审查。另一方面,它太贵了。妥协是静态分析。静态分析工具检查程序的源文本,并向程序员提供有关查看某些代片段的建议。分析器不会感到疲倦,并检查受头文件更改影响的整个代。当然,程序不会取代由开发团队完成的完整代审查。然而,利益/价格比率使静态分析成为许多公司采用的非常有用的方法。

与任何其他错误检测方法一样,静态分析有其优点和缺点。没有理想的测试程序方法。使用各种方法的组合可以实现最佳结果,例如:良好的编风格,静态代分析,动态代分析,单元测试,回归测试等。

静态分析的一个重要优势是能够在代出现后立即检测到大量错误,这意味着修复它们不会花费太多。

问题是,检测到的错误越早,纠正错误的成本就越低。因此,根据书籍“Code Complete”,通过McConnell,在测试代阶段纠正错误的成本是编写代阶段的十倍:

表N1。 图7 - 根据检测时间纠正缺陷的平均成本(表中显示的数据来自S. McConnell的“Code Complete”一书

静态分析工具allo

虚幻引擎继续开发,因为添加了新代并且以前编写的代已更改。项目中持续发展的必然结果是什么?程序员希望尽早识别代中新错误的出现。减少错误数量的方法之一是使用像PVS-Studio这样的静态分析器。此外,分析器不仅在不断发展,而且还在不断学习寻找新的错误模式,其中一些我们将在本文中讨论。如果您关心代质量,那么本文适合您。

本文由Andrey Karpov编写;代片段由PVS-Studio团队的Ilya Ivanov和Sergey Vasiliev提供。本文最初发布于虚幻引擎博客。

静态代分析,理论参考

静态代分析是检测程序源代中的错误和缺陷的过程。静态分析可以看作是自动代审查的过程。让我们更详细地谈谈代审查。

代审查是检测缺陷的最古老,最有用的方法之一。它涉及联合阅读源代,并提供有关如何进行改进的建议。此过程有助于检测可能在将来出错的错误或代片段。此外,还有一种规则,即代的作者不应对程序的某个部分如何工作给出任何解释。通过查看程序文本和代中的注释,算法应该清晰。如果不是这样,则应修改代。

作为一项规则,代审查工作得很好,因为程序员注意到别人的代中的错误比他们自己的代更容易。您可以在Steve McConnell的一本好书中找到有关代审查方法的更多详细信息,“Code Complete”。

代审查的方法有两个缺点:

价格非常高。有必要分散几个程序员的主要任务,以审查新编写的代,或在建议的修改后重写代。与此同时,程序员应该在工作时经常休息休息。如果一个人试图查看大型代片段,则存在迅速失去注意力和使用它的危险。检测与新/修改的代没有直接关系的错误也很困难。查看一个新的代片段,并不容易认为 malloc 函数工作不正确,因为头文件 stdlib.h 未包含在中。您可以在文章“C中的一个漂亮的64位错误”中找到有关此情况的更多详细信息。还有一个例子:更改函数类型或头文件中的变量。理想情况下,程序员应该检查在此类更改之后使用此函数或变量的整个代。在实践中,这太费时了,而且作为规则,审查仅限于程序员改变某些内容的那些片段。

一方面,我们希望定期进行代审查。另一方面,它太贵了。妥协是静态分析。静态分析工具检查程序的源文本,并向程序员提供有关查看某些代片段的建议。分析器不会感到疲倦,并检查受头文件更改影响的整个代。当然,程序不会取代由开发团队完成的完整代审查。然而,利益/价格比率使静态分析成为许多公司采用的非常有用的方法。

与任何其他错误检测方法一样,静态分析有其优点和缺点。没有理想的测试程序方法。使用各种方法的组合可以实现最佳结果,例如:良好的编风格,静态代分析,动态代分析,单元测试,回归测试等。

静态分析的一个重要优势是能够在代出现后立即检测到大量错误,这意味着修复它们不会花费太多。

问题是,检测到的错误越早,纠正错误的成本就越低。因此,根据书籍“Code Complete”,通过McConnell,在测试代阶段纠正错误的成本是编写代阶段的十倍:

表N1。 图7 - 根据检测时间纠正缺陷的平均成本(表中显示的数据来自S. McConnell的“Code Complete”一书

静态分析工具allo

虚幻引擎继续开发,因为添加了新代并且以前编写的代已更改。项目中持续发展的必然结果是什么?程序员希望尽早识别代中新错误的出现。减少错误数量的方法之一是使用像PVS-Studio这样的静态分析器。此外,分析器不仅在不断发展,而且还在不断学习寻找新的错误模式,其中一些我们将在本文中讨论。如果您关心代质量,那么本文适合您。

本文由Andrey Karpov编写;代片段由PVS-Studio团队的Ilya Ivanov和Sergey Vasiliev提供。本文最初发布于虚幻引擎博客。

静态代分析,理论参考

静态代分析是检测程序源代中的错误和缺陷的过程。静态分析可以看作是自动代审查的过程。让我们更详细地谈谈代审查。

代审查是检测缺陷的最古老,最有用的方法之一。它涉及联合阅读源代,并提供有关如何进行改进的建议。此过程有助于检测可能在将来出错的错误或代片段。此外,还有一种规则,即代的作者不应对程序的某个部分如何工作给出任何解释。通过查看程序文本和代中的注释,算法应该清晰。如果不是这样,则应修改代。

作为一项规则,代审查工作得很好,因为程序员注意到别人的代中的错误比他们自己的代更容易。您可以在Steve McConnell的一本好书中找到有关代审查方法的更多详细信息,“Code Complete”。

代审查的方法有两个缺点:

价格非常高。有必要分散几个程序员的主要任务,以审查新编写的代,或在建议的修改后重写代。与此同时,程序员应该在工作时经常休息休息。如果一个人试图查看大型代片段,则存在迅速失去注意力和使用它的危险。检测与新/修改的代没有直接关系的错误也很困难。查看一个新的代片段,并不容易认为 malloc 函数工作不正确,因为头文件 stdlib.h 未包含在中。您可以在文章“C中的一个漂亮的64位错误”中找到有关此情况的更多详细信息。还有一个例子:更改函数类型或头文件中的变量。理想情况下,程序员应该检查在此类更改之后使用此函数或变量的整个代。在实践中,这太费时了,而且作为规则,审查仅限于程序员改变某些内容的那些片段。

一方面,我们希望定期进行代审查。另一方面,它太贵了。妥协是静态分析。静态分析工具检查程序的源文本,并向程序员提供有关查看某些代片段的建议。分析器不会感到疲倦,并检查受头文件更改影响的整个代。当然,程序不会取代由开发团队完成的完整代审查。然而,利益/价格比率使静态分析成为许多公司采用的非常有用的方法。

与任何其他错误检测方法一样,静态分析有其优点和缺点。没有理想的测试程序方法。使用各种方法的组合可以实现最佳结果,例如:良好的编风格,静态代分析,动态代分析,单元测试,回归测试等。

静态分析的一个重要优势是能够在代出现后立即检测到大量错误,这意味着修复它们不会花费太多。

问题是,检测到的错误越早,纠正错误的成本就越低。因此,根据书籍“Code Complete”,通过McConnell,在测试代阶段纠正错误的成本是编写代阶段的十倍:

表N1。 图7 - 根据检测时间纠正缺陷的平均成本(表中显示的数据来自S. McConnell的“Code Complete”一书

静态分析工具allo

虚幻引擎继续开发,因为添加了新代并且以前编写的代已更改。项目中持续发展的必然结果是什么?程序员希望尽早识别代中新错误的出现。减少错误数量的方法之一是使用像PVS-Studio这样的静态分析器。此外,分析器不仅在不断发展,而且还在不断学习寻找新的错误模式,其中一些我们将在本文中讨论。如果您关心代质量,那么本文适合您。

本文由Andrey Karpov编写;代片段由PVS-Studio团队的Ilya Ivanov和Sergey Vasiliev提供。本文最初发布于虚幻引擎博客。

静态代分析,理论参考

静态代分析是检测程序源代中的错误和缺陷的过程。静态分析可以看作是自动代审查的过程。让我们更详细地谈谈代审查。

代审查是检测缺陷的最古老,最有用的方法之一。它涉及联合阅读源代,并提供有关如何进行改进的建议。此过程有助于检测可能在将来出错的错误或代片段。此外,还有一种规则,即代的作者不应对程序的某个部分如何工作给出任何解释。通过查看程序文本和代中的注释,算法应该清晰。如果不是这样,则应修改代。

作为一项规则,代审查工作得很好,因为程序员注意到别人的代中的错误比他们自己的代更容易。您可以在Steve McConnell的一本好书中找到有关代审查方法的更多详细信息,“Code Complete”。

代审查的方法有两个缺点:

价格非常高。有必要分散几个程序员的主要任务,以审查新编写的代,或在建议的修改后重写代。与此同时,程序员应该在工作时经常休息休息。如果一个人试图查看大型代片段,则存在迅速失去注意力和使用它的危险。检测与新/修改的代没有直接关系的错误也很困难。查看一个新的代片段,并不容易认为 malloc 函数工作不正确,因为头文件 stdlib.h 未包含在中。您可以在文章“C中的一个漂亮的64位错误”中找到有关此情况的更多详细信息。还有一个例子:更改函数类型或头文件中的变量。理想情况下,程序员应该检查在此类更改之后使用此函数或变量的整个代。在实践中,这太费时了,而且作为规则,审查仅限于程序员改变某些内容的那些片段。

一方面,我们希望定期进行代审查。另一方面,它太贵了。妥协是静态分析。静态分析工具检查程序的源文本,并向程序员提供有关查看某些代片段的建议。分析器不会感到疲倦,并检查受头文件更改影响的整个代。当然,程序不会取代由开发团队完成的完整代审查。然而,利益/价格比率使静态分析成为许多公司采用的非常有用的方法。

与任何其他错误检测方法一样,静态分析有其优点和缺点。没有理想的测试程序方法。使用各种方法的组合可以实现最佳结果,例如:良好的编风格,静态代分析,动态代分析,单元测试,回归测试等。

静态分析的一个重要优势是能够在代出现后立即检测到大量错误,这意味着修复它们不会花费太多。

问题是,检测到的错误越早,纠正错误的成本就越低。因此,根据书籍“Code Complete”,通过McConnell,在测试代阶段纠正错误的成本是编写代阶段的十倍:

表N1。 图7 - 根据检测时间纠正缺陷的平均成本(表中显示的数据来自S. McConnell的“Code Complete”一书

静态分析工具allo

上一篇:Green Man Gaming将在Interface推出新的融资选项
下一篇:Shaun White用刺客信条引擎为滑雪板致死

相关资讯