Return to site

5 Vấn Đề TypeScript phổ biến được phát hiện bởi SonarLlint

Phil Nash

DEVELOPER ADVOCATE JS/TS

April 10, 2023

Trong 5 tuần vừa qua, chúng tôi đã tiến hành tổng hợp về những vấn đề phổ biến nhất mà SonarLint thường phát hiện trong các dự án TypeScript. Chúng tôi đã khai thác dữ liệu SonarLint để xem loại quy tắc nào trong hơn 300 quy tắc của nó được kích hoạt nhiều nhất dùng để đánh dấu một lỗi, code xấu, lỗ hổng bảo mật hoặc điểm nóng bảo mật có thể bị phát hiện trước khi được xác nhận. Đây là một tổng hợp của tất cả các vấn đề và nơi bạn có thể tìm hiểu thêm về chúng.

Tất nhiên, đây là những vấn đề phổ biến và hậu quả của chúng có thể ảnh hưởng khá nhiều đến ứng dụng của bạn. Từ các kiểu gây nhầm lẫn đến rò rỉ bộ nhớ và lỗi khó phát hiện, những vấn đề này có thể ảnh hưởng đến cả người dùng cuối và sự sạch sẽ của mã của bạn. Với SonarLint trong trình soạn thảo của, những vấn đề này có thể được phát hiện khi bạn viết chúng, tiết kiệm thời gian và giữ mã của bạn sạch sẽ và không có lỗi.

5. Khai báo thuộc tính tùy chọn

Bắt đầu với type based issue, SonarLint thường xuyên thấy sự kết hợp của cú pháp thuộc tính tùy chọn với union types có “undefined”. Mặc dù không nhất thiết phải là lỗi, vấn đề này biến type từ một thứ truyền tải ý định của nhà phát triển thành một cái gì đó dễ gây nhầm lẫn. Đặt khai báo thuộc tính tùy chọn đúng thì giao diện của bạn sẽ mô tả các đối tượng của bạn theo cách mà bạn muốn.

4. Tạo và xóa đối tượng ngay lập tức

Việc tạo một đối tượng mà không sử dụng nó là một dấu hiệu của code xấu. Điều này có thể là một lỗi và bạn có ý định gán đối tượng đó vào một biến để sử dụng sau này, hoặc nó cho thấy bạn đang tạo đối tượng để sử dụng một tác động phụ được chứa trong constructor của đối tượng. Trường hợp đầu tiên dễ dàng được khắc phục, trong khi trường hợp thứ hai yêu cầu phải tái cấu trúc để loại bỏ tác động phụ khỏi constructor và chuyển chúng thành một hàm rõ ràng hơn để hiển thị ý định của bạn.

3. Biến cục bộ và hàm không sử dụng

Những phần mã không được sử dụng có thể làm rối mã của bạn, nhưng chúng cũng có thể gây ra những lỗi thú vị và thậm chí là memory leak.

2. Các câu lệnh “không rỗng” phải thay đổi luồng điều khiển hoặc có ít nhất một tác động phụ

Nếu một câu lệnh trong mã của bạn không gây ra sự thay đổi nào đó, có thể nó đang không làm gì cả, và mã không làm gì cả thì không có ích cho ứng dụng của chúng ta. Nếu mã được thiết kế để làm gì đó, thì đó là một lỗi, và bạn nên phát hiện lỗi này sớm.

1. Gán trong các biểu thức nhỏ hơn

Vấn đề hàng đầu mà SonarLint phát hiện trong tất cả các đoạn mã của chúng tôi là việc gán trong các biểu thức nhỏ hơn. Đây có thể là vấn đề về tính đọc hiểu, hoặc quan trọng hơn là một lỗi nơi bạn gán trong một câu lệnh điều kiện thay vì so sánh. Tìm ra dấu = bị thiếu, hoặc hai dấu = bị thiếu trong một câu lệnh điều kiện có thể rất phiền phức nếu bạn đang tìm kiếm lỗi, nhưng khi công cụ của bạn chỉ ra điều này, cuộc sống sẽ dễ dàng hơn rất nhiều!

Bạn đã từng gặp phải những vấn đề này?

Đó là 5 vấn đề hàng đầu của chúng tôi. Tôi nghĩ rằng mình đã gặp phải vấn đề này trong quá khứ. Chúng xuất hiện liên tục và việc phải tránh liên tục, hoặc ít nhất là sửa chúng nhanh chóng, sẽ làm cho mã của bạn trở nên sạch hơn và cuộc sống dễ thở hơn rất nhiều. Còn rất nhiều vấn đề TypeScript tiềm năng khác mà SonarLint có thể giúp bạn phát hiện trong ứng dụng của mình.

Giữ mã của bạn sạch và không có lỗi khi bạn viết hoặc tái cấu trúc đảm bảo ứng dụng của bạn sẽ được bảo trì tốt hơn trong quá trình phát triển và hoạt động tốt hơn trong sản xuất. Bây giờ bạn đã thấy những vấn đề phổ biến này có hại ra sao, tôi hy vọng bạn đã sẵn sàng phòng tránh và tận dụng sức mạnh của Clean Code để đảm bảo mã của bạn vẫn là một tài sản chứ không phải một gánh nặng..