我正在做一个项目,我想就完全初学者编写的 Java 代码提供反馈。换句话说,我需要能够判断代码是否遵循约定,而不仅仅是它是否是有效的 Java 代码。
我研究过pyparsing、PLY和pyPEG等模块,看起来它们至少可以解析大部分 Java 子集——这很好。但是我对解析不是很有经验,所以我不确定是否可以使用这些工具来检查代码约定?
这取决于您正在谈论的代码约定类型。
如果您正在谈论反映在源语法和语义中的约定(例如,检查标识符约定、不分配给参数、正确关闭资源),则可以基于由从正常的Java语法。
如果您在谈论缩进、空白、注释等的使用约定,普通的 Java 解析器会忽略这些,并且它们不会记录在解析树中。因此,您需要使用旨在识别和捕获这些内容的解析器(或其他类型的工具)进行分析。
似乎最好的选择是使用 Eclipse JDT,通过 Jython 或编写一个小的 Java 程序,该程序将由 Python 作为单独的进程执行。