静态分析

程序静态分析(Program Static Analysis)是指在不运行代码的方式下,通过词法分析语法分析控制流数据流分析等技术对程序代码进行扫描,验证代码是否满足规范性、安全性、可靠性、可维护性等指标的一种代码分析技术。静态分析技术向模拟执行的技术发展以能够发现更多传统意义上动态测试才能发现的缺陷,从而提高开发效率和软件质量。本文介绍部分在静态代码分析中使用的中间表示的概念,主要包括抽象语法树三地址码SSA形式,及CFGRTL等概念


阅读全文 »

复制原电脑上的数据

注:不需要全部复制

  • _config.yml:站点配置文件
  • package.json:应用程序数据,指明hexo的版本等信息,类似于一般软件中的关于按钮
  • scaffolds/:layout模板文件目录,其中的md文件可以添加编辑
  • source/:
  • 文章源码目录,该目录下的markdown和html文件均会被hexo处理。该页面对应repo的根目录,404文件、favicon.ico文件,CNAME文件等都应该放这里,该目录下可新建页面目录。
    • drafts:草稿文章
    • posts:发布文章
  • themes/:主题文件

阅读全文 »

基本原理

数据流分析是一种用来获取相关数据沿着程序执行路径流动的信息分析技术。分析对象是程序执行路径上的数据流动或可能的取值

  • 优点:具有更强的分析能力,适合需要考虑控制流信息且变量属性之操作十分简单的静态分析问题
  • 缺点:分析效率低,过程间分析和优化算法复杂,编程工作量大,容易出错且效率低

一个数据流分析框架(D, L, F)包含:

  1. D:数据流的方向,前向或者后向
  2. L:包含数值作用域V和操作符meet ⊓ 或 join ⊔ 的lattice
  3. F:一系列V to V的传递函数

Tips: 数据流分析可以看成在一个lattice的数值域上,迭代地使用传递函数和操作符


阅读全文 »

环境(Windows)

  • git(git version 2.29.2.windows.3)
  • node(v14.17.0)

阅读全文 »