現在、私はソースコード剽窃検出プロジェクトを行っています。実際に入力ファイル(souceコードファイル)の属性のさまざまな側面を使用して、学生割り当ての間違いを検出しています。例えば、私は今、各ソースコードファイルを表すために(識別子/変数の数、使用されたメソッドの数、コードの行数)とその他の属性を使用します。検出のためのJavaソースコードの属性
しかし、使用する変数の数を数えようとすると、変数が使用されているかどうかを調べる方法があります。学生は意図的に盗作をカバーするためにいくつかの識別子を入れることができるからです。しかし、これを解決しようとすると、私はこれを本当に厳しいものにしました。これを行うための1つのアプローチは、識別子の検索を処理するためにJavaの正規表現を使用することですが、それらを見つけた後、使用方法をチェックする方法に固執します。 (さらに、その後、Javaメソッドが呼び出されるかどうかを調べる必要があります)。したがって、独自のバージョンの正規表現を書くことは非常に複雑になる可能性があります。
私はいくつかのIDEでnetbeansのように知っていますが、エディタは変数が使用されているかどうかを即座に知り、それに下線を付けることができます。ですから、変数の使用状況をチェックする良い方法があるのだろうかと思います。
変数のチェック方法については、どのような提案も良いでしょう。これがそうのような変数の作成と一致する必要があります
(\w+)\s+<?varname>(\w+)\s*(=[\w\s\(\,)]+)?;
:頭に浮かぶ
私の教授は私自身の正規表現やコンパイラを書くのはあまりにも素朴で、いくつかの "コンパイラコンパイラ"を見るように言ったが、私はグーグルで、lexとyaccを見つけた。コンパイラの設計について多くの知識がなければ、読んだ後に失われました。 – Alex