ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG THÁI NGUYÊN KHOA CÔNG NGHỆ THÔNG TIN BÀI BÁO CÁO VẬN HÀNH VÀ BẢO TRÌ PHẦN MỀM Chủ đề Xét duyệt mã nguồn Source code review Thái Nguyên 2022 Mục lục Bảng Phâ.
ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG THÁI NGUYÊN KHOA CÔNG NGHỆ THÔNG TIN BÀI BÁO CÁO VẬN HÀNH VÀ BẢO TRÌ PHẦN MỀM Chủ đề: XÉT DUYỆT MÃ NGUỒN - SOURCE CODE REVIEW Thái Nguyên 2022 Mục lục Tên Sinh Viên Bảng Phân Công Công Việc Công Việc − Lập kế hoạch phân công công việc, giám sát, theo dõi tiến độ dự án − Tham gia xây dựng demo − − − − − − Nghiên cứu, tổng hợp tài liệu Xây dựng tài liệu, đưa chuẩn để review code Giới thiệu công cụ Codacy Tham gia review code thủ công Tham gia xây dựng demo review code tự động Tham gia xây dựng demo review code thủ công CHƯƠNG 1: TỔNG QUAN VỀ CODE REVIEW 1.1 Code Review gì? 1.1.1 Giới thiệu Code Review trình mà lập trình viên xem xét đánh giá code thành viên khác nhóm Đó q trình thảo luận với dịng code, qua đưa góp ý hữu ích làm cho dòng code thêm chất lượng Tầm quan trọng code review: Giảm số lượng bug code Đảm bảo tất yêu cầu thực Một cách hiệu để học hỏi lẫn làm quen với code base Giúp trì style code chung cho tồn đội Gắn kết đội ,khuyến khích developer nói chuyện với để tìm cách giải tốt Các cách thực code review hiệu sẵn lịng chia sẻ kiến thức với người khác đưa góp ý mang tính xây dựng khơng lợi dụng code review vào mục đích cơng kích người khác ln muốn tiếp thu góp ý hữu ích người khác để hồn thiện biết trân trọng đóng góp thành viên khách nhóm Các lỗi thường gặp code review Cú pháp code: Một bước code review kiểm tra cú lỗi cú pháp Các issue chẳng hạn thị thụ khơng đúng, lề, thừa dấu cách, thiếu dấu chấm phẩy, thiếu đóng ngoặc dường khơng đủ giúp đóng góp vào chất lượng code Có vài đoạn code bị comment lại không dung cần bỏ để gọn gàng Grammar: Có lỗi typo, lỗi tả code? Ngữ pháp viết có chuẩn khơng? Sử dụng tiếng Anh đắn phải đảm bảo Tên file, tên biến, tên class có nghĩa chưa? Gợi ý lỗi code tiềm tàng: Gợi ý xử lý chương trình phân tích code để đưa lỗi tiềm tang Nếu code bạn triển khai editor có trình phân tihcs code check với lỗi developer Có nhiều thư viện có sẵn cho loại ngơn ngữ khác giúp thông báo lỗi tiềm tàng code bạn Ví dụ ESLint cho Javascript hay Rubocop cho Ruby… Tính sử dụng lại code lỗi trùng lặp code: DRY (Don’t Repeat Yourself) nguyên tắc giúp loại bỏ lặp lại code Các phương thức có có sử dụng hiệu quả? Nếu code tương tự sử dụng nhiều file, làm cho dùng chung Vậy tất code nên viết với tư dùng cho sau Điều giúp code nhỏ dễ bảo trì Chất lượng kỹ thuật: Điểm bao gồm loại yếu tốt Nhiều yếu tố đóng góp vào chất lượng kỹ thuật Pull Request Cơ chế xử lý lỗi: Code ln có sai sót Trong thực tế code output kết nhiên có lỗi, chế xử lý lỗi cần thiết Error handling bắt lỗi chuyển sang đoạn code khác mà bạn muốn thay tắt ln chương trình Ví dụ: API trả message status code Testing: TDD (Test Driven Development) phần lập trình Tất developer phải tìm hiểu khơng sớm muộn Đảm bảo chương trình chdứa đoạn code test cho tất code điều cần thiết Test giúp bắt giảm thiểu bug xảy có, kiểm tra hành vi có code thay tạo tài liệu tốt cho tính có sẵn Nó giúp tập hợp developer để tìm hiểu vào đoạn code có sãn Luôn check tất test pass Review chia làm loại chính: Review thủ cơng: Do developer dự án thành viên phân công review gọi reviewer thực review code pull request thành viên khác gửi lên Khi pull request đáp ứng đủ tiêu chí/tiêu chuẩn đề accept merge Chủ yếu vấn đề thuật toán, code standards,… Nếu không đạt bị ignore người gửi pull request phải code lại sau thực pull request trình lặp lại pull request đạt yêu cầu Review tự động: Review code tự động phương pháp dùng công cụ tự động tích hợp sẵn để thực việc review code tự động Ví dụ tìm lỗi cú pháp, indent,… Việc review code tự động thường thực trước review code thủ công, nhằm sốt lại lỗi mà review tự động khơng thể phát 1.1.2 Tại cần review ? Đảm bảo clean code: Review code số phương pháp giữ code Khi team review cho phát chỗ viết ngắn mà hiệu cao hơn, hay chỗ áp dụng design pattern XYZ đó, chức A, module B bị lặp lại code nhiều….tất tần tật vấn đề mắc phải, kể lập trình viên có kinh nghiệm khơng thể chục mắt đội ngũ phát triển Phát lỗi sớm: Đã bạn tự tin chức mà bạn phát triển hoạt động tốt, test nhiều lần không phát thêm lỗi Nhưng bạn test thiếu testcase mà Nếu team nhìn vào đoạn code mà bạn viết, team phát lỗi nằm đoạn lệnh hay lệnh mà chẳng cần phải test Nâng cao kỹ thuật cho lập trình viên Đồng hóa cơng việc cho nhóm phát triển Góp ý xây dựng chương trình Đánh giá chất lượng lập trình viên Thể lực thân 1.2 Git/GitHub gì? Git tên gọi hệ thống quản lý phiên phân tán (Distributed Version Control System – DVCS) hệ thống quản lý phiên phân tán phổ biến nay, cung cấp lệnh giúp quản lý mã nguồn dễ dàng DVCS hệ thống giúp máy tính lưu trữ nhiều phiên khác mã nguồn nhân (clone) từ kho chứa mã nguồn (repository), thay đổi vào mã nguồn máy tính ủy thác (commit) đưa lên máy chủ nơi đặt kho chứa Và máy tính khác (nếu họ có quyền truy cập) clone lại mã nguồn từ kho chứa clone lại tập hợp thay đổi máy tính Git DVCS phổ biến nay, nhiều tổ chức, dự án lớn sử dụng Google, Facebook, Microsoft,… Sử dụng git kỹ bắt buộc lập trình viên tham gia vào dự án có nhiều thành viên Git dần chở nên thông dụng dần thay SVN truyền thống Có nhiều hệ thống dự tảng Git github, gitlab, đời nhằm giải vấn đề lưu trữ quản lý mã nguồn trực tuyến Github dịch vụ máy chủ repository cơng cộng, người tạo tài khoản để tạo kho chứa riêng để làm việc Github cho phép tạo remote repository mà không cần mua sever Cung cấp nhiều tính giúp quản lỹ dự án tốt Có tính cơng cơngk Tính Explore 1.3 Lý chọn đề tài Trong lĩnh vực lập trình, code review mang lại nhiều lợi ích việc đảm bảo chất lượng mã nguồn Từ sinh viên cơng nghệ thông tin chúng cần phải biết cách review code đảm bảo chất lượng mã nguồn Tìm hiểu Code review để biết cách đánh giá mã nguồn đồng thời giúp làm việc nhóm trở nên hiệu 1.4 Phạm vi đề tài Làm rõ vai trò Code review quy trình đảm bảo chất lượng mã nguồn Tìm hiểu Code review, cách để đánh giá Demo triển khai q trình review code thủ công tự động CHƯƠNG ĐẢM BẢO CHẤT LƯỢNG MÃ NGUỒN 2.1 Thanh tra mã nguồn Thanh tra mã nguồn dạng kiểm tra/kiểm thử phần mềm Đó tiến trình dị tìm lỗi tiềm ẩn bên mã nguồn phần mềm sau mã nguồn hết lỗi cú pháp trước mã nguồn biên dịch thành chương trình thực thi Tiến trình tra cơng ty phần mềm áp dụng linh động tùy theo điều kiện Trong thực tế, nhóm tra mã nguồn khoảng – người Thời gian cho lần họp nhóm khơng q Thơng thường, báo cáo lỗi nhóm tra xem tốt có 70% mà tác giả bắt buộc phải sửa (tức lỗi thực mà tác giả mã nguồn phải công nhận) Nếu đọc mã nguồn thủ cơng trung bình tra viên đọc khoảng 120 dịng mã nguồn Mỗi buổi họp nhóm (khoảng giờ) duyệt qua tối đa khoảng 1200 dòng mã nguồn Lỗi mã nguồn đa dạng, suất phát lỗi tùy thuộc nhiều vào kỹ phân tích mã nguồn tra viên Lỗi cần tra phân chia thành nhóm tương ứng với đặc điểm đối tượng lập trình Gồm nhóm lỗi sau: Lỗi cấu trúc: Các lỗi liên quan đến cấu trúc code, thành phần có convention, có dúng design Code có thực thực hiên hồn tồn xác theo thiết kế? • Code có tn theo chuẩn đặt hay khơng? Code có phần gọi thủ tục khơng cần thiết hay đoạn unreachable code? Tất đoạn code lặp có đưa vào thủ tục hay chưa? Lỗi tài liệu: Code có rõ ràng đầy đủ comment, cấu trúc đễ dàng để maintain Tất comment có phù hợp với code? Lỗi liệu: Các lỗi liên quan đến xử lý liệu kiểu liệu Tính tốn biến khơng phải kiểu số? Tính tốn kiểu liệu hỗn hợp? Tính tốn biến có độ dài khác nhau? Vùng nhớ có kích thước nhỏ giá trị gán? Kết tức thời tràn nhớ? Lỗi chia 0? Trình biên dịch ngầm hiểu biểu thức logic không? Lỗi cấu trúc điều kiện: Rẽ nhiều nhánh có vượt qua? Mỗi vịng lặp dừng hay khơng? Chương trình dừng hay khơng? Vịng lặp có bị bỏ qua điều kiện đầu vào? Vịng lặp bỏ qua có xác khơng? Lỗi nhập xuất: Các thuộc tính tệp tin xác khơng? Các câu lệnh mở tệp tin xác khơng? Các định định dạng phù hợp với câu lệnh nhập, xuất? Các điều kiện kết thúc tệp tin xử lý? Kiểm tra tính hợp lệ cho đầu vào? Lỗi giao tiếp hàm, thủ tục: Số đối số truyền tới mô-đun gọi số tham số? 10 B4: sửa lỗi vấn đề cấp độ warnning – error 32 CHƯƠNG 3: DEMO QUÁ TRÌNH REVIEW CODE 3.1 Các bước review code tự động Bước 1: Truy cập trang web: https://github.com/ đăng kí tài khoản thực đăng nhập vào hệ thống GitHub Bước 2: tạo kho repository 33 Bước 3: Đẩy source code lên repository vừa tạo Bước 4: truy cập trang: https://github.com/marketplace/category/code-review click vào biểu tượng logo công cụ Codacy 34 Bước 5: tiến hành cài đặt codacy Bước 6: Add project cần review code 35 Bước 7: Thống kê phân loại vấn đề mã nguồn 36 Bước 8: Phân tích chi tiết vấn đề 37 38 Bước 9: Sau xác định vấn đề ta tiến hành trang quản lí GitHub để sửa đổi mã nguồn Bước 10: Đánh giá kết review 3.2 Các bước review code thủ công Các bước thực 39 Bước 1: tạo tài khoản git/github Bước 2: Tạo Repositories set quyền cho Branch + Tạo Repositories 40 + Set quyền cho branch Bước 3: Thêm thành viên vào dự án 41 Bước 4: Code push code lên Github 42 Bước 5: Tạo pull requests 43 Bước 6: Các thành viên review code cho đánh giá Bước : Xét duyệt + Nếu code chấp nhận nhấn Mege pull request +nếu code khơng chấp nhận review sửa đến chấp nhận dừng Bước 8: Tất Pull requests chấp nhận cho phiên 44 CHƯƠNG 4: KẾT LUẬN Kết đạt -Đã tìm hiểu khái niêm, cơng cụ review code -Đã nắm tiêu chí, tiêu chuẩn review code - Đã biết cách dụng công cụ review code Hướng phát triển - Tiếp tục tổng hợp nghiên cứu review code - Tiếp tục thao tác thực hành công cụ review 45 ... tra/kiểm thử phần mềm Đó tiến trình dị tìm lỗi tiềm ẩn bên mã nguồn phần mềm sau mã nguồn hết lỗi cú pháp trước mã nguồn biên dịch thành chương trình thực thi Tiến trình tra cơng ty phần mềm áp dụng... thay tắt ln chương trình Ví dụ: API trả message status code Testing: TDD (Test Driven Development) phần lập trình Tất developer phải tìm hiểu khơng sớm muộn Đảm bảo chương trình chdứa đoạn code... nhiều vào kỹ phân tích mã nguồn tra viên Lỗi cần tra phân chia thành nhóm tương ứng với đặc điểm đối tượng lập trình Gồm nhóm lỗi sau: Lỗi cấu trúc: Các lỗi liên quan đến cấu trúc code, thành phần