Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于将OOP代码转换为AOP的工具_Oop_Aop_Transformation - Fatal编程技术网

用于将OOP代码转换为AOP的工具

用于将OOP代码转换为AOP的工具,oop,aop,transformation,Oop,Aop,Transformation,是否有任何开源工具可以将OOP代码(不考虑编程语言,如NET、Java或PHP)转换为AOP 你想要一个“AOPizer”。您似乎要解决的问题有两部分: 在现有应用程序中查找潜在的交叉代码 将代码提取到该语言的方面 1) 第一个任务基本上需要一个克隆检测器。只有许多克隆探测器 找到相同的文本;这些都不会很有帮助,因为你的方面可能 具有必须从代码中获取的参数。(如果您要登录 函数参数,方面必须通过这些参数进行参数化)。 所以你需要一个能找到参数化克隆的检测器。你也想要 这些克隆是可以从代码中提

是否有任何开源工具可以将OOP代码(不考虑编程语言,如NET、Java或PHP)转换为AOP

你想要一个“AOPizer”。您似乎要解决的问题有两部分:

  • 在现有应用程序中查找潜在的交叉代码
  • 将代码提取到该语言的方面
1) 第一个任务基本上需要一个克隆检测器。只有许多克隆探测器 找到相同的文本;这些都不会很有帮助,因为你的方面可能 具有必须从代码中获取的参数。(如果您要登录 函数参数,方面必须通过这些参数进行参数化)。 所以你需要一个能找到参数化克隆的检测器。你也想要 这些克隆是可以从代码中提取的,所以无论它找到什么都需要 对应于编程语言(表达式、, 语句、块等)许多基于令牌的克隆检测器可以找到由标识符克隆参数化的克隆,但不理解语言结构,因此它们不会 对这项任务要有效

我们使用目标语言的抽象语法查找克隆 引导它;这需要精确的语言分析器;它有PHP、Java、VB.net和C#的解析器。它找到的克隆总是与上面定义的语言结构相对应。它将查找单个标识符的参数,或任何较大的langauge构造(表达式、语句等),这些参数在克隆中始终不同。它生成克隆集的可读报告及其所有实例的精确位置,以及精确的参数值。它还生成相同信息的机器可读报告,使另一个工具能够利用检测过程。过去,CloneDR一直被用来寻找这种交叉技术:(我是CloneDR的作者)

2) 有了克隆数据,您现在需要一个可以将克隆提取到方面的工具。首先,您需要定义方面语言,然后您需要一个能够解析语言、锁定克隆、将它们抽象/翻译为这些方面的工具。我知道没有现成的工具可以直接实现这一点,所以你需要一个定制的工具,它拥有所有必要的机械设备。我们的设计正是为了构建这样的定制工具。 (这满足了我评论中的“可能”部分;为了得到你想要的东西,还有额外的工作要做)。事实上,DMS已经被用来为目前还没有的语言构建方面工具;看见[CloneDR实际上构建在DMS之上,这对您来说可能并不奇怪,一个更好的工程路径是运行CloneDR机器并将结果直接传递给自定义AOP提取代码,而不是通过克隆数据位置的中间导出/导入)


你还需要开源(每当我看到这一点,我都把它理解为“免费”的代码词)。唉,这些工具不是免费的。它们需要几十年的博士级工程来构建和完善(其中一些几十年是我个人的几十年;我是DMS的架构师)我对免费这么做的想法感到有些困难。他们确实有商业许可证,并且可以以我们认为的中等价格获得所提供的价值(坦率地说,价值的很大一部分是允许以一般方式构建这些工具的视角),还有研究许可证。有关更多详细信息,请与我们脱机联系;请参阅我的个人简历。

AOP将交叉关注点应用于代码。您可能是指可以在OOP应用程序中查找通用代码并将其提取到某个方面的工具?我希望您使用克隆检测器来查找通用代码,但我所知道的工具中没有我会将克隆提取到aspect中。关于“大概你指的是一个可以在OOP应用程序中找到通用代码并将其提取到aspect中的工具”是的,我正在搜索一个在将OOP代码转换为AOP后显示统计分析的工具。我知道有一个工具可以做到这一点,但它不是开源的。好的。你能提供一个url,我可以从那里获得它和文档吗?Baxter博士,非常感谢你提供详细信息。我会很快与你联系。