Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.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
跨Eclipse项目分析Java代码_Java_Eclipse_Rascal - Fatal编程技术网

跨Eclipse项目分析Java代码

跨Eclipse项目分析Java代码,java,eclipse,rascal,Java,Eclipse,Rascal,我们希望使用Rascal在Eclipse工作区中的Java项目集合中查找所有未使用的公共方法。我刚刚学习了如何使用createM3FromEclipseProject在Eclipse中创建Java项目的模型,并对其进行导航。但这只考虑了一个项目。如何在我的工作区中的所有Java项目中执行此分析?非常好的问题。在给定正确的Eclipse编译器设置和所有内容的情况下,从每个项目中提取模型,然后可以合并模型以获得总体模型: import lang::java::m3::Core; M3 compos

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

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

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

M3 composeJavaM3(loc id, set[M3] models) // the function to call
这将允许您对生成的M3模型进行跨项目分析


有一些注意事项,即如果两个项目中存在相同的限定类名,但实际上它们是不同的类,则compose函数将它们映射到彼此。要解决这些问题,您首先必须进行一些预处理,请参阅链接函数,但我们尚未获得这方面的经验。

如果您对使用Rascal编程感到满意,您可以执行以下操作:

在rascal中创建一个将工作区中的项目集作为一组位置获取的对象。位置需要在|project://project_name|格式和项目需要是可访问的。 创建一个在集合上迭代的rascal函数,使用createM3FromEclipseProject创建模型,然后使用composeJavaM3将它们组合到单个模型中以执行分析。
如果没有,您可以创建一个问题,我们可以将其添加到不稳定的构建中。由于下面提到的注意事项,没有添加此项。

在不了解更多项目信息的情况下,您只需对每个项目执行分析并计算结果的交点即可。