non*_*one 7 refactoring language-features language-design automated-refactoring
编程语言的常见特征/属性有哪些促进(简化)广泛自动化源代码分析和重新设计(转换)工具的开发?
我主要考虑编程语言特性,这使得开发静态分析和重构工具变得更容易(即比较Java与C++,前者对重构有更好的支持).
换句话说,一种编程语言,它将明确地设计为从一开始就为自动静态分析和重构提供支持,它最好具有哪些特征?
Ada语义接口规范(ASIS)是一种分层的开放式体系结构,提供对Ada库环境的独立于供应商的访问.它允许对Ada程序和库进行静态分析.ASA是Ada语义接口规范,它是一个库,可以让应用程序访问Ada编译单元的完整语法和语义结构.该库通常由需要在Ada程序上执行某种静态分析的工具使用.
ASIS信息: ASIS为工具提供了一种标准方法,用于提取Ada编译器或其他源代码分析器最佳收集的数据.使用ASIS的工具本身是用Ada编写的,可以很容易地在支持ASIS的Ada编译器之间移植.使用ASIS,开发人员可以生成具有高度可移植性的强大代码分析工具.它们还可以节省实施从源程序中提取语义信息的算法的相当大的费用.例如,已经存在ASIS工具,它们生成源代码度量,检查程序是否符合编码样式或限制,进行交叉引用,以及全局分析程序以进行验证和验证.
另见ASIS FAQ
你能想到其他编程语言提供类似的全面和完整的界面来处理专门用于分析/转换目的的源代码吗?
我正在考虑提供低级钩子的特定实现技术,例如核心库函数,它提供了一种在运行时检查AST或ASG的方法.
最大的必须是静态打字.这使工具可以更深入地了解代码的作用.没有它,重构变得困难多了许多倍.
反射内置于语言/类型系统中。这使得静态分析和重构变得不那么痛苦。
这就是 Java 和 .NET 工具如此普遍和优秀的部分原因。这为工具提供了更好的功能,可以快速可靠地理解源代码的依赖性,这有助于对源代码进行静态分析。
此外,您还可以对编译后的代码进行分析。