• 软件建设Software Construction

    • 静态检查static checking

      • 主题
      • 类型
      • 静态类型
      • 静态检查动态检查不检查
      • 建议与非建议
      • 目标
      • 总结

软件建设(Software Construction)

静态检查(static checking)

主题

  1. 静态检查。
  2. 好软件的三个属性。

类型

类型是一组值,可对它们进行操作。java有几种原始类型:

  • int
  • long
  • boolean
  • double
  • char等

以及对象类型

  • String
  • BigInteger

java约定,原始数据类型是小写,而对象类型(Object Type)首字母大写。

操作一般有几种类型:

  • 中缀、前缀和后缀操作。如a+b , –a , a++。
  • 对象的方法。如bigint.add(bigint2)。
  • 一个函数。如Math.abs(-1).

静态类型

java是一种静态类型语言。所有变量的类型在编译时期(程序运行之前)都已知,并且编译器可以推断出所有表达式的类型。例如a和b都是int类型,那么a+b也是int类型。IDEA或Eclipse在你编写代码的过程中这样做,因此你可以在你编程的过程中发现很多bug.

动态语言如Python,这种类型的检查需要在程序执行时才会执行。

静态类型是一种特殊的静态检查(static checking),意味着可在编译时期检车bugs。在本课程中很多点子都是为了消除bugs而存在的,而静态检查就是首选的点子,以下代码就会报错:

"5" * "6" //字符串之间不能进行相乘操作

静态检查、动态检查,不检查

一种语言提供:

  • 静态检查:在程序执行之前自动被发现。
  • 动态检查:程序执行期间被发现。
  • 不检查:语言不帮你找到bugs,需要开发者自己去查看,解决错误。

静态检查可以发现:

  • 语法错误。如额外的标点符号或者虚假的词语。
  • 错误名称。如Math.sine(2)
  • 参数个数错误。如Math.sin(20,30).
  • 参数类型错误。如Math.sin("30").
  • 返回值错误。如函数要求返回int,而程序为return "30"

动态检查可以发现:

  • 不合法的参数值。如除法中,分母不能为0。
  • 造型异常。
  • 超出索引允许范围。
  • 空指针异常。obj.sayHi(),obj为null

建议与非建议

建议

  • 编写一些程序,进行一次测试。
  • 注释好你代码所依赖的东西。如先决条件等。
  • 充分利用静态代码检查。不要假设你的代码无bug,或者容易发现和修复。

目标

  • safe from bug。现在表现正确,将来也表现正确。
  • easy to understand。代码要能与将来的开发者沟通,因为他们要修复bug或者增加新功能。将来的开发者可能是你,如果你没有让你的代码易于理解,你将追悔莫及,反之则庆幸万分。
  • ready to change。软件总在不断改变,一些设计使之易于改变。而一些代码只能丢弃或者重写。

总结

  • safe from bug。静态检查在程序执行之前帮助我们排除error.
  • easy to understand。类型已经明确表示,是故帮助我们理解。
  • ready to change。静态检查让你容易改变代码,因为在你改变代码的时候,静态检查会明确其它需要一起改变的地方。如,int a = 100。如果你改成int a2 = 100。那么引用它的所有地方都报错。

参考文献

静态检查(static checking)相关推荐

  1. 软件构造-Reading 1:静态检查

    大纲: 阅读1:静态检查 目标: 冰雹序列 计算冰雹序列 类型 静态类型 静态检查.动态检查.无检查 惊喜:原始类型并不是真正的数字! 阅读练习 数组和集合 迭代 方法 变化的值与重新分配变量 记录假 ...

  2. 代码静态检查工具汇总

    静态代码扫描,借用一段网上的原文解释一下(这里叫静态检查):"静态测试包括代码检查.静态结构分析.代码质量度量等.它可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具自动进行.代码 ...

  3. React——Flow代码静态检查

    为什么80%的码农都做不了架构师?>>>    Flow Flow是Facebook开源的静态代码检查工具,他的作用是在运行代码之前对React组件以及Jsx语法进行静态代码的检查以 ...

  4. linux sparse 内核代码静态检查

    Sparse简介 Sparse诞生于2004年,是由Linux之父开发的,目的就是提供一个静态检查代码的工具,从而减少Linux内核的隐患.起始,在Sparse之前已经有了一个不错的代码静态检查工具( ...

  5. React Native工程中TSLint静态检查工具的探索之路

    背景 建立的代码规范没人遵守,项目中遍地风格迥异的代码,你会不会抓狂? 通过测试用例的程序还会出现Bug,而原因仅仅是自己犯下的低级错误,你会不会抓狂? 某种代码写法存在问题导致崩溃时,只能全工程检查 ...

  6. 常见Cppcheck检查问题总结(静态检查错误)

    静态检查是比较好的一种自动检查代码工具,可以发现一些隐藏问题,当然更多是让你的代码更加规范,更加在可控范围内. 以下是我整理的错误,也是自己对C++进一步的思考 构造函数显式调用问题 提示: Clas ...

  7. C/C++代码缺陷静态检查工具cppcheck

    cppcheck介绍和安装 CppCheck是一个C/C++代码缺陷静态检查工具.静态代码检查是检查代码是否安全和健壮,是否有隐藏问题. CppCheck只检查编译器检查不出来的bug,不检查语法错误 ...

  8. cppcheck 自定义规则_cppcheck代码静态检查工具及相关工具插件用法介绍

    摘要:介绍代码缺陷静态检查工具(static code analyzer)cppcheck,以及其vs.qtcreator.git.jenkins插件及用法. Cppcheck着重于检测未定义的行为和 ...

  9. 代码静态检查之findbugs

    白盒测试中的静态检查一般是检查编码标准规范,错误列表.编码规范往往团队会根据自己的经验和风格进行设置一些规范.现在很多IDE工具都会在编辑代码的时候实时的提醒是否符合代码风格.错误列表,一般是代码潜在 ...

最新文章

  1. 吐血推荐:win下如何安装tensorflow?只需两步!!
  2. 低代码、无代码?深度解读硅谷新趋势
  3. 技术开发频道一周精选2007-8-24
  4. 输出商品列表 用户输入序号 显示用户选中的商品
  5. SAP信贷出口(用户1,2,3)
  6. Xamarin效果第十七篇之AR GIS
  7. C++ 输入一行未知个数的整数
  8. C# 学习 txt -- excel txt -- json
  9. python和jupyter安装
  10. ue4蓝图碰撞检测的类型_UE4_自定义相机碰撞组件
  11. 做图表统计你需要掌握SQL Server 行转列和列转行
  12. Cortex - M3 一些基础知识
  13. 【心电信号】基于matlab心电信号去除基线漂移【含Matlab源码 955期】
  14. vpp自动化测试报错调试
  15. python能处理数据的优点_Python在数据处理方面的优缺点
  16. RFC 5627 SIP中文翻译
  17. ruby所有版本下载地址
  18. LayaBox---Animation---时间轴动画
  19. translateY鼠标hover触发动(上下移动) - 代码案例篇
  20. 百度地图车辆运动轨迹

热门文章

  1. 封装百度AI语音朗读句子
  2. python解析pdf文件_抽img_text(pymupdf)
  3. 计算机毕业设计Node.js+Express校园二手拍卖网(源码+程序+lw+远程调试)
  4. 复现CVE-2022-10270(向日葵远程代码执行漏洞)
  5. 使用Java语言输出水仙花数,详细解答
  6. python 2个列表相减的2种写法
  7. 元气森林进入酒局,镇得住场子吗?
  8. JavaWeb前端框架VUE和Element组件详解
  9. 29个习惯让你的拖延症一去不复返
  10. 2023年房地产融资模式研究报告