静态代码检查(代码静态检查实现原理)
本文目录
代码静态检查实现原理
静态代码分析原理分为两种:分析源代码编译后的中间文件(如Java的字节码);分析源文件。主要分析技术如下:缺陷模式匹配事先从代码分析经验中收集足够多的共性缺陷模式,将待分析代码与已有的共性缺陷模式进行匹配,从而完成软件安全分析。优点:简单方便;缺点:需要内置足够多的缺陷模式,容易产生误报。类型推断/类型推断类型推断技术是指通过对代码中运算对象类型进行推理,从而保证代码中每条语句都针对正确的类型执行。模型检查建立于有限状态自动机的概念基础上。将每条语句产生的影响抽象为有限状态自动机的一个状态,再通过分析有限状态机达到分析代码目的。校验程序并发等时序特性。数据流分析从程序代码中收集程序语义信息,抽象成控制流图,可以通过控制流图,不必真实的运行程序,可以分析发现程序运行时的行为。
静态代码中能检测到的错误有哪些
在传统意义上认为,错误检测应该是动态的系统测试的范围。但在bug的成本上分析,有以下公认的结论。bug发现的越晚,修正的成本就越高,测试阶段修正bug的成本是编码阶段的约4倍的关系。为了减少成本,bug被发现的越早越好。在编程阶段,静态的分析代码就能找到代码的bug,是很多人的梦想。这个梦想在21世纪初变成了现实。以PolySpace、Klocwork、Coverity为代表的静态分析软件,实现了只要静态分析代码,就可以发现代码的bug,例如数组越界、除数为0、缓冲区溢出等,虽然还不是特别完美。微软在其最新的开发工具VisualStudio2005的teamsystemediton中集成了安全工具PREFix。PREFix原来就是著名的静态分析工具,后被微软收购过来。从微软的倾向看发展走势,类似的静态工具未来会成为市场的主流。PolySpace详细的信息可以参考我的另外一篇文章《嵌入式软件动态运行时错误的检测》。
代码为什么需要静态代码检查工具
首先明白什么是静态?什么是动态?静态动态最根本的区别就在于“程序是否是运行的”。静态就是不运行程序去测试,那么又要问了:不运行怎么测试呢?那最简单的静态测试方法就是“code review”也就是看代码。看代码有没有什么地方明显是错误的。
如何写静态代码检查规则
用来检查编译器无法发现的更复杂一点的错误,最大可能避免(可能出现的)运行错误。很多代码写法编译器不报错,严格来讲也没错,但是会极大增加运行时报错的风险,静态检查工具就是用来跑程序之前尽量发现这些问题。例如变量引用前没有判空啦多...
本文相关文章:

反编译违法吗(二进制静态库文件被反编译了,整理出逻辑,又重写之后的代码算不算侵权)
2025年4月13日 18:40

ocx 签名(哪能申请到免费的有权威性的exe,cab代码签名证书)
2025年4月12日 21:00

msgbox(VB代码中的msgbox是什么意思,要怎么使用)
2025年4月12日 03:50

哪位能告诉我贪吃蛇游戏的全部代码?贪吃蛇的代码,在文本文档打开就可以
2025年4月11日 02:40

QQ空间视频模块代码怎么用?怎样快速看懂一个较大的verilog模块代码
2025年3月28日 04:40

indexof方法是啥意思(请问大神下面代码中“indexOf”是什么意思有啥作用)
2025年3月18日 16:50

java怎么开始写代码(干java也1年多了,怎么能提升代码编写能力)
2025年3月14日 12:50
更多文章:

传奇版本库网站dede模板(dede网站模板百度收录怎么自适应m端)
2025年2月25日 20:10

respectful和respectable的区别(respect respectable respecful有什么不同)
2025年3月7日 17:50

是需要python还是java教程(java 和python先学哪个好)
2025年4月11日 00:40

windowsxp怎么升级7(怎么将windowsxp版本升级为windows七版本)
2025年3月6日 11:20

vuejs流程图插件(求推荐vue.js地址选择插件和地图插件)
2025年2月16日 10:00

get rid of是什么意思(get rid of是什么意思)
2025年3月18日 02:00

c语言的移位运算符(C语言问题,在位运算中,操作数每右移一位,其结果相当于什么若左移1位,其结果相当于什么)
2025年3月23日 18:10

绍兴用安钢模板有限公司怎么样?北京三联亚建筑模板有限责任公司怎么样
2025年2月10日 07:20

pancake泰星(大家都是怎么认识泰国女星Pancake的对她印象怎么样)
2025年4月2日 07:30