Getting started with static program analysis. 静态程序分析入门教程。
1,770
34 commits
updated Mar 20, 2024
Getting started with static program analysis. Read this and start writing your first static program analyzer! We focus on the problem:
❓ How to automatically and efficiently guarantee software quality
静态程序分析入门。阅读此书并着手编写你的第一个静态程序分析器吧!本仓库关注一个非常重要的问题:
❓ 如何自动化地高效保障软件质量
git clone https://github.com/RangerNJU/Static-Program-Analysis-Book.git)git pull图文的主体部分更新完毕,撒花~!
后续会考虑录制一些视频补充对动态例子的讲解。

学生,开发者,研究者……几乎所有当代生活者都能从中受益。

静态程序分析是编程语言中应用层面下的一个细分领域,它是一个非常重要的核心内容。
在理论部分,考虑的是如何设计一个语言的语法和语义,如何设计语言的类型系统等等问题;有了语言的语法、语义和类型系统之后,我们需要支撑语言的运行。因此,在环境部分,需要考虑如何为运行中的程序提供运行时环境——如何设计编译器,在运行时需要怎样的支持(如内存的分配管理)等等;应用部分则关注如何保证语言所写出程序的效率、安全性和可靠性,主要考虑如何对程序进行分析,验证和合成(如何自动合成一个程序)。
当今的计算机世界,面对这样一条恶龙: 👇
数十年来语言的核心没有变化,但软件的规模和复杂性增长迅速,如何保证程序的可靠性?
尽管新的语言和特性层出不穷,但现在编程语言无非三大类 (如果你对其中的某个语言不熟悉,可以到语言的官网或英文Wiki页面查看相关示例,也可以利用搜索引擎做初步的了解。本教程内容主要关注于针对命令式语言JAVA的分析。) :
静态程序分析即是屠龙的宝刀之一,举例来说这一技术可以处理以下问题(以下概念只需要了解,重要的应用在后文中会详细讲解。):
此外,静态程序分析技术也可以分析多线程程序,这是一个有难度的研究领域。主要困难在于处理多线程间的interleaving。本书定位入门,不会涉及相关内容。

Testing shows the presence, not the absence of bugs. --Edsger W. Dijkstra
动态的软件测试和形式化语义的验证的作用与静态程序分析类似,这一部分对这三个细分方向做简单的对比。


觉得有所帮助的话可以点个star支持哦。
欢迎希望添加更好的讲解资料或对教程内容进行扩充的小伙伴 fork, modify, PR 三连。
提醒:引用图片时请使用相对路径。
We'd love help translating this book! Open a new issue to start working on a new language. Feel free to start :)
141 followers · starred Sep 2021
42 followers · starred Apr 2022
151 followers · starred Feb 2023
35 followers · starred Oct 2023
Getting started with static program analysis. 静态程序分析入门教程。
1,770
34 commits
updated Mar 20, 2024
Getting started with static program analysis. Read this and start writing your first static program analyzer! We focus on the problem:
❓ How to automatically and efficiently guarantee software quality
静态程序分析入门。阅读此书并着手编写你的第一个静态程序分析器吧!本仓库关注一个非常重要的问题:
❓ 如何自动化地高效保障软件质量
git clone https://github.com/RangerNJU/Static-Program-Analysis-Book.git)git pull图文的主体部分更新完毕,撒花~!
后续会考虑录制一些视频补充对动态例子的讲解。

学生,开发者,研究者……几乎所有当代生活者都能从中受益。

静态程序分析是编程语言中应用层面下的一个细分领域,它是一个非常重要的核心内容。
在理论部分,考虑的是如何设计一个语言的语法和语义,如何设计语言的类型系统等等问题;有了语言的语法、语义和类型系统之后,我们需要支撑语言的运行。因此,在环境部分,需要考虑如何为运行中的程序提供运行时环境——如何设计编译器,在运行时需要怎样的支持(如内存的分配管理)等等;应用部分则关注如何保证语言所写出程序的效率、安全性和可靠性,主要考虑如何对程序进行分析,验证和合成(如何自动合成一个程序)。
当今的计算机世界,面对这样一条恶龙: 👇
数十年来语言的核心没有变化,但软件的规模和复杂性增长迅速,如何保证程序的可靠性?
尽管新的语言和特性层出不穷,但现在编程语言无非三大类 (如果你对其中的某个语言不熟悉,可以到语言的官网或英文Wiki页面查看相关示例,也可以利用搜索引擎做初步的了解。本教程内容主要关注于针对命令式语言JAVA的分析。) :
静态程序分析即是屠龙的宝刀之一,举例来说这一技术可以处理以下问题(以下概念只需要了解,重要的应用在后文中会详细讲解。):
此外,静态程序分析技术也可以分析多线程程序,这是一个有难度的研究领域。主要困难在于处理多线程间的interleaving。本书定位入门,不会涉及相关内容。

Testing shows the presence, not the absence of bugs. --Edsger W. Dijkstra
动态的软件测试和形式化语义的验证的作用与静态程序分析类似,这一部分对这三个细分方向做简单的对比。


觉得有所帮助的话可以点个star支持哦。
欢迎希望添加更好的讲解资料或对教程内容进行扩充的小伙伴 fork, modify, PR 三连。
提醒:引用图片时请使用相对路径。
We'd love help translating this book! Open a new issue to start working on a new language. Feel free to start :)
141 followers · starred Sep 2021
42 followers · starred Apr 2022
151 followers · starred Feb 2023
35 followers · starred Oct 2023