查看ISO 26262-6 (2011年)道路车辆功能安全第6部分产品开发中的表9,静态代码分析(1g)和语义代码分析(1h)分别作为验证方法列出。
我试图解释这些不同之处,但没有找到任何令人满意的东西。
静态分析可以使用语义分析,但反之亦然,这是否过于简单化了?
一般来说,静态分析和语义分析的区别是什么?
我看到的大多数静态分析的描述似乎都涉及到语义分析的讨论。What is static code analysis?
感谢您的宝贵时间以及任何可能的见解和反馈。
发布于 2015-03-10 13:51:12
静态分析意味着分析只针对源代码运行,不需要运行代码或提供测试输入。这一类中的另一种是动态分析,它实际上运行代码来测试给定的输入。
语义分析表明,分析估计(或计算)源代码的含义。这一类中的另一种是语法分析,它只检查源代码的形状。
在大多数情况下,仅仅说语义或语法分析就意味着它也是静态分析。
例如,假设C编译器发出两个错误“缺少分号”和“未使用的变量”,前者是(静态)语法分析的结果,后者是编译器执行的(静态)语义分析的结果。
发布于 2017-05-09 06:15:43
如果您仔细查看表9,您将看到: 1h |语义代码分析^d
在下面的表格中,你可以读到'^d‘的意思:方法1h通过使用变量可能值的抽象表示,用于源代码的数学分析……
有提供这种分析的软件工具,f.e.。Polyspace Proover。
发布于 2013-12-10 23:41:26
在大多数编译器中,语义分析是在编译时进行的,其目的是检查您的代码是否满足编程语言规范。它通常检查类型的正确性、方法的存在等。
静态分析是一个更复杂的过程,在不运行程序的情况下发现一些警告、错误等。它比语义分析更深入,并产生更详细的结果。
例如,有许多用于静态分析的工具,如PVS-Studio、Intellij Idea检查等。
有时,它们会产生很多噪音,但可以避免一些错误。
https://stackoverflow.com/questions/20498566
复制相似问题