gpt4 book ai didi

用于检测的Java源代码属性计数

转载 作者:行者123 更新时间:2023-12-02 07:59:37 25 4
gpt4 key购买 nike

目前我正在进行一个源代码抄袭检测项目,我实际上使用输入文件(源代码文件)属性的不同方面来检测学生作业中的抄袭行为。例如,我现在使用(标识符/变量的数量、使用的方法的数量、代码行数)和其他一些属性来表示每个源代码文件。

但是,当我尝试统计使用的变量数量时,一个问题是如何找出变量是否已被使用。因为学生可以故意添加一些标识符来掩盖抄袭行为。然而,当我尝试解决这个问题时,我发现这个问题非常困难。实现此目的的一种方法是使用 java 中的正则表达式来处理查找标识符,但找到它们后,我坚持如何检查是否使用。 (而且,在此之后,我仍然需要查找是否调用了 java 方法。)因此编写我自己的正则表达式版本可能会非常复杂。

我知道在像netbeans这样的IDE中,编辑器可以立即找出变量是否被使用,并在它下划线。所以我想知道是否有什么好的方法来检查变量是否使用。

任何有关如何检查变量的建议都会很好!

最佳答案

为了进行这种代码分析,您绝对必须研究解析器/编译器工具。仅通过搜索名称无法确定变量是否被使用;您还必须搜索正确的上下文。

我建议看看ANTLR ,这是一个基于Java的语言解析工具。它有一个可用的解析Java语法的定义here 。不要指望找到一个可以在几个小时内实现的简单解决方案。

另一个基于 Java 的工具是 JavaCC 。如果您正在寻找展示如何使用这些工具的示例代码,请查看 PMD ,它使用 JavaCC 构建的解析器来分析 Java 代码。

另一种可能性是为支持代码分析的 IDE 编写一个插件 - 您可能有一个更简单的接口(interface)来访问代码结构,正如您所说,许多功能已经可用并且可以简单地调用通过您的插件。

是的,您也可以使用一些正则表达式来破解。您是否想要这样做取决于您希望工具的精确程度。在不解析源代码的情况下,确定变量名称的出现是否实际上是该变量的使用仅仅是一种启发式猜测。

关于用于检测的Java源代码属性计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9108540/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com