2014-06-27 32 views
0

我们希望使用Rascal在Eclipse工作区的Java项目集合中查找所有未使用的公共方法。我刚刚学会了如何使用createM3FromEclipseProject在Eclipse中创建一个Java项目模型并导航。但这只考虑一个项目。如何在我的工作区中的所有Java项目中执行此分析?跨Eclipse项目分析Java代码

+0

不知道更多关于您的项目,您可以简单地为每个项目执行分析并计算结果的交集。 – Hannes

回答

0

优秀的问题。您可以从每个项目中提取的模型,给予正确的Eclipse编译器设置和一切,那么你可以合并模式,以得到一个总体模型:

import lang::java::m3::Core; 

M3 composeJavaM3(loc id, set[M3] models) // the function to call 

这将允许你做一个跨项目分析上所产生的M3模型。

有一些注意事项,即如果两个项目中都存在相同的合格类名,但实际上它们是不同的类,那么合成函数会将它们映射到彼此之上。要解决这些问题,您首先必须做一些预处理(请参阅link函数),但我们尚未获得相关经验。

0

如果你是流氓舒适的编程,你可以做到以下几点:

  1. 创建无赖是可以获得一套项目工作区为一组位置的java function。位置需要位于| project:// project_name |中格式和项目需要可访问。
  2. 创建一个遍历该集合的rascal函数,使用createM3FromEclipseProject创建模型,然后使用composeJavaM3将它们组合到单个模型中以执行分析。

如果不是,您可以创建一个问题here,我们可以将其添加到不稳定的版本。由于下面提到的警告,所以未添加。