Tìm hiểu về Flutter Linter và Flutter Static Analysis

Posted by: mentvn Comments: 0

1. Linter là gì?

Linter là một công cụ giúp phân tích mã nguồn giúp tìm ra các lỗi lập trình, lỗi đánh máy và các lỗi tiềm năng. Ngoài ra nó còn giúp lập trình viên tuân thủ coding style và coding convention. Coding convention thường không giúp code chạy nhanh hơn, nhưng nó giúp duy trì code dễ đọc hơn. Vì vậy việc đảm bảo coding convention bằng các công cụ tự động (như linter) là tốt nhất.

2. Static analysis:

Phân tích tĩnh (Static analysis) có nghĩa là phần mềm tự động chạy qua mã nguồn 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.

Phân tích tĩnh cho phép chúng ta tìm ra các vấn đề trước khi thực thi một dòng code. Đây là một công cụ mạnh mẽ được sử dụng để ngăn chặn lỗi và đảm bảo rằng code tuân thủ coding style.

Với analyzer, chúng ta có thể tìm ra những lỗi đánh máy đơn giản như thiếu dấu chấm phẩy hoặc các vấn đề phức tạp hơn như thiếu việc đóng sink method của 1 stream.

Trong hệ sinh thái Dart, Dart Analysis Server và các tool khác sử dụng analyzer package để thực hiện phân tích tĩnh.

3. Customizing static analysis:

Đặt file analysis_options.yaml ở vị trí root của package (cùng cấp với file pubspec) và chúng ta có thể tùy chỉnh các quy tắc của phân tích tĩnh.

Nếu Analyzer không thể tìm thấy file analysis_options.yaml ở vị trí root của package, nó sẽ duyệt cây thư mục và tìm kiếm 1 file cấu hình khác. Nếu vẫn không tìm thấy file nào, nó sẽ sử dụng các quy tắc kiểm tra tiêu chuẩn.

Ví dụ:

Trong trường hợp này, Analyzer sẽ sử dụng file #1 để phân tích cho my_other_package và my_other_other_package và file #2 để phân tích cho my_package.

* File analysis_options.yaml:

Ví dụ:

  • – Sử dụng include:để sử dụng các tùy chỉnh từ url được chỉ định (trong trường hợp này nó sử dụng các quy tắc của lints package). Lưu ý: file yaml chỉ cho phép sử dụng 1 key include nên chúng ta chỉ có thể sử dụng duy nhất một lần.
  • – Sử dụng analyzer: để tùy chỉnh phân tích tĩnh.
  • – Sử dụng linter: để cấu hình các quy tắc của linter.
  • Lưu ý: file yaml rất nhạy cảm với các khoảng trắng, nên tuyệt đối không sử dụng tab trong file này. Hãy sử dụng 2 khoảng trắng để biểu thị cấp độ của các cấu hình.

4. Flutter_lints package:

  • Flutter_lints package xác định tập hợp các lint được đề xuất mới nhất và được khuyến khích sử dụng cho các ứng dụng Flutter, các package và các plugin.
  • Các project được tạo từ phiên bản Flutter 2.3.0-12.0.pre hoặc mới hơn sẽ được kích hoạt sẵn Flutter_lints package mới nhất.

a. Bối cảnh:

  • – Thông thường Flutter thường được cài đặt sẵn bộ lint được xác định trong file analysis_options_user.yaml và được sử dụng bởi Dart Analyzer nếu Flutter không tìm thấy file tùy chỉnh analysis_options.yaml. Bởi vì file analysis_options_user.yaml được gắn liền với mỗi phiên bản Flutter cụ thể nên sẽ rất khó để phát triển ứng dụng nếu không “phá vỡ” ứng dụng, package, plugin hiện có. Do đó các lint ở analysis_options_user.yaml đã trở nên lỗi thời.
  • – Để khắc phục, Flutter_lints package đã được tạo ra. Package này cho phép chúng ta phát triển dự án mà không cần phải phá vỡ project hiện có. Vì package này được được xây dựng dựa trên lints package, nó cũng phù hợp với các lints được đề xuất cho các dự án Flutter và phần còn lại của hệ sinh thái Dart.

b. Cách sử dụng:

Thêm dev_dependency Flutter_lints package vào file pubspec.yaml bằng lệnh flutter pub add –dev flutter_lints (cd vào root của project).

Tạo file analysis_options.yaml ở vị trí root của package (cùng cấp với file pubspec).

Thêm dòng include: package:flutter_lints/flutter.yaml vào file analysis_options.yaml và thế là chúng ta đã hoàn thành việc import Flutter_lints package vào dự án của mình.

Tổng kết:

Và thế là chúng ta đã biết hiểu thêm được về static analysis và Linter và tầm quan trọng của chúng. Tổng quát lại, việc sử dụng Linter là rất quan trọng, đặc biệt là trong làm việc nhóm. Nó giúp các developer hoàn thiện được kỹ năng code theo quy chuẩn của framework, khắc phục lỗi, giảm thiểu thời gian đọc code và clean code.

Leave a Reply

Your email address will not be published. Required fields are marked *