我们想使用 Rascal 在 Eclipse 工作区的 Java 项目集合中查找所有未使用的公共方法。我刚刚学习了如何在 Eclipse 中使用createM3FromEclipseProject
并导航它来创建 Java 项目的模型。但这仅考虑了一个项目。如何跨工作区中的所有 Java 项目执行此分析?
问问题
127 次
2 回答
0
很好的问题。您从每个项目中提取模型,给定正确的 Eclipse 编译器设置和所有内容,然后您可以合并模型以获得总体模型:
import lang::java::m3::Core;
M3 composeJavaM3(loc id, set[M3] models) // the function to call
这将允许您对生成的 M3 模型进行跨项目分析。
有一些注意事项,即如果两个项目中存在相同的限定类名但它们实际上是不同的类,那么 compose 函数会将它们相互映射。要解决此类问题,您首先必须进行一些预处理(参见link
函数),但我们还没有这方面的经验。
于 2014-06-29T19:17:16.307 回答
0
如果您习惯在 Rascal 中编程,您可以执行以下操作:
- 在 rascal 中创建一个java 函数,将工作区中的项目集作为一组位置。位置需要在 |project://project_name| 中 格式和项目需要是可访问的。
- 创建一个迭代集合的 rascal 函数,使用 createM3FromEclipseProject 创建模型,然后使用 composeJavaM3 将它们组合成单个模型以执行分析。
如果没有,您可以在此处创建问题,我们可以将其添加到不稳定的构建中。由于下面提到的注意事项,尚未添加此内容。
于 2014-06-30T15:37:07.143 回答