The basic idea of the detector is
Source Code --> IR From GCC --> AST --> Caculate Tree Edit Distance --> Judge whether it's plagiarism or not
Graghviz for python3 is required.
cd ast_comparator
bash start.sh
Check graphviz/plagiarism.pdf. It might take 10~20 minutes.
Comparision requires *.tu
file generated by GCC.
You are supposed to compile the program with -fdump-translation-unit -fno-builtin -ffreestanding
and place the *.tu
file under test/tu
Then, please put all *.tu
files under test/tu/
Also, modify test/scope.conf with scopes you would prefer to focus. Please refer to test/scope.conf.example for a good alignment.
# Make sure *.tu under test/tu
# Scope added with name of test/scope.conf and formatted similar to test/scope.conf.example
cd ast_comparator
bash start.sh
/// 2018/01/22 Gao Zhiyuan created
///
/// Copyright (c) Computer Systems and Platforms Laboratory, SNU
/// All rights reserved.
///
/// Redistribution and use in source and binary forms, with or without modifi-
/// cation, are permitted provided that the following conditions are met:
///
/// - Redistributions of source code must retain the above copyright notice,
/// this list of conditions and the following disclaimer.
/// - Redistributions in binary form must reproduce the above copyright notice,
/// this list of conditions and the following disclaimer in the documentation
/// and/or other materials provided with the distribution.
///
/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
/// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
/// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
/// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
/// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSE-
/// QUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
/// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
/// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
/// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
/// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
/// DAMAGE.