我只是想知道静态代码分析和代码审查之间的区别。这两个分别如何完成?更具体地说,今天有哪些工具可用于PHP的代码审查/静态分析?我还想知道用于任何语言的代码审查的好的工具。
我只是想知道静态代码分析和代码审查之间的区别。这两个分别如何完成?更具体地说,今天有哪些工具可用于PHP的代码审查/静态分析?我还想知道用于任何语言的代码审查的好的工具。
Answers:
代码审查是人们要做的事情,静态分析是机器要做的事情。有(有时很好)静态分析工具。代码审查是指同事/导师/教授/朋友检查您的代码并给您有建设性的批评。
另一方面,静态分析是一种自动化过程,其中,机器会根据对所分析语言的了解(通常从类型系统中获悉)来分析程序,并尝试找出可能不正确的内容,效率低下,风格不佳或其他效果不理想。
静态分析是在不执行软件的情况下对其进行分析的过程。这是非常好的建议,但您必须记住
这两种方法都缺少上下文:它们不知道sw应该实现的目标。
代码检查是由另一个编码器完成的,他应该知道并且可以检查
它昂贵得多,并且具有不同程度的可重复性,但有很大帮助。
与往常一样,没有一个能够解决所有错误并避免所有问题的灵丹妙药。建议应用-尽可能给出位置,代码,时间,三种检查形式(静态,动态,更多的眼睛(和大脑)实际查看代码),建议使用。
ps:我必须指出,通常从头开始应用工具要好得多。由于误报,转换旧版系统的体验要差得多。如果您从头开始,并且始终致力于保持分析工具的清洁,则可能会避免很多问题。
pps:至于工具,取决于语言。在C和C ++世界中,您可以先查看Visual Studio本身,它包含一个内置的静态分析工具。相对完整的列表可以在Wikipedia上找到。
ppps:静态分析更适合静态语言,例如C或C ++。对于Python,由于其动态属性,很难说一个指向某个列表的名称是否指向该程序其余部分的列表。这并不意味着什么也不能做,就像PyPy所示的JIT一样。
代码审查是指高级或专门机构检查您的代码,您的编码方式,代码中遵循的标准以及代码的逻辑级别的情况
就静态分析而言,它是在没有实际执行由该软件构建的程序的情况下执行的计算机软件分析(对执行程序执行的分析称为动态分析)。
根据技术的工具列表在下面的链接中给出
因此,代码审查和静态分析是完全不同的术语。
代码审查是更定性的评估,静态代码分析是更定量的评估。
嘿,男孩,这种方法可以写得更好
vs,fe
性能下降。使用'wcslen(str)> 0'构造来识别空字符串效率不高。一种更有效的方法是检查:str [0]!='\ 0'。
性能下降。strlen(MyStr.c_str())类型的表达式可以重写为MyStr.length()
性能下降。如果“ Order”是迭代器,则使用前缀形式的增量更有效。用++ iterator替换iterator ++。
虽然实际错误可能(显然)存在并且可以被SCA检测到
格式错误。考虑检查“ Foo”函数的N个实际参数
表达式用括号括起来两次:((expression))。不需要一对括号或存在打印错误
调用“ memset”函数将导致缓冲区“ dest.lfFaceName”下溢。
静态分析是在不执行工件的情况下进行分析的时间。尽管它可以应用于任何工件,但通常应用于源代码或目标代码,指的是使用特定工具来分析和获取有关这些工作产品的信息。这些工具生成的报告由工程师解释,以用于确定正在构建的系统的质量,并作为规划开发和维护的指南。Wikipedia包含用于静态分析的工具列表,该工具按语言进行组织,并简要说明其功能。
评论是对某些工作产品的人工评估,可以是代码。也可以对设计或其他文档进行审查。这个想法是,除了开发人员以外,熟悉工作产品的人们都在查看它,以发现错误,从安全问题到违反编码标准。
从技术上讲,代码检查可以视为静态分析的一种形式,因为在检查过程中实际上并未执行代码。但是,在通用术语中,“静态分析”通常是指对源文件或目标文件进行机器解析,而“审阅”则表示人员是进行分析的人。
代码审查是一种非常有用的技术,可以在早期阶段发现源代码中的问题。作为此练习的一部分,许多问题(如性能,可伸缩性和编码标准)已确定并得到纠正。这将提高代码质量。
静态分析用于分析代码质量指标,例如循环复杂度,可维护性指标,继承深度和类耦合。市场上可以使用各种工具来分析代码质量。C#开发人员使用Microsoft Visual Studio生成度量标准报告。