您可能知道这种情况:
前段时间,你发现了一个非常特殊的 $ZU 函数,可以解决一种非常特殊的问题。某种神秘的公式。它变得很流行,被许多开发人员在您的代码和所有安装中使用。
几个版本和更新之后,ISC 通知你,你的神秘 $ZU 已经过时,不再支持。建议您用新的 $something() 替换它。
那么,如何找到并记录这段神秘代码的用法呢?
它可能位于类、MAC、INT 或 INC 代码中。
它也可能分布在多个命名空间中。
在过去,Studio 还不够完善:它不适用、速度慢、不准确。
我在不同的安装中不止一次遇到过这种情况。
当时还没有源代码控制功能,即使最终引入了源代码控制功能,也很少有人使用。
由于 ObjectScript 是应对这一挑战的唯一可能选择,我编写了自己的实用程序。
我的解决方案经过了多年的发展,一旦计划迁移到 IRIS,我就会再次检查它的实用性。
由于它是用纯 ObjectScript 编写的,因此在 IRIS 中无需修改任何字符即可运行。
如您所知,在 ObjectScript 中搜索特定文本的问题一直没有改变。
我设计这个工具的个人目标是
- 仅限 ObjectScript
- 没有花哨、神奇或脆弱的结构
- 尽可能少的高级函数
- 为了将来的维护,使可读性优于优雅性
- 显示每个命名空间和每个代码元素的出现次数
- 对于类,还要区分
- 显示包含出现内容的行的选项
- 无需考虑列表输出:
- 任何终端程序都可以写日志
- bash 的 STDOUT 就可以实现这一目的
因此,您可以在Open Exchange 和GitHub 上使用该工具。
我还制作了一段视频来演示该工具的操作。
演示服务器上也有该视频。
只需从终端启动即可:
user>DO^rcc.find
然后系统会提示你几个问题:
- 您要搜索什么文本?
- 详细?
- 是否要查看包含文本的每一行?
- 警告:这可能会成为一个很大的列表
- 最近的一次测试发现了 90,000 多条匹配信息
- 如果 verbose=1,您将看到 90,000 多行内容
- 只能使用大写字母?
- 这解决了函数以
- 大写、小写或混合大小写的问题
- "Uppercase=1 "确保不会遗漏任何出现的情况
- 您想扫描哪种代码类型(CLS、MAC、INT、INC、ALL)
- 要搜索哪个命名空间?
- 列表中的特定名称空间或 ALL
- 如果是 ALL,您会得到一个浓缩的命名空间和类型列表
- (视频中看不到)
选择namespace后,扫描开始。
Let’s dance!
USER> do ^rcc.find
----------------
enter search string [$ZU] <blank> to exit: RCC
Verbose? (0,1) [0]:
Force UpperCase? (1,0) [1]:
enter code type (CLS,MAC,INT,INC,ALL) [ALL]: CLS
select namespace (ALL,%SYS,DOCBOOK,ENSDEMO,ENSEMBLE,SAMPLES,USER) [USER]:
** Scan Namespace: USER **
** CLS **
** 2 User.ConLoad
** 15 User.Main
** 3 csp.form
** 3 csp.winner
** 2 dc.rcc.Contest
** 37 dc.rcc.Main
** 1 dc.rcc.Prize
** 63 CLS **
----------------
希望你们喜欢我的故事。
我尽量避免列出枯燥的代码,这正是 Open Exchange 和 GitHub 的用武之地。
请原谅我生疏的法语。
我是多年前在学校学的法语,当时的重点是文学(莫里哀、萨特、奎菲莱克、阿努伊勒、尤内斯库)而不是技术。