Kiểm tra kiểu Vscode Python

Một tiện ích mở rộng VS Code mã nguồn mở mới có tên Pyright đã được tạo dưới dạng "dự án phụ" của Microsoft để cải thiện các dịch vụ hiện tại để kiểm tra kiểu tĩnh cho ngôn ngữ lập trình Python

Được coi là một công việc đang tiến triển mà không có sự hỗ trợ chính thức từ Microsoft và nhiều chức năng chưa được triển khai, dự án dựa trên GitHub được mô tả là một nỗ lực để cải thiện các trình kiểm tra loại Python hiện có, với mypy được đề cập cụ thể

Tất nhiên, trình soạn thảo Visual Studio Code ngày càng phổ biến đã có một tiện ích mở rộng Python đa năng, ngày càng phổ biến do Microsoft hỗ trợ (vừa được cập nhật), tự hào có hơn 35 triệu lượt tải xuống và 7. 3 triệu lượt cài đặt và kiểm tra loại và hơn thế nữa

Nhưng Pyright không nhằm mục đích cạnh tranh với công cụ đó, mà chỉ cải thiện khả năng kiểm tra kiểu của nó, được cung cấp bởi Microsoft Python Language Server sử dụng giao thức máy chủ ngôn ngữ để cung cấp IntelliSense và chức năng nâng cao khác cho các ngôn ngữ lập trình khác nhau trong

"Pyright cung cấp chức năng chồng chéo nhưng bao gồm một số tính năng độc đáo như khả năng cấu hình cao hơn, thực thi dòng lệnh và hiệu suất tốt hơn", dự án GitHub cho biết

Dự án -- được viết bằng TypeScript -- đi kèm với công cụ dòng lệnh (CLI) và trình cắm Giao thức Máy chủ Ngôn ngữ Mã VS, cung cấp các tính năng dịch vụ ngôn ngữ bao gồm

  • Mẹo công cụ di chuột hiển thị thông tin loại
  • Liên kết đến định nghĩa biểu tượng
  • Xếp hàng ưu tiên thông minh cho phản hồi tương tác trong quá trình chỉnh sửa

Kiểm tra kiểu Vscode Python


Ngoài các tính năng dịch vụ ngôn ngữ, các tính năng kiểm tra loại hiện được hỗ trợ bao gồm

  • Gợi ý loại PEP 484 bao gồm thuốc generic (PEP là viết tắt của Đề xuất cải tiến Python)
  • Cú pháp PEP 526 cho chú thích biến
  • Phân nhóm cấu trúc PEP 544
  • Nhập suy luận cho các giá trị trả về của hàm, biến thể hiện, biến lớp và toàn cầu
  • Các ràng buộc kiểu thông minh giúp hiểu các cấu trúc luồng mã có điều kiện như câu lệnh if/else

Ngoài ra, có một danh sách đầy đủ các chức năng sẽ được triển khai, với dự án hoan nghênh sự đóng góp của cộng đồng để trợ giúp

  • Thêm việc thực thi hiệp phương sai và chống chỉ định
  • Nhập suy luận cho trình tạo và chức năng không đồng bộ
  • Thêm hỗ trợ cho suy luận của vars loại lớp con dựa trên các loại tham số phương thức được khai báo trong lớp con
  • Xác thực tính nhất quán của vars loại lớp con trên tất cả các phương thức đã khai báo
  • Báo cáo lỗi đối với các loại tham chiếu chuyển tiếp không được trích dẫn
  • Hỗ trợ cho các chú thích kiểu cũ trong các bình luận
  • Giải quyết nhiều nhận xét TODO trong mã
  • Xử lý tốt hơn các công cụ trang trí chức năng (không cần kiểm tra loại)
  • Thêm nhiều bài kiểm tra
  • Thêm hỗ trợ để hoàn thành loại trong tiện ích mở rộng Mã VS
  • Các phương thức @abstract vỏ đặc biệt để chúng không cần trả về loại đã chỉ định
  • Xác thực rằng tất cả @abstractmethod đều bị ghi đè
  • Xác thực các tham số cho các chức năng ma thuật
  • Xác thực rằng các phương thức được ghi đè trong lớp con có cùng chữ ký với các phương thức của lớp cơ sở
  • Xác minh rằng các lớp ngoại lệ kế thừa từ cơ sở Ngoại lệ
  • Xác thực tính nhất quán đang chờ/không đồng bộ
  • Gắn cờ các bài tập cho các giá trị chỉ đọc (Không, Đúng, Sai, gỡ lỗi) là lỗi
  • Hỗ trợ cải tiến cho các thuộc tính - mô hình với giao thức Mô tả, phát hiện trình thiết lập bị thiếu
  • Thêm mã số vào chẩn đoán và cơ chế cấu hình để tắt lỗi theo mã
  • Di chuyển các chuỗi lỗi ra khỏi các tệp mã chính để chúng có thể được bản địa hóa

"Pyright là một công việc đang được tiến hành", trang GitHub cho biết, hiển thị bảy người đóng góp, dẫn đầu là Eric Traut của Microsoft

từ bash

mkdir test
cd test
python3 -m venv .env
source .env/bin/activate
python -m pip install flake8
python -m pip install flake8-mypy
code ./

cài đặt plugin

sau đó cài đặt cái này trong VSCode https. //thương trường. Visual Studio. com/items?itemName=donjayamanne. python
và cấu hình

cài đặt

/. vscode/cài đặt. json

{
    "python.envFile": "${workspaceRoot}/.env",
    "python.pythonPath": ".env/bin/python",
    "python.linting.flake8Enabled": true,
    "python.linting.pylintEnabled": false,
    "python.linting.mypyEnabled": true,
}

/. vscode/khởi chạy. json

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python",
            "type": "python",
            "request": "launch",
            "stopOnEntry": false,
            "pythonPath": "${config:python.pythonPath}",
            "program": "${file}",
            "cwd": "${workspaceRoot}",
            "env": {},
            "envFile": "${workspaceRoot}/.env",
            "debugOptions": [
                "WaitOnAbnormalExit",
                "WaitOnNormalExit",
                "RedirectOutput"
            ]
        }
    ]
}

OMG, đây chỉ là Python 3

https. //pypi. con trăn. org/pypi/flake8-mypy/17. 3. 3

Vâng, mypy cũng vậy. Hãy thư giãn, bạn có thể chạy Flake8 với tất cả các plugin phổ biến
như một công cụ hoàn toàn tốt trong Python 3. 5+ ngay cả khi bạn muốn phân tích
mã Python 2. Bằng cách này, bạn sẽ có thể phân tích cú pháp mới
được hỗ trợ trên Python 3 cũng như tất cả cú pháp Python 2 một cách hiệu quả
cùng một lúc.

Bằng cách tạo mã độc quyền cho Python 3. 5+, tôi có thể tập trung vào
chất lượng của các bản kiểm tra và sử dụng lại tất cả các tính năng hay của bản phát hành
mới (xem pathlib) .
compatibility, etc.

Tích hợp IDE & Linter

https. //github. com/python/mypy#ide--linter-integrations

Tích hợp IDE & Linter

Mypy có thể được tích hợp vào các IDE phổ biến

  • vim. vim-mypy
  • Emac. sử dụng Flycheck và Flycheck-mypy
  • Văn bản tuyệt vời. SublimeLinter-contrib-mypy
  • nguyên tử. linter-mypy
  • PyCharm. PyCharm tích hợp triển khai PEP 484 của riêng mình

Mypy cũng có thể được tích hợp vào Flake8 bằng flake8-mypy

o,-

Kiểm tra loại Python trong Mã VS là gì?

Gói này kiểm tra các loại trong mã Python của bạn và xác định một bộ quy tắc theo nhu cầu của bạn .

Python có hỗ trợ kiểm tra kiểu không?

Python sẽ luôn là ngôn ngữ được gõ động. Tuy nhiên, PEP 484 đã giới thiệu các gợi ý về loại, cho phép thực hiện kiểm tra loại tĩnh của mã Python . Không giống như cách các loại hoạt động trong hầu hết các ngôn ngữ được nhập tĩnh khác, bản thân các gợi ý nhập không khiến Python thực thi các loại.