Tự động hóa Code Reviews trên GitHub

Thu HaTr

Code reviews là một phần công việc hàng ngày của kỹ sư software. Với việc dành 10% đến 20% thời gian cho code reviews, tự động hóa code reviews (ít nhất là một phần) giúp họ có thêm thời gian để tập trung vào các công việc khác.

Ngoài ra, tự động hóa code reviews đảm bảo tính nhất quán giữa reviews và giúp giải quyết khó khan cho các developers đang chờ review. Nó làm tăng đáng kể tốc độ của developer trong khi giảm chi phí kỹ thuật.
0.png

Tự động hóa Code Reviews

Bài viết này sẽ giải thích từng bước cách tự động hóa code reviews trên Github bằng Code Inspector, một nền tảng phân tích code cho phép developers viết software tốt hơn. Code Inspector cung cấp chức năng tự động hóa code reviews, phát hiện các vấn đề về thiết kế, bảo mật, an toàn, thực thi tốt trong code, cũng như bản sao của các hàm phức tạp.

Bước 1: Cài đặt GitHub App trên repository

Truy cập https://github.com/marketplace/code-inspector và cài đặt application. Nhấp chuột vào “Install for free”.
1.png
Sau đó, nhấp vào “Complete order and begin installation”.
2.png
Cuối cùng, chọn repository muốn kích hoạt tự động hóa code cho repository và chọn “Install & Authorize”.
3.png
Bước 2: Tạo một Pull Request

Để minh họa các khả năng, hãy bắt đầu với Python project nhỏ chỉ có một vài dòng code và đặt vào đó một số lỗi.

Trong terminal, truy cập repo trống. Giả sử có một repository, thì tất cả lệnh bên dưới phải được nhập vào thư mục chứa repository.

Trước khi bắt đầu viết bất kỳ code nào, hãy chuyển sang branch mới tên là code-review-demo
Mã:
git checkout -b code-review-demo
Tạo một chương trình thực hiện tính tổng 2 số đơn giản. Viết đoạn code sau vào tệp main.py.
Mã:
$ git add main.py
$ git commit -a
$ git push --set-upstream origin code-review-demo

Counting objects: 3, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 349 bytes | 349.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote:
remote: Create a pull request for 'code-review-demo' on GitHub by visiting:
remote:   https://github.com/codeinspectordemo/demo/pull/new/code-review-demo
remote:
To https://github.com/codeinspectordemo/demo.git
* [new branch]   code-review-demo -> code-review-demo
Branch 'code-review-demo' set up to track remote branch 'code-review-demo' from 'origin'.
Push branch lên repo ở trên GitHub. Bây giờ, việc tạo pull request sẽ chính thức yêu cầu đẩy branch lên master. URL để tạo pull request được cấp khi push branch và chỉ cần truy cập vào: https://github.com/codeinspectordemo/demo/pull/new/code-review-demo
Khi mở liên kết, cần đặt tiêu đề và thông báo cho Pull Request. Nhấp vào “Create pull request” để tạo.
4.png
Bước 3: Kiểm tra kết quả trong Pull Request
Sau khi phân tích Pull Request kết thúc, tóm tắt của phân tích sẽ có trong pull request. Để xem kết quả cho từng file được phân tích, nhấp vào File như dưới đây.
Code Inspector thêm comments về từng vấn đề mã hóa và giải thích code bị lỗi.
5.png
Bước 4: Sửa lỗi và xác thực code không có vấn đề
Có thể khắc phục và giải quyết vấn đề được báo cáo trong tự động hóa review. Theo review, trong trường hợp hiện tại cần:
  • thêm documentation cho module
  • Thêm documentation cho hàm đảm bảo hàm sử dụng quy tắc đặt tên snake_case
  • Thêm một newline cuối cùng vào cuối file
Trong trường hợp này, để khắc phục các sự cố báo cáo bởi Code Inspector, documentation được thêm vào module để đảm bảo hàm sử dụng quy tắc snake_case. Một vài newline cuối cùng cũng được thêm sau print statement.

Code đúng sẽ như sau.
Mã:
""" My first Python module """

def sum_two_terms(term1, term2):
   """
   Add two terms
   :param term1: the first term
   :param term2: the second term
   :return:
   """
   return term1 + term2

print("2 + 2 = {0}".format(sum_two_terms(2, 2)))
Khi sửa đổi code, hãy cập nhật nó trên repository từ xa.
Mã:
$ git commit -a
$ git push

Username for 'https://github.com': <username>
Password for 'https://<username>@github.com':
Counting objects: 3, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 429 bytes | 429.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/codeinspectordemo/demo.git
   79594a2..c0bbd8a  code-review-demo -> code-review-demo
The pull request status will be automatically
Trạng thái pull request sẽ được tự động cập nhật và chắc chắn rằng code cập nhật đã được xác minh và chính xác. Xem lịch sử commit, có thể thấy cam kết đầu tiên không được code review thông qua trong khi code mới lại được phép..
6.png

Tổng kết
Hướng dẫn này đã giải thích cách tự động hóa code reviews trên GitHub với Code Inspector. Mặc dù ví dụ được lấy trong hướng dẫn này là cơ bản, nhưng code Inspector hỗ trợ hơn mười ngôn ngữ và có thể sử dụng trên nhiều nền tảng, bao gồm GitHub, Gitlab hoặc Bitbucket. Công cụ Code Inspector bao gồm các quy tắc trùng lặp code, độ phức tạp hoặc thậm chí là khiến code dễ đọc hơn. Cũng có thể tích hợp công cụ phân tích này trong Continuous Integration pipeline (CI pipeline) để chặn merge hoặc code không đáp ứng tiêu chuẩn chất lượng nhất định.
Nguồn: https://devopscube.com/automating-code-reviews-github/
 
Sửa lần cuối:
Top