Phân tích cú pháp AST và Lint tùy chỉnh trong Python
Bảng mục lục:
- Giới thiệu
- Tạo phần tử duyệt code Python
- Viết các kiểm tra tuỳ chỉnh cho code
3.1. Giới thiệu về flake8
3.2. Kiểm tra lỗi với flake8
- Tìm kiếm và phân tích cú pháp trừu tượng (AST)
4.1. Sử dụng module ast
4.2. Truy cập cấu trúc cây cú pháp trừu tượng
- Tạo plugin flake8 để tìm kiếm import không hợp lệ trong hàm
5.1. Tạo class plugin
5.2. Thiết lập cấu hình flake8 để sử dụng plugin tự tạo
5.3. Thực thi plugin và xuất kết quả
- Tổ chức mã và thêm nhiều kiểm tra tuỳ chỉnh hơn
- Thêm tùy chọn và tiện ích cho plugin
7.1. Thêm tùy chọn
7.2. Đọc giá trị từ tùy chỉnh
- Bài tập
8.1. Viết plugin để cảnh báo việc sử dụng hàm eval
8.2. Cấm tạo mới metaclass
8.3. Viết plugin để cấm việc gán nhiều giá trị cho cùng một biến
Tạo phần tử duyệt code Python từ Python chính
Trước khi viết các kiểm tra tùy chỉnh cho code, chúng ta cần tạo một phần tử duyệt code Python để có thể duyệt qua code Python từ chính Python. Điều này cho phép chúng ta phân tích và kiểm tra code tự động.
Viết các kiểm tra tuỳ chỉnh cho code
Flake8 là một công cụ linter cho Python, nó kiểm tra code và báo cáo các lỗi hoặc vấn đề liên quan đến chất lượng code. Tuy nhiên, chúng ta cũng có thể viết các kiểm tra tuỳ chỉnh để bổ sung vào flake8 và kiểm tra các lỗi hoặc vấn đề chúng ta quan tâm đến.
Chương trình flake8 đã tích hợp sẵn nhiều quy tắc kiểm tra tốt. Đối với những quy tắc mà chúng ta không muốn sử dụng, có thể tắt chúng đi. Nhưng nếu chúng ta muốn thêm một quy tắc mới, có phải làm sao?
Giả sử chúng ta muốn cấm việc import thuộc module trong hàm, bởi vì thường thì việc này chỉ là một cách làm tạm thời để tránh những vấn đề về phụ thuộc chéo. Nhưng thực tế, việc này có thể ẩn chứa những vấn đề kiến trúc sâu hơn và chúng ta muốn ngăn chặn điều đó.
Tuy nhiên, chúng ta sẽ gặp một khó khăn lớn: Làm thế nào để tìm tất cả import thuộc module trong một module? Hãy cùng nhau tìm hiểu cách làm điều này với module ast.