- 1、本文档共31页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PLSQL构建代码分析工具之从测试开始
PL/SQL构建代码分析工具之从测试开始
Feuerstein 的“构建代码分析工具”系列的第 2 部分
在本系列的 第一篇文章中,我决定构建一个可以对代码进行质量检查的实用工具:特
别是识别 PL/SQL 程序包中具有歧义或者潜在歧义的超载问题。
此外,我还识别数据源(ALL_ARGUMENTS 数据字典视图)和代码(DBMS_DESCRIBE 程序
包),以帮助构建实用工具。下一步要做什么呢?
坦率地说,我自然倾向于打开我所喜爱的集成开发环境 (IDE) 并开始动指如飞地编
写代码,投入激动人心的创作之中。我希望在工作时思考并得出结论,不断地应对挑战,使
工作成果运行起来,然后对其进行微调。
这种方法有积极的方面(您当然不会有过度设计的风险),但也有很多缺点。首先,如
果我所使用的构建方法是直通式构造非线性系统 — 常被亲切地称为 HRCLS 或 Hercules
(一种非常轻型的方法论),我最终不会仅是微调代码。绝对不会,在我将范围缩小到最终
目的、目标和实质内容时,我最终将会以重写整个程序 — 一次、两次或三次。但是,尽管
可以激动地看到,经过自己的努力,实用工具成形、进步并改观,但这会浪费很多的时间。
对于 Codecheck,我会忍住最初的诱惑。我不会在项目开始的头 60 秒内就编写代码,
而是做一个简单的声明:我保证使我编写的代码适用于一个全面的测试计划。
这与避免 Hercules 综合症有什么必然的关系呢?让我们来考虑这种保证的含义:
我将制订一个测试计划,它非常全面,精心策划了数十个(甚至可能有 100 个之多)
测试方案,包括参数的数量、各种数据类型的结合以及缺省值的有无。
我要设计、构建和运行测试,这些测试可确定我的代码是否满足测试计划的要求:换言
之,设计、构建和运行涵盖我的全部测试方案的测试。
天哪,这听起来确实很有道理,不是吗?我的意思是,谁会一直做所有的这些事情?况
且,我们都知道这样的事实:我们之中很少有人实际上会花时间,或在手边有必备的工具去
做全面的测试。实际上我认为,世界上至少百分之九十的软件开发人员和开发团队(包括我
自己)远远不会完全按上述保证去做。
对我来说,在开发初始时我表明要执着地进行测试,我发现这一点促使我实现了
Codecheck.
定义范围,做出假设
在开发一项测试策略并构造测试之前,我需要确定项目的使用范围。用户群通常确定(并
经常更改)项目的使用范围。对于 Codecheck 以及我制作的很多其他实用工具,您,开发
人员,是我的用户,但我仍然需要确定使用范围,把您的需求作为我的指导。我的目标是产
生一个代码体,能立即帮助开发人员提高代码质量,但也可以作为一项稳定而且可扩展的功
能,开发人员可以将其加入代码中满足自己的需要。它必须能够处理现实世界中足够的复杂
性,这样才有用处,但又不可太复杂,以至于将 Codecheck 开发变成一种全职工作。
当我深入查看 ALL_ARGUMENTS 的内容时,我吃惊地发现那些参数列表会变得非常复杂。
例如,在 Oracle9i 的环境中,一个参数可以将记录的结合数组(以前称为表的索引)作为
其类型,其中记录的一个字段是另一个结合数组,以此类推。非常坦率地说,我实际上不希
望必须编写代码来处理这些参数全部的可能情况。
与此相反,Codecheck 将只基于“0级”参数来检查和进行分析:这是指在
ALL_ARGUMENTS 视图中的那些项目,当其出现在程序头时,它们对应于参数列表。实际上,
这可能是您为分析超载而所需的全部要素,但是全部的详细资料可能在进行某种其他的代码
检查时派上用场。(在撰写此文章时,我已确定了一种需要更多信息的情况:如果您将一个
参数定义为表单 %ROWTYPE 的记录,则 ALL_ARGUMENTS 和 DBMS_DESCRIBE 都不会提供其类
型的信息。您可能必须比较那些行类型(1 级或更多级)的各个字段的数据类型以识别岐义。
天哪。
定义测试策略
开发 Codecheck 的下一步是探究和定义测试策略。我曾提到过,我承诺编写能够满足
测试计划的代码,这种承诺影响着开发过程。例如,我在编写如 Codecheck 等实用工具时
的第一个冲动是,制作一个程序,接受一个程序包的名称并在屏幕上显示代码检查的结果。
为了确定实用工具是否正确工作,我需要查看屏幕上的检查结果并对其进行分析。这听起来
如何?熟悉吗?可伸缩吗?通常这种方法甚至对非常简单的程序都无效。
Codeche
您可能关注的文档
- NetMay RouterOS中文教程系列 ROS入门教程.pdf
- NetMay RouterOS中文教程系列 ROS安装及配置教程.pdf
- NetMay RouterOS中文教程系列 ROS安装详细图解教程.pdf
- NetMay RouterOS中文教程系列 ros教程.pdf
- NetMay RouterOS中文教程系列 初级ROS安装配置教程.pdf
- New Brunswick 恒温摇床.pdf
- Normal贴图制作原理及制作注意事项.pdf
- NTT Docomo终端策略解读.pdf
- olympus-micro-optics奥林巴斯短桶物镜手册.pdf
- Optical waveguide analysis using Beam Propagation Method利用光束传播法分析光波导.pdf
- 2024年江西省高考政治试卷真题(含答案逐题解析).pdf
- 2025年四川省新高考八省适应性联考模拟演练(二)物理试卷(含答案详解).pdf
- 2025年四川省新高考八省适应性联考模拟演练(二)地理试卷(含答案详解).pdf
- 2024年内蒙通辽市中考化学试卷(含答案逐题解析).docx
- 2024年四川省攀枝花市中考化学试卷真题(含答案详解).docx
- (一模)长春市2025届高三质量监测(一)化学试卷(含答案).pdf
- 2024年安徽省高考政治试卷(含答案逐题解析).pdf
- (一模)长春市2025届高三质量监测(一)生物试卷(含答案).pdf
- 2024年湖南省高考政治试卷真题(含答案逐题解析).docx
- 2024年安徽省高考政治试卷(含答案逐题解析).docx
文档评论(0)