首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >静态分析和语义分析有什么区别?

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

Stack Overflow用户
提问于 2013-12-10 23:34:41
回答 3查看 5.1K关注 0票数 7

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

我试图解释这些不同之处,但没有找到任何令人满意的东西。

静态分析可以使用语义分析,但反之亦然,这是否过于简单化了?

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

我看到的大多数静态分析的描述似乎都涉及到语义分析的讨论。What is static code analysis?

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

EN

回答 3

Stack Overflow用户

发布于 2015-03-10 13:51:12

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

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

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

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

票数 3
EN

Stack Overflow用户

发布于 2017-05-09 06:15:43

如果您仔细查看表9,您将看到: 1h |语义代码分析^d

在下面的表格中,你可以读到'^d‘的意思:方法1h通过使用变量可能值的抽象表示,用于源代码的数学分析……

有提供这种分析的软件工具,f.e.。Polyspace Proover。

票数 2
EN

Stack Overflow用户

发布于 2013-12-10 23:41:26

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

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

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20498566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档