Mô-đun gợi ý sửa lỗi được phát triển dựa trên mã nguồn mở của công cụ JPlag [32] do những ưu điểm đã được phân tích ở Mục 3.3. Đầu vào của công cụ JPlag được sửa đổi cho phù hợp với hệ thống. Từ việc kiểm tra trùng lặp với một mã nguồn mẫu của công cụ JPlag, hệ thống phát triển thêm kiểm tra trùng lặp với nhiều mã nguồn mẫu cho trước. Chức năng kiểm tra trùng lặp mã nguồn trong công cụ JPlag nguyên bản cho phép so sánh mã nguồn lỗi của học sinh và các mã nguồn cơ sở, sau đó so sánh mã nguồn lỗi của học sinh với các mã nguồn đúng của các học sinh khác để phát hiện tương đồng. Ở đây mã nguồn cơ sở được hiểu là các mã nguồn do giáo viên cho sẵn để học
public class FaultStatement { private double suspiciousPoint; private String className;
private int line;
public FaultStatement(String className, int line,double suspiciousPoint)
{
this.suspiciousPoint = suspiciousPoint; this.className = className;
this.line = line; }
public double getSuspiciousPoint() {
return suspiciousPoint;}
public void setSuspiciousPoint(double suspiciousPoint) { this.suspiciousPoint = suspiciousPoint;}
public String getClassName() { return className;}
public void setClassName(String className) { this.className = className;}
public int getLine() { return line;
public void setLine(int line) { this.line = line;}
public String toString() {return className + "@" + line + "@" +
suspiciousPoint;} }
34
sinh làm mẫu, và việc chương trình của học sinh được đánh giá giống nhau và giống mã nguồn cơ sở thì không bị coi là đạo văn. Trong giai đoạn đầu triển khai hệ thống, do chưa có các chương trình đúng của học sinh được đưa vào bộ sưu tập làm căn cứ so sánh nên giáo viên sẽ đưa một số chương trình mẫu vào để so sánh. Khi hệ thống đã được triển khai, các bài làm đúng của học sinh được đưa vào làm chương trình mẫu cho việc so sánh. Bản chất chương trình mẫu ban đầu do giáo viên cung cấp và do học sinh làm đúng nộp vào là như nhau, nhưng không được hiểu như mã nguồn cơ sở trong công cụ JPlag nguyên bản. Mục đích của hệ thống là tìm ra những chương trình đúng có độ tương đồng cao nhất với chương trình đang cần sửa chữa và dù chương trình đúng đó được cung cấp bởi ai cho bộ sưu tập thì cũng không quan trọng. Vì vậy, để giảm bớt thời gian chạy chương trình, hệ thống sẽ cải tiến không cài đặt mã nguồn cơ sở và bỏ bước so sánh mã nguồn cơ sở với mã nguồn cần kiểm tra.
Kết quả so sánh ở bước trên là các chương trình với các tỉ lệ tương đồng khác nhau được hiển thị dưới dạng tệp HTML. Việc hiển thị nhiều kết quả so sánh cho một chương trình có khả năng gây nhiễu cho học sinh. Hơn nữa các chương trình có tỉ lệ tương đồng thấp nếu đem gợi ý học sinh cũng khó nhận dạng và sửa được lỗi. Do đó công cụ đã sửa đổi để chỉ hiển thị năm kết quả so sánh tốt nhất (Hình 4.3). Dựa trên kết quả đó người dùng lựa chọn xem gợi ý mình cần.