Ada 重构:删除重命名的包(自动)

Ada 重构:删除重命名的包(自动),ada,gnat,Ada,Gnat,Ada支持重命名包( 不幸的是,我不得不处理一些遗留的Ada代码,而以前的开发人员过度重命名了包:单个包规范/正文中超过100个重命名并不罕见。在我看来,很难读取Ada代码,特别是因为重命名不一致 因此,我考虑删除这些重命名,并用原始包标识符替换重命名包标识符的所有用法。我可以手动完成,但在开始之前,我想知道这项任务是否可以自动化 删除所有重命名包后,我想检查每个编译单元的原始代码和重构代码是否具有相同的语义。这可以由编译器输出完成吗?这听起来像是一个编辑器查找/替换活动。首先搜索所有重命名子句

Ada支持重命名包(

不幸的是,我不得不处理一些遗留的Ada代码,而以前的开发人员过度重命名了包:单个包规范/正文中超过100个重命名并不罕见。在我看来,很难读取Ada代码,特别是因为重命名不一致

因此,我考虑删除这些重命名,并用原始包标识符替换重命名包标识符的所有用法。我可以手动完成,但在开始之前,我想知道这项任务是否可以自动化


删除所有重命名包后,我想检查每个编译单元的原始代码和重构代码是否具有相同的语义。这可以由编译器输出完成吗?

这听起来像是一个编辑器查找/替换活动。首先搜索所有重命名子句,然后替换重命名包的所有实例使用其原始包标识符。完成后,删除包含RENAME子句的所有行。当然,您可以使用您选择的语言编写自己的实用程序来完成此操作。如果您有>100个包重命名,则必须有>100个
!确实太多了。如果您准备构建一个工具,您可能会发现它有用l、 听起来可能有什么问题。它是一个语义解析器,使用ASIS(与libadalang不同)检查规则(例如,一个编码标准)。作为输出,您可以获得建议的修复,如果使用Gnat Programming Studio,会以交互方式识别,并在“位置”窗口中单击扳手符号。还有一个工具可以自动应用修复。(我自己没有在任何程度上使用AdaControl,因此无法提供比用户指南链接更多的帮助。)GPS有一个在上下文菜单中选择“重构”。右键单击一个标识符,它就会出现。我不知道它是否可以做你想做的事情。另外,Adalog有Adasubst,它可以做你想做的事情。