最近,我正在学习语言的动态和静态分析。我已经阅读了一些相关的问题,比如static and dynamic code analysis,但我仍然有一些问题。
动态分析可以在编译和运行期间进行,并检查程序状态。通过动态分析,可以避免不需要的执行步骤。静态分析通常指的是静态类型检查系统,静态分析必须正确地预测实际的程序行为。对于静态类型系统,这意味着分配的类型必须描述程序在运行时可能计算出的所有值。我想知道,如果类型检查器将一个类型分配给一个程序,而该程序没有描述该程序计算出的所有值,会发生什么情况。有人能举个例子吗?
发布于 2017-12-15 08:39:14
在静态类型系统中,如果值的类型与目标的类型不兼容,则不能赋值(或作为参数传递)(尽管大多数语言提供了强制赋值的方法)。
静态类型语言的静态类型分析不是预测性的;它是说明性的。
但静态分析也可以进行预测分析,比如通过枚举( null )值检查可能的访问,或者不处理switch/case语句中枚举的al值,或者条件总是为true或` `false,等等。有许多常见的编程错误可以通过静态分析检测到。
通过使用类型注释和,还可以对动态类型语言进行静态类型分析。
https://stackoverflow.com/questions/47756796
复制相似问题