跨Eclipse项目分析Java代码

时间:2014-06-27 15:43:30

标签: java eclipse rascal

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

2 个答案:

答案 0 :(得分:0)

很好的问题。您可以从每个项目中提取模型,给定正确的Eclipse编译器设置和所有内容,然后您可以合并模型以获得一个总体模型:

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

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

这将允许您对生成的M3模型进行跨项目分析。

有一些警告,即如果两个项目中都存在相同的限定类名,但它们实际上是不同的类,那么compose函数会将它们相互映射。要解决这些问题,您首先必须进行一些预处理(请参阅link函数),但我们还没有获得相关经验。

答案 1 :(得分:0)

如果您熟悉Rascal编程,可以执行以下操作:

  1. 在rascal中创建一个java function,它将工作区中的项目集作为一组位置获取。位置需要位于| project:// project_name |中格式和项目需要可访问。
  2. 创建一个遍历集合的rascal函数,使用createM3FromEclipseProject创建模型,然后使用composeJavaM3将它们组合成单个模型以执行分析。
  3. 如果没有,您可以创建问题here,我们可以将其添加到不稳定的版本中。由于下面提到的警告,因此没有添加。