繁体   English   中英

静态分析和语义分析有什么区别?

[英]What is the difference between static analysis and semantic analysis?

查看ISO 26262-6(2011)道路车辆功能安全第6部分产品开发中的表9,静态代码分析(1g)和语义代码分析(1h)作为验证方法单独列出。

我搜索了差异的解释,但我没有遇到任何令人满意的事情。

静态分析是否可以使用语义分析,而不一定反之亦然?

一般来说,静态分析和语义分析有什么区别?

我见过的大多数静态分析描述似乎都涉及语义分析的讨论。 什么是静态代码分析?

感谢您的时间和任何可能的见解和反馈。

静态分析意味着分析仅针对源代码运行,不需要运行代码或提供测试输入。 此类别中的另一种类型是动态分析,它实际上运行代码来测试给定的输入。

语义分析表明分析估计(或计算)源代码的含义。 此类别中的另一种类型是语法分析,它仅检查源代码的形状。

在大多数情况下,只是说语义或句法分析意味着它也是静态分析。

例如,假设C编译器发出两个错误“缺少分号”和“未使用的变量”,前者是(静态)句法分析的结果,后者是编译器执行的(静态)语义分析的结果。

如果你仔细看一下表9,你会看到:1h | 语义代码分析^ d

在表格下方,您可以阅读'^ d'的含义:方法1h用于通过使用变量的可能值的抽象表示来对源代码进行数学分析...

有一些软件工具提供这样的分析,fe Polyspace Proover。

语义分析是在大多数编译器的编译时进行的,其目的是检查代码是否满足编程语言规范。 它通常检查类型的正确性,方法的存在等。

静态分析是一个更复杂的过程,在没有运行程序的情况下找到一些警告,错误等。 它比语义分析更深入,并产生更详细的结果。

例如,有许多用于静态分析的工具,如PVS-Studio ,Intellij Idea检查等。

有时,它们会产生很多噪音,但可以避免一些错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM