M3:如何识别Java项目中的语法错误

问题描述 投票:1回答:1

我正在使用Java M3模型编写一些分析规则,该模型加载了createM3FromDirectory。如果Java代码包含语法错误,我想中止而不运行分析,因为那样的话,模型可能处于不一致状态。

M3.messages即使对于好的项目,通常也包含很多错误,因为诸如junit之类的项目依赖项,createM3FromDirectory无法考虑。这些错误很好,我的分析仍然有效。

如何在加载模型时可靠地确定Rascal是否遇到语法错误?

目前我正在使用以下帮助器功能。

set[Message] syntaxErrors(M3 model) =
  { e
  | e:error(msg, _) <- model.messages
  , /^syntax error/i := msg
  };

这是可靠的方法吗?

java rascal
1个回答
0
投票

是的,恕我直言,这足够可靠。

此外,模式匹配可以任意嵌套,如下所示:

set[Message] syntaxErrors(M3 model) =
  { e | e:error(/^syntax error/i, _) <- model.messages}

另外,您还可以将类路径传递给createM3FromDirectory,以确保正确解析了JUnit依赖项(和其他依赖项)。如果需要为Maven项目构造这样的类路径,则可能需要尝试:https://github.com/cwi-swat/rascal-java-build-manager

© www.soinside.com 2019 - 2024. All rights reserved.