Linter là gì
Photo by Christopher Gower on Unsplash

Ngày càng có nhiều lập trình viên sử dụng linters và các công cụ tĩnh khác trong quá trình phát triển phần mềm. Một số tích hợp chúng trong IDE, những người khác tự động hóa bằng cách chạy chúng như một bước bổ sung trong CI. Ngoài ra, một số chạy cả hai cách.

Vậy Linter là gì?

Theo wiki, Linter là một công cụ phân tích mã nguồn giúp tìm ra các lỗi lập trình, bugs, lỗi văn phong và các cấu trúc đáng ngờ.

Bản linter đầu tiên được viết bởi Stephen C. Johnson vào năm 1978 khi đang làm việc trong hệ điều hành Unix tại Bell Labs. Sau đó, nhiều linter khác đã xuất hiện với nhiều mục đích và ngôn ngữ khác nhau chứ không riêng gì C.

Các linters đầu tiên được sử dụng để kiểm tra mã nguồn và tìm các tối ưu hóa tiềm năng cho trình biên dịch. Tuy nhiên, trong những năm qua, linter còn có thể kiểm tra và phân tích nhiều vấn đề khác.

Việc sử dụng linters cũng đã giúp nhiều nhà phát triển viết code tốt hơn cho các ngôn ngữ lập trình không biên dịch. Vì không có lỗi thời gian biên dịch, việc tìm lỗi chính tả, lỗi cú pháp, cách sử dụng các biến không được khai báo, ví dụ: lệnh gọi đến các hàm không xác định hoặc không dùng nữa, giúp các nhà phát triển sửa lỗi nhanh hơn và giảm lỗi trước khi thực thi.

Linter ngày càng phát triển

Linters ngày càng phát triển. Bắt đầu với những kiểm tra đơn giản, nhưng ngày nay, linters ngày càng trở nên phức tạp hơn. Linter có thể thực hiện phân tích tĩnh (Static Analysis), thực thi cờ cấu hình (configuration flags), kiểm tra sự tuân thủ với quy tắc bảo mật hoặc hướng dẫn kiểu nhất định, và hơn thế nữa.

Hãy cùng khám phá một số cách kiểm tra này của linters.

Phân tích tĩnh (Static Analysis)

Phân tích tĩnh có nghĩa là phần mềm tự động chạy qua nguồn mã của bạn mà không thực thi nó. Nó kiểm tra tĩnh các lỗi tiềm ẩn, rò rỉ bộ nhớ và bất kỳ kiểm tra nào khác có thể hữu ích.

Lấy ví dụ với Python, bạn có công cụ Radon. Nó có thể đếm các dòng mã nguồn (SLOC), các dòng nhận xét, một dòng trống và các số liệu thô khác, nhưng nó cũng có thể tính toán “Chỉ số khả năng duy trì – Maintainability Index”, có thể rất quan trọng trong một số dự án.

Đó chỉ là một ví dụ. Có rất nhiều linters khác thực hiện kiểm tra Phân tích tĩnh.

Chuẩn hóa code (Code standardizing)

Chuẩn hóa codelà một cách để chuyển code của bạn sang một cấp độ hiệu quả hơn. Có một hướng dẫn và chạy các linters dựa trên codebase sẽ tránh được những thay đổi về mặt thẩm mỹ như thay thế tất cả các tab cho khoảng trắng, thụt lề một phép gán biến hoặc thậm chí ngắt dòng sau một số ký tự nhất định.

Bảo mật

Nếu bạn yêu thích Rails, bạn có thể đã nghe nói về Brakeman. Đó là một Công cụ bảo mật phân tích tĩnh. Sẽ có lợi khi tìm ra các vấn đề bảo mật tiềm ẩn. Ví dụ: nó chạy các kiểm tra tìm SQL Injection khi sử dụng ActiveRecord’s #find_or_create_by . Nó cũng bổ sung kiểm tra XSS, tùy chọn cấu hình và hơn thế nữa.

Tìm các bug tìm ẩn

Lấy ví dụ trong JavaScript, một trong những điều nổi tiếng nhất là sự khác biệt giữa == và ===. Đó là một phương pháp hay và tránh mất nhiều thời gian gỡ lỗi, luôn sử dụng ===. Ví dụ: nếu bạn bật ESLint để kiểm tra điều đó, nó có thể cho bạn biết phần mã của bạn đang sử dụng == và thậm chí thay thế nó cho bạn.

Cải tiến hiệu suất

Mỗi developer có kinh nghiệm không chỉ biết tầm quan trọng của việc thực hiện phần mềm mà còn có nhiều thủ thuật để cải thiện nó. Vấn đề là: những người mới đến thì sao? Làm thế nào bạn có thể chuyển tiếp kiến thức này? Ngay cả những lập trình viên cao cấp cũng có thể bỏ lỡ một hoặc hai kỹ thuật. Vì vậy, tại sao không để một phần mềm tự động hóa làm điều đó cho bạn?

Bạn có biết rằng trong CSS, universal selector (*) có thể làm chậm thời gian tải trang không? Hoặc bạn không rõ unqualified attribute selectors có cùng đặc điểm hiệu suất như universal selector? Tránh chúng là thực hành tốt.

Nhiều linters bao gồm cả kiểm tra hiệu suất. Chúng có thể thêm các loại cải tiến hiệu suất khác nhau cho các nhà phát triển có kinh nghiệm và người mới. CSSLint chỉ là một ví dụ.

Và nhiều khía cạnh khác

Có rất nhiều và rất nhiều linters cho các ngôn ngữ lập trình khác nhau, các tệp cấu hình và thậm chí cho tích hợp phần mềm.

Các linter có thể kiểm tra các tính năng HTML Accessibility, các lỗi tiềm ẩn trong Internalization, lỗi ngữ pháp và nhiều lỗi khác đã có sẵn. Có rất nhiều linter đang chờ bạn tải xuống và bắt đầu sử dụng.

Một số ví dụ về linter

Có rất nhiều linter. Tùy thuộc vào ngôn ngữ lập trình, thậm chí có nhiều hơn một linters cho mỗi công việc. Ví dụ, đối với ngôn ngữ lập trình Go, có ktlint và detekt. Cả hai đều thực hiện một công việc tương tự. Điều tương tự cũng xảy ra với eslint, một linter được thiết kế cho JavaScript. Nó hoạt động rất giống với tslint hoặc jshint.

Linter tập trung vào bảo mật

Linters tập trung vào hướng dẫn kiểu và quy ước code

Linters cho Static Analysis

Tham khảo: https://sourcelevel.io/blog/what-is-a-linter-and-why-your-team-should-use-it

Đánh giá bài viết

Average rating 5 / 5. Vote count: 6

No votes so far! Be the first to rate this post.

Comments are closed.