【问题标题】:Analyzing Java code across Eclipse projects跨 Eclipse 项目分析 Java 代码
【发布时间】:2014-06-27 15:43:30
【问题描述】:

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

【问题讨论】:

  • 在不了解您的项目的情况下,您可以简单地对每个项目进行分析并计算结果的交集。

标签: java eclipse rascal


【解决方案1】:

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

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

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

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

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

【讨论】:

    【解决方案2】:

    如果您习惯使用 Rascal 进行编程,您可以执行以下操作:

    1. 在 rascal 中创建一个java function,它将工作区中的项目集作为一组位置。位置需要在 |project://project_name| 中格式和项目需要可访问。
    2. 创建一个迭代集合的 rascal 函数,使用 createM3FromEclipseProject 创建模型,然后使用 composeJavaM3 将它们组合成一个模型以执行分析。

    如果没有,您可以创建一个问题here,我们可以将其添加到不稳定的构建中。由于下面提到的注意事项,尚未添加此内容。

    【讨论】:

      猜你喜欢
      • 2018-10-05
      • 2014-06-19
      • 1970-01-01
      • 2014-10-26
      • 1970-01-01
      • 1970-01-01
      • 2011-07-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多