So sánh và hợp nhất các tệp mã nguồn trong Java

So sánh và hợp nhất các tệp mã nguồn trong Java

Là một nhà phát triển Java, nếu bạn định xây dựng một công cụ hoặc ứng dụng so sánh mã nguồn hoặc bạn có thể cần quản lý một số phiên bản của tệp mã thì bạn có thể nghĩ về cách so sánh và hợp nhất các tệp mã nguồn trong Java. Nếu vậy, bài viết này sẽ giải thích cách chúng ta có thể thực hiện việc này dễ dàng mà không cần viết nhiều dòng mã. Ngoài ra, chúng ta sẽ xem cách chúng ta có thể truy xuất, chấp nhận hoặc loại bỏ các thay đổi trong khi hợp nhất các tệp mã nguồn.

Bài viết này sẽ đề cập đến các điểm được đưa ra dưới đây:

Thư viện Java để so sánh và hợp nhất các tệp mã nguồn

Để so sánh và hợp nhất các tệp mã nguồn, chúng ta sẽ sử dụng thư viện so sánh mã Java bao gồm tất cả các tính năng so sánh mã nguồn quan trọng và nổi bật. Thư viện so sánh mã Java này có thể được đã tải xuống hoặc có thể được cài đặt trực tiếp bằng cách sử dụng cấu hình Maven như bên dưới.

<repository>
    <id>groupdocs-artifacts-repository</id>
    <name>GroupDocs Artifacts Repository</name>
    <url>https://repository.groupdocs.com/repo/</url>
</repository>
<dependency>
    <groupId>com.groupdocs</groupId>
    <artifactId>groupdocs-comparison</artifactId>
    <version>22.11</version>
</dependency>

Cách so sánh và hợp nhất các file mã nguồn trong Java

Giả sử chúng ta có hai tệp (source.cs và target.cs) thuộc các phiên bản khác nhau của mã nguồn như trong ảnh chụp màn hình sau.

Các tập tin mã nguồn để so sánh

Bằng cách xem xét các tệp ở trên, hãy viết một đoạn mã bằng Java bằng cách làm theo các bước như dưới đây:

  1. Khởi tạo lớp Comparer bằng đường dẫn hoặc luồng của tài liệu nguồn.
  2. Gọi phương thức add() và chỉ định đường dẫn hoặc luồng của tài liệu đích.
  3. Gọi phương thức compare().

Mẫu mã sau đây cho thấy bạn có thể so sánh và hợp nhất các tệp mã nguồn trong Java dễ dàng như thế nào.

//Khởi tạo đối tượng Comparer bằng đường dẫn hoặc luồng tài liệu nguồn;
try (Comparer comparer = new Comparer(SourceFile)) {
// Gọi phương thức thêm và chỉ định đường dẫn hoặc luồng tài liệu đích.
comparer.add(TargetFile);  
//Gọi phương thức so sánh
final Path resultPath = comparer.compare(ResultPath);        
} 

Kết quả là chúng ta sẽ nhận được tệp mã nguồn đã hợp nhất và tệp HTML nêu bật những thay đổi trong mã. Xin lưu ý rằng các phần tử đã xóa sẽ được đánh dấu bằng màu đỏ , phần được thêm vào – có màu xanh lam và phần tử được sửa đổi – có màu xanh lục .

So sánh và hợp nhất các tệp mã nguồn

Lấy danh sách các thay đổi bằng Java

Để có được danh sách tất cả các thay đổi sau khi so sánh, chúng ta sẽ viết mã theo các bước sau:

  1. Khởi tạo đối tượng Comparer bằng đường dẫn của tệp nguồn.
  2. Gọi phương thức add() và chỉ định đường dẫn của tệp mục tiêu.
  3. Gọi phương thức compare().
  4. Lấy danh sách các thay đổi bằng cách sử dụng phương thức getChanges().

Mẫu mã bên dưới minh họa cách lấy danh sách tất cả các thay đổi.

//Khởi tạo đối tượng Comparer với đường dẫn tệp nguồn
try (Comparer comparer = new Comparer(sourceFile)) {
//Gọi phương thức [add][] và chỉ định đường dẫn tệp đích.
comparer.add(targetFile);
//Gọi phương thức so sánh
final Path resultPath = comparer.compare();
//Lấy danh sách các thay đổi bằng cách sử dụng phương thức getChanges
ChangeInfo[] changes = comparer.getChanges();
//Hiển thị số lượng thay đổi
System.out.println("Count of changes: " + changes.length);
}

Tùy chọn nâng cao trong thư viện so sánh mã Java

Nếu bạn cần chấp nhận hoặc từ chối một số phiên bản mã, bạn có thể phải áp dụng hoặc loại bỏ các thay đổi. Trong trường hợp này, vui lòng làm theo các bước dưới đây:

  1. Khởi tạo đối tượng của lớp Comparer bằng đường dẫn hoặc luồng của tài liệu nguồn.
  2. Gọi phương thức add() và đặt đường dẫn của tài liệu đích.
  3. Gọi phương thức compare().
  4. Gọi phương thức getChanges() và lấy danh sách các thay đổi được phát hiện.
  5. Đặt So sánhAction của đối tượng thay đổi cần thiết thành giá trị ComparisonAction.ACCEPT hoặc ComparisonAction.REJECT.
  6. Gọi phương thức applyChanges() và chuyển tập hợp các thay đổi cho nó.

Đoạn mã sau đây cho biết cách sử dụng các tùy chọn nâng cao của thư viện so sánh mã.

//Khởi tạo đối tượng Comparer với đường dẫn tệp nguồn
try (Comparer comparer = new Comparer(sourcePath)) {
//Gọi phương thức [add][] và chỉ định đường dẫn tệp đích.
 comparer.add(targetPath);
//Gọi phương thức so sánh
final Path resultPath = comparer.compare(outputPath);
//Lấy danh sách các thay đổi bằng cách sử dụng phương thức getChanges
ChangeInfo[] changes = comparer.getChanges();
//Đặt CompareAction của đối tượng thay đổi cần thiết thành giá trị CompareAction.ACCEPT.
for (int i = 0; i < 10; i++) {
    changes[i].setComparisonAction(ComparisonAction.ACCEPT);
 }
//Đặt CompareAction của đối tượng thay đổi cần thiết thành giá trị CompareAction.RE DỰ ÁN.
for (int i = 10; i < changes.length; i++) {
    	changes[i].setComparisonAction(ComparisonAction.REJECT);
}
// Gọi phương thức applyChanges và chuyển tập hợp các thay đổi cho nó.
comparer.applyChanges(resultPath, new ApplyChangeOptions(changes));
}

Nhận giấy phép miễn phí

Bạn có thể nhận giấy phép tạm thời miễn phí để dùng thử API mà không bị giới hạn về đánh giá.

Phần kết luận

Tóm lại, chúng tôi hy vọng rằng bạn đã học được cách so sánh và hợp nhất các tệp mã nguồn theo chương trình bằng thư viện so sánh mã Java. Kết quả bạn đã có được bản tóm tắt nội dung đã chèn hoặc đã xóa. Hơn nữa, bạn đã trải qua các cách để lấy danh sách thay đổi và chấp nhận hoặc từ chối những thay đổi đã xác định.

Bạn có thể truy cập tài liệu để khám phá các tính năng khác.

Đặt một câu hỏi

Bạn có thể cho chúng tôi biết câu hỏi hoặc thắc mắc của bạn trên diễn đàn của chúng tôi.

Câu hỏi thường gặp

Làm cách nào để so sánh và hợp nhất các tệp mã nguồn trong Java?

Khởi tạo lớp Comparer với đường dẫn hoặc luồng tài liệu nguồn, gọi phương thức add() và đặt đường dẫn hoặc luồng của tài liệu đích. Sau đó, gọi phương thức compare() của lớp Comparer.

Xem thêm