IP Library › Granted Patent US 7,823,127
Granted Patent B2
US 7,823,127 · App. 12/330,492 · Granted Oct 26, 2010

Detecting plagiarism in computer source code

Assignee: Software Analysis and Forensic Engineering Corp.
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,823,127
App. No.
12/330,492
Granted
Oct 26, 2010
Kind
B2
Abstract

Plagiarism of software source code is a serious problem in two distinct areas of endeavor—cheating by students at schools and intellectual property theft at corporations. A number of algorithms have been implemented to check source code files for plagiarism, each with their strengths and weaknesses. This invention detects plagiarism by comparing statements within source code of a first program to comments within source code of a second program.

Claims (32)

1. A computer-implemented method comprising:

creating, by a computer system, a first array of lines of functional program code from a first program source code file, the first program source code file including the lines of functional program code of a first program written in a first programming language and lines of non-functional comments of the first program;

creating, by the computer system, a second array of lines of non-functional comments from a second program source code file, the second program source code file including lines of functional program code of a second program written in a second programming language and the lines of non-functional comments of the second program, wherein the first programming language is different from the second programming language, and wherein the second array of non-functional comments is created using a predefined list of programming language specific special characters to determine the beginning and end of comments in the second program source code file;

comparing, by the computer system, the lines of functional program code from the first array with the lines of non-functional comments from the second array to find similar lines;

calculating, by the computer system, a similarity number based on the similar lines, wherein calculating the similarity number comprises finding a number of matching functional statements in the first array and non-functional comments in the second array indicating that the non-functional comments of the second program source code file contain functional program code of the first program source code file; and

presenting to a user an indication of copying of the first program source code file wherein said indication of copying is defined by the similarity number.

2. The method of claim 1 ) wherein:

calculating a similarity number comprises finding a number of matching lines in the first and second arrays weighted by the number of characters in the lines.

3. The method of claim 1 ) wherein:

calculating a similarity number comprises finding a number of lines in the first and second arrays that have an edit distance less than a given threshold.

4. A computer-readable storage medium storing executable instructions to cause a computer system to perform a method comprising:

creating a first array of lines of functional program code from a first program source code file, the first program source code file including the lines of functional program code of a first program written in a first programming language and lines of non-functional comments of the first program;

creating a second array of lines of non-functional comments from a second program source code file, the second program source code file including lines of functional program code of a second program written in a second programming language and the lines of non-functional comments of the second program, wherein the first programming language is different from the second programming language, and wherein the second array of non-functional comments is created using a predefined list of programming language specific special characters to determine the beginning and end of comments in the second program source code file;

comparing the lines of functional program code from the first array with the lines of non-functional comments from the second array to find similar lines;

calculating a similarity number based on the similar lines, wherein calculating the similarity number comprises finding a number of matching functional statements in the first array and non-functional comments in the second array indicating that the non-functional comments of the second program source code file contain functional program code of the first program source code file; and

presenting to a user an indication of copying of the first program source code file wherein said indication of copying is defined by the similarity number.

5. The computer-readable storage medium of claim 4 ) wherein:

calculating a similarity number comprises finding a number of matching lines in the first and second arrays weighted by the number of characters in the lines.

6. The computer-readable storage medium of claim 4 ) wherein:

calculating a similarity number comprises finding a number of lines in the first and second arrays that have an edit distance less than a given threshold.

7. A computer-implemented apparatus comprising:

a computer; and

a source code matching program on the computer, the source code matching program comprising:

means for creating a first array of lines of functional program code from a first program source code file, the first program source code file including the lines of functional program code of a first program written in a first programming language and lines of non-functional comments of the first program;

means for creating a second array of lines of non-functional comments from a second program source code file, the second program source code file including lines of functional program code of a second program written in a second programming language and the lines of non-functional comments of the second program, and wherein the second array of non-functional comments is created using a predefined list of programming language specific special characters to determine the beginning and end of comments in the second program source code file;

means for comparing the lines of functional program code from the first array with the lines of non-functional comments from the second array to find similar lines;

means for calculating a similarity number based on the similar lines, wherein calculating the similarity number comprises finding a number of matching functional statements in the first array and non-functional comments in the second array indicating that the non-functional comments of the second program source code file contain functional program code of the first program source code file; and

means for presenting to a user an indication of copying of the first program source code file wherein said indication of copying is defined by the similarity number.

8. The apparatus of claim 7 ) wherein:

the means for calculating a similarity number comprises means for finding a number of matching lines in the first and second arrays weighted by the number of characters in the lines.

9. The apparatus of claim 7 ) wherein:

the means for calculating a similarity number comprises finding a number of lines in the first and second arrays that have an edit distance less than a given threshold.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 5, 2022
From: SOFTWARE ANALYSIS AND FORENSIC ENGINEERING CORPORATION
To: SAFE IP LLC
Reel/Frame 059830/0069 →
Continuity (2)
Continuation In Part 1072063600 · Nov 25, 2003
Related Publication 20090089754A1 · Apr 2, 2009