语言的静态分析技术
2016-01-27 14:06
204 查看
静态语言:
对于在静态语言中定义的类型,变量或类型属性等标识符,通过其IDE提供的Find References功能可以完全找到其所有的被引用点。静态语言完全可以通过静态分析来看懂代码并查找出问题。
动态语言:
对于动态语言,由于其变量类型和类型成员的不确定性,因此静态分析通常会比较困难,这也导致大家通常都认为动态语言写的程序比较难以维护。
动态语言由于其灵活性,如果语言不提供模块化的机制来对系统进行分解,并且没有对全局变量的使用加以约束的话,确实会导致其写成的代码难以分析和维护。
通过为动态语言提供模块化机制不仅可以减少全局变量的使用,而且通过模块化机制也可以隔离系统的复杂性,使得单个模块的功能点相对集中代码量小,使得对于动态语言代码的分析可以基于模块来进行,大大提高了动态语言的静态可分析性。
对于在静态语言中定义的类型,变量或类型属性等标识符,通过其IDE提供的Find References功能可以完全找到其所有的被引用点。静态语言完全可以通过静态分析来看懂代码并查找出问题。
动态语言:
对于动态语言,由于其变量类型和类型成员的不确定性,因此静态分析通常会比较困难,这也导致大家通常都认为动态语言写的程序比较难以维护。
动态语言由于其灵活性,如果语言不提供模块化的机制来对系统进行分解,并且没有对全局变量的使用加以约束的话,确实会导致其写成的代码难以分析和维护。
通过为动态语言提供模块化机制不仅可以减少全局变量的使用,而且通过模块化机制也可以隔离系统的复杂性,使得单个模块的功能点相对集中代码量小,使得对于动态语言代码的分析可以基于模块来进行,大大提高了动态语言的静态可分析性。
相关文章推荐
- input type="submit" 和"button"有什么区别?
- SugarCRM源码分析之ViewFactory
- opencart mail服务器的配置
- ServerStatus 输出说明
- swift中单例的实现方法
- Ubuntu 14.04 64位使用Google字体(英文、中文分别修改)
- C++类中成员变量和成员指针变量小结
- python的thread使用
- Spring RMI调用远程方法
- 算法题2 动态规划之最大子序列和&最大子矩阵和
- HDU 1033 Edge
- MSSQL STUFF
- 广州易幻网络科技有限公司Android笔面经 (未通过)
- 配置xheditor图片上传功能
- SpringMVC 和 Struts2 框架区别
- Unity5.3.1f1 Network 局域网实时联网demo
- HttpClient和HttpURLConnection的区别
- 关于python使用MySQLdb新增操作
- 前端工程师使用node.js打造日记社区教程之一
- Android学习----自适应国际化语言