Các mã python tốt nhất là gì?

Như bạn có thể biết từ tiêu đề dài dòng, có rất nhiều công cụ linting cho Python. Một số trong số họ có tên gần giống nhau. Vào tháng 11 năm 2022, tôi đã nâng cấp trình soạn thảo văn bản của mình lên Sublime Text 4 và sau đó nhân cơ hội này dành vài giờ để xem lại tất cả những điều vụn vặt về Python mà tôi có thể tìm thấy. Sau khi đích thân xem xét tất cả chúng, tôi đã chọn những thứ sau đây là thứ phải có. Pyflakes, Mypy và Black. Nếu bạn muốn các công cụ bổ sung, tôi cũng thích. Radon, Pyroma và docformatter. Tôi đang sử dụng Python3. 12. 0. Tôi không quan tâm đến việc kẻ nói dối của mình chỉ ra khi tôi đi lạc khỏi một số mệnh lệnh nhất định trong tài liệu PEP 8 và các lựa chọn của kẻ nói dối của tôi phản ánh điều đó. Bạn có thể có những nhu cầu và giá trị khác với tôi, vì vậy trong bài đăng trên blog này, tôi đưa ra lý do và quan điểm của mình cho từng kẻ nói dối

Bạn có thể bỏ qua phần lớn cuộc thảo luận này bằng cách sử dụng một IDE chẳng hạn như Phiên bản cộng đồng PyCharm và Microsoft Visual Studio Code, đã được thiết lập sẵn các bộ lọc tích hợp cho bạn. Nhưng bài đăng trên blog này là tốt nếu bạn muốn tùy chỉnh môi trường phát triển của mình

Linter là một thuật ngữ quá rộng để chỉ một công cụ kiểm tra mã nguồn của bạn mà không chạy nó [còn gọi là phân tích mã tĩnh] để chỉ ra các vấn đề có thể xảy ra. Hệ thống cảnh báo sớm này tăng tốc quá trình phát triển của bạn, vì bạn có thể khắc phục chúng sớm trong quá trình phát triển thay vì đợi QA hoặc người dùng chỉ ra chúng. Thuật ngữ kẻ nói dối xuất phát từ cách bẫy xơ vải của máy sấy có thể loại bỏ những mẩu lông tơ nhỏ khỏi quần áo. Tôi đã chia các công cụ này thành các danh mục sau

  • Trình kiểm tra loại xác minh rằng chương trình của bạn tuân theo các chú thích loại của riêng chúng [còn gọi là gợi ý loại]. [Mypy, Pyright, Pyre, Pytype]
  • Những kẻ nói dối lỗi chỉ ra các lỗi cú pháp hoặc mã khác sẽ dẫn đến các trường hợp ngoại lệ và sự cố chưa được xử lý. [Pylint, Pyflakes, Flake8]
  • Những kẻ nói xấu kiểu dáng chỉ ra các vấn đề không gây ra lỗi nhưng làm cho mã khó đọc hơn hoặc không phù hợp với các hướng dẫn về kiểu dáng, chẳng hạn như tài liệu PEP 8 của Python. [Trụ, Flake8]
  • Những người làm hỏng bao bì chỉ ra các vấn đề liên quan đến việc đóng gói mã của bạn để phân phối trên PyPI với các mô tả, phiên bản và trường dữ liệu meta được định dạng đúng. [Kim hỏa]
  • Những kẻ lừa đảo bảo mật chỉ ra các lỗ hổng bảo mật có thể có trong mã của bạn. [Kẻ cướp]
  • Trình định dạng mã thay đổi kiểu mã của bạn [chủ yếu xoay quanh khoảng trắng thích hợp] mà không ảnh hưởng đến hoạt động của chương trình. [Đen]
  • Các đoạn mã chết loại bỏ mã bị nhận xét khỏi chương trình của bạn, vì thực hành này nên được bỏ qua để kiểm soát phiên bản phù hợp. [Kền kền, diệt trừ]
  • Trình định dạng/trình định dạng chuỗi tài liệu chỉ ra [và có thể định dạng chính xác] các vấn đề về kiểu trong chuỗi tài liệu không phù hợp với tài liệu PEP 257 của Python. [pydocstringformatter, docformatter]
  • Máy phân tích độ phức tạp chỉ ra mã phức tạp đến mức chúng có thể ảnh hưởng đến khả năng đọc. [mcabe, radon]

Nhiều gói Python này bao gồm các gói Python khác, như được giải thích trong bảng này

Gói này. Bao gồm các Gói nàyflake8Pyflakes, pycodestyle, mccabeautopep8pycodestylePylamapycodestyle, pydocstyle, Pyflakes, mccabe, Pylint, Radon, erase, Mypy, VultureProspectorPylint, flake8 [bao gồm cả Pyflakes, pycodestyle, mccabe], dodgy, isort, pydocstyle, đặt tên pep8

Gói bị loại

Hết chạy ngay là PyChecker vì nó chưa cập nhật từ 2003 nên mình bỏ qua đánh giá. Điều tương tự cũng xảy ra với Pylava, một nhánh của Pylama chưa được cập nhật kể từ tháng 9 năm 2020. Tôi chỉ muốn sử dụng Pylama ban đầu để thay thế

Mypy [Trình kiểm tra loại]

Mypy không phải là kẻ nói dối mà là một công cụ kiểm tra kiểu tĩnh. Bạn nên cài đặt và sử dụng nó bất kể bạn sử dụng Python linter nào. Mypy kiểm tra các gợi ý kiểu [còn gọi là chú thích kiểu] mà bạn đặt trên các hàm và biến của mình và đảm bảo phần còn lại của chương trình tuân theo chúng một cách chính xác. Đó là một cách tuyệt vời để tìm lỗi sớm. Tôi đã viết một bài đăng trên blog về gợi ý kiểu Python nếu bạn cần tìm hiểu thêm. Mypy là trình kiểm tra kiểu tĩnh đầu tiên cho Python và phù hợp với nhu cầu của tôi; . Pyright từ Microsoft, Pyre từ Facebook [được cài đặt với pip install pyre-check chứ không phải pip install pyre] và Pytype từ Google

Pyflakes [Lỗi Linter]

Từ trang dự án Pyflakes

Pyflakes thực hiện một lời hứa đơn giản. nó sẽ không bao giờ phàn nàn về phong cách, và nó sẽ cố gắng hết sức để không bao giờ phát ra các tín hiệu sai. Pyflakes cũng nhanh hơn Pylint. Điều này phần lớn là do Pyflakes chỉ kiểm tra cây cú pháp của từng tệp riêng lẻ. Do đó, Pyflakes bị hạn chế hơn về các loại thứ mà nó có thể kiểm tra. Nếu bạn thích Pyflakes nhưng cũng muốn kiểm tra phong cách, bạn muốn có flake8, kết hợp Pyflakes với kiểm tra phong cách so với PEP 8 và thêm khả năng cấu hình cho mỗi dự án

Pylint [Lỗi và Style Linter]

Từ trang dự án Pylint

Pylint là một trình phân tích mã tĩnh cho Python 2 hoặc 3. Pylint phân tích mã của bạn mà không thực sự chạy nó. Nó kiểm tra lỗi, thực thi tiêu chuẩn mã hóa, tìm kiếm mùi mã và có thể đưa ra đề xuất về cách mã có thể được cấu trúc lại

Pylint có nhiều tài liệu

Bạn có thể thấy các loại mã có mùi mà Pylint chỉ ra trong ví dụ đầu ra này

example.py:609:35: C0103: Argument name "n" doesn't conform to snake_case naming style [invalid-name]
example.py:642:15: R1701: Consider merging these isinstance calls to isinstance[PAUSE, [float, int]] [consider-merging-isinstance]
example.py:655:4: R1705: Unnecessary "elif" after "return", remove the leading "el" from "elif" [no-else-return]
example.py:670:12: R1705: Unnecessary "else" after "return", remove the "else" and de-indent the code inside it [no-else-return]
example.py:675:12: W0707: Consider explicitly re-raising using 'except Exception as exc' and 'raise ImageNotFoundException from exc' [raise-missing-from]
example.py:686:20: C0209: Formatting a regular string which could be a f-string [consider-using-f-string]
example.py:771:17: W0212: Access to a protected member _position of a client class [protected-access]
example.py:1038:0: R0913: Too many arguments [7/5] [too-many-arguments]
example.py:1168:47: E1306: Not enough arguments for format string [too-few-format-args]
example.py:1418:0: R0914: Too many local variables [17/15] [too-many-locals]
-----------------------------------
Your code has been rated at 3.42/10

Tôi thích Pyflakes hơn Pylint, mặc dù việc chạy

TryExcept 182 10
646:0: '_normalizeXYArgs' 13
826:0: '_normalizeButton' 10
1418:0: '_mouseMoveDrag' 11
1899:0: '_tokenizeCommandStr' 19
2025:0: '_runCommandList' 21
0 sẽ loại bỏ các đề xuất kiểu và cho tôi kết quả tương tự như Pyflakes. Pylint có xu hướng chậm hơn Pyflakes và flake8 cũng như đưa ra nhiều kết quả dương tính giả hơn. Tôi sẽ sử dụng Pylint nếu bạn muốn đặc biệt kỹ lưỡng với mã của mình

pycodestyle [Kiểu nói dối]

Từ trang dự án pycodestyle

pycodestyle là một công cụ để kiểm tra mã Python của bạn dựa trên một số quy ước về kiểu dáng trong PEP 8. Gói này từng được gọi là pep8 nhưng đã được đổi tên thành pycodestyle để giảm nhầm lẫn

pycodestyle được bao gồm với flake8, autopep8, Pylama và Prospector

Đen [Định dạng mã]

Màu đen không phải là kẻ nói dối mà là một trình định dạng mã thay đổi khoảng cách và các khía cạnh thẩm mỹ khác của mã nguồn của bạn mà không thay đổi hành vi của chương trình của bạn. Bạn nên cài đặt nó và sử dụng nó bất kể bạn sử dụng Python linter nào. Tôi thích chạy nó với các đối số dòng lệnh

TryExcept 182 10
646:0: '_normalizeXYArgs' 13
826:0: '_normalizeButton' 10
1418:0: '_mouseMoveDrag' 11
1899:0: '_tokenizeCommandStr' 19
2025:0: '_runCommandList' 21
1 để nó định dạng yourScript. py với độ dài dòng là 120 [mặc định là 88] và không thay đổi dấu ngoặc kép cho chuỗi của bạn [Tôi thích sử dụng chuỗi dấu ngoặc đơn nhưng Black định dạng chúng thành chuỗi dấu ngoặc kép. ] Tôi trình bày nó trong Chương 3 của cuốn sách miễn phí của tôi, Beyond the Basic Stuff with Python

autopep8 [Trình tạo kiểu và định dạng]

autopep8 sử dụng pycodestyle để phát hiện các vấn đề về kiểu và sau đó tự động sửa chúng. Cá nhân tôi thích cách mã định dạng Đen hơn pycodestyle

pyupgrade [Kiểu lót]

Tôi cảnh giác với pyupgrade. Một mặt, nó dường như cập nhật cú pháp Python thành cú pháp hiện đại hơn mà các phiên bản Python sau này sử dụng. Mặt khác, tài liệu không rõ ràng và không có cách nào để xem nó sẽ tạo ra những thay đổi gì trước khi thực hiện chúng. Dự án dường như được duy trì với các bản phát hành thường xuyên, mặc dù tôi muốn đánh giá cẩn thận trước khi giới thiệu nó cho người khác

mccabe [Phân tích độ phức tạp]

mccabe không phải là một kẻ nói dối Python truyền thống, mà là đo lường độ phức tạp của chu trình. Độ phức tạp theo chu kỳ [còn được gọi là độ phức tạp McCabe sau khi người tạo ra nó vào năm 1976] đo số lượng đường dẫn độc lập tuyến tính thông qua một số mã nguồn. Các hàm và phương thức có số điểm lớn hơn 10 thường được coi là "quá phức tạp" và nên được đơn giản hóa. Trong trường hợp này, đơn giản hóa có nghĩa là sử dụng các chức năng ngắn hơn và loại bỏ mã trùng lặp. Lấy điểm phức tạp của chu trình với một hạt muối; . Đừng sử dụng điểm số như một quy tắc cứng nhắc cho những gì cần được đơn giản hóa;

mccabe được cài đặt với flake8, Pylama và Prospector

Sau khi cài đặt, hãy chạy chương trình với

TryExcept 182 10
646:0: '_normalizeXYArgs' 13
826:0: '_normalizeButton' 10
1418:0: '_mouseMoveDrag' 11
1899:0: '_tokenizeCommandStr' 19
2025:0: '_runCommandList' 21
2. Một số ví dụ đầu ra của các hàm và phương thức có số điểm tối thiểu là 10 sẽ như sau

TryExcept 182 10
646:0: '_normalizeXYArgs' 13
826:0: '_normalizeButton' 10
1418:0: '_mouseMoveDrag' 11
1899:0: '_tokenizeCommandStr' 19
2025:0: '_runCommandList' 21

Rất tiếc, tôi nên xem lại hàm

TryExcept 182 10
646:0: '_normalizeXYArgs' 13
826:0: '_normalizeButton' 10
1418:0: '_mouseMoveDrag' 11
1899:0: '_tokenizeCommandStr' 19
2025:0: '_runCommandList' 21
3 mà tôi đã viết và xem liệu tôi có thể đơn giản hóa nó không

Radon [Phân tích độ phức tạp]

Radon bao gồm gói mccabe để thực hiện phép đo độ phức tạp chu trình, nhưng cũng có các tùy chọn để đo LỘC ["dòng mã"], chỉ số Halstead [dựa trên số toán tử và toán hạng để tính "độ khó" của việc hiểu mã] và . Cách tính các số liệu này được đưa ra trong tài liệu

Ví dụ: tôi đã chạy các phép đo Radon này trên một số mã của mình và đầu ra trông như thế này

C:\Users\Al\Desktop\lintercmp>radon cc C:\github\pyautogui\pyautogui\__init__.py
\github\pyautogui\pyautogui\__init__.py
    F 2025:0 _runCommandList - D
    F 1418:0 _mouseMoveDrag - C
    F 1899:0 _tokenizeCommandStr - C
    F 646:0 _normalizeXYArgs - C
    F 826:0 _normalizeButton - B
    F 1733:0 displayMousePosition - B
--SNIP--
    F 2157:0 getInfo - A
    C 28:0 PyAutoGUIException - A
    C 38:0 FailSafeException - A
    C 48:0 ImageNotFoundException - A

C:\Users\Al\Desktop\lintercmp>radon raw C:\github\pyautogui\pyautogui\__init__.py
\github\pyautogui\pyautogui\__init__.py
    LOC: 2163
    LLOC: 821
    SLOC: 1048
    Comments: 154
    Single comments: 117
    Multi: 593
    Blank: 405
    - Comment Stats
        [C % L]: 7%
        [C % S]: 15%
        [C + M % L]: 35%

C:\Users\Al\Desktop\lintercmp>radon hal C:\github\pyautogui\pyautogui\__init__.py
\github\pyautogui\pyautogui\__init__.py:
    h1: 19
    h2: 329
    N1: 268
    N2: 524
    vocabulary: 348
    length: 792
    calculated_length: 2831.7901243143224
    volume: 6686.811248712193
    difficulty: 15.130699088145896
    effort: 101176.1288634933
    time: 5620.89604797185
    bugs: 2.2289370829040647

C:\Users\Al\Desktop\lintercmp>radon mi C:\github\pyautogui\pyautogui\__init__.py
\github\pyautogui\pyautogui\__init__.py - B

Bạn sẽ cần xem qua tài liệu để tìm ra ý nghĩa chính xác của nó, vì nó không dễ đọc lắm [đủ buồn cười]. Tôi không nói Radon là cần thiết như một trình kiểm tra kiểu hoặc trình phát hiện lỗi, nhưng nó có thể cung cấp thông tin hữu ích về kích thước chung của mã của bạn. Đảm bảo không nhầm lẫn số liệu với chất lượng thực tế

flake8 [Lỗi & Style Linter, Phân tích độ phức tạp]

Flake8 là một gói Pyflakes, pycodestyle và mccabe và hợp nhất đầu ra của các chương trình này lại với nhau. Nó giống như Pylint nhưng có cả gói mccabe nữa. Sử dụng cái này nếu bạn muốn chạy một số công cụ này cùng một lúc

Pylama ["Chậu rửa nhà bếp"]

Pylama là bồn rửa nhà bếp, chứa một số xơ vải và các dụng cụ khác. pycodestyle [kẻ nói dối kiểu], pydocstyle [kẻ nói dối chuỗi tài liệu], Pyflakes [kẻ nói dối lỗi], mccabe [phân tích độ phức tạp], Pylint [kẻ nói dối lỗi và kiểu], Radon [phân tích độ phức tạp], erase [kẻ nói dối mã chết], Mypy [trình kiểm tra loại]

Tôi không chắc mức độ thực tế của việc tất cả các công cụ này chạy trên mã nguồn của bạn là như thế nào và nó chắc chắn cần được tinh chỉnh để hạn chế các lỗi tích cực. Nhưng nếu bạn đã xem bài đăng trên blog này và muốn tải xuống tất cả các công cụ này trong một gói, Pylama sẽ làm điều này. Pylama và Prospector là các gói "bồn rửa nhà bếp" tương tự, nhưng kể từ tháng 11 năm 2022, dường như yêu cầu các phiên bản khác nhau của các gói đi kèm và không thể cài đặt cả hai cùng một lúc

Prospector ["Chậu rửa nhà bếp"]

Prospector cũng là một gói gồm nhiều công cụ, được nêu trong tài liệu của họ. Cài đặt Prospector sẽ cài đặt Pylint [người nói dối lỗi và kiểu], pycodestyle [người nói dối kiểu], Pyflakes [người nói dối lỗi], mccabe [phân tích độ phức tạp], [người nói dối bảo mật] và pydocstyle [người nói dối chuỗi tài liệu]. Ngoài ra còn có các gói khác bạn có thể tùy ý cài đặt. Giống như Pylama, Prospector rất hữu ích để cài đặt nếu bạn muốn chạy nhiều công cụ khác nhau bằng một lệnh. Pylama và Prospector là các gói "bồn rửa nhà bếp" tương tự, nhưng kể từ tháng 11 năm 2022, dường như yêu cầu các phiên bản khác nhau của các gói đi kèm và không thể cài đặt cả hai cùng một lúc

Tên cướp [Security Linter]

Kẻ cướp có thể phát hiện một số vấn đề bảo mật trong mã Python của bạn,. Trong thử nghiệm hạn chế của mình, tôi thấy rằng hầu hết là dương tính giả nhưng tôi có thể coi đây là một thử nghiệm tốt. Bạn sẽ muốn tạo của riêng bạn. tệp cấu hình tên cướp bỏ qua bài kiểm tra B601 cảnh báo bạn về việc sử dụng câu lệnh

TryExcept 182 10
646:0: '_normalizeXYArgs' 13
826:0: '_normalizeButton' 10
1418:0: '_mouseMoveDrag' 11
1899:0: '_tokenizeCommandStr' 19
2025:0: '_runCommandList' 21
0 [cho đến nay là "vấn đề bảo mật" phổ biến nhất mà Bandit đã chỉ ra. ] Tôi chưa tìm thấy bất kỳ công cụ bảo mật nào khác như vậy cho Python

Dodgy [Security Linter]

Dodgy "được thiết kế để phát hiện những thứ như lần kiểm tra khác biệt SCM tình cờ hoặc mật khẩu hoặc khóa bí mật được mã hóa cứng vào tệp. " Có cái này thì tốt, nhưng dự án chưa được cập nhật kể từ tháng 12 năm 2019 và tôi không thể kích hoạt nó. Tôi đã lưu số thẻ tín dụng hợp lệ trong các biến, có một biến có tên là "mật khẩu", nhưng dường như không có gì đưa ra bất kỳ cảnh báo nào từ Dodgy. README cũng tuyên bố "Đây là phiên bản rất sớm với chức năng tối thiểu ngay bây giờ, nhưng sẽ được cải thiện theo thời gian. "Tôi không thấy Dodgy là một công cụ cần thiết

Khi mã nguồn của tôi bị xóa mà không có vấn đề gì, Dodgy vẫn xuất ra như sau

{
  "warnings": []
}

Hầu hết các công cụ không xuất ra gì khi không có vấn đề gì để tránh làm ô nhiễm luồng đầu ra với văn bản không cần thiết

Pyroma [Linter Bao bì]

Nếu bạn đã thấy các dự án trên PyPI có nội dung "Tác giả của gói này chưa cung cấp mô tả dự án" thì bạn đã thấy một dự án sẽ được hưởng lợi từ Pyroma. Từ mô tả dự án Pyroma

Pyroma đồng điệu với hương thơm và là sản phẩm nhằm đánh giá mức độ tuân thủ của một dự án Python với các phương pháp hay nhất của hệ sinh thái đóng gói Python, chủ yếu là PyPI, pip, Phân phối, v.v., cũng như danh sách các sự cố có thể được cải thiện

Mô tả dự án liệt kê những gì Pyroma kiểm tra. Mặc dù tất cả chúng đều khá cơ bản, nhưng chúng rất dễ bị bỏ sót khi kết hợp một gói để tải lên PyPI. Tôi chưa tìm thấy bất kỳ "xơ vải bao bì" nào khác, vì vậy Pyroma là thứ bắt buộc phải có đối với tôi khi tôi có ý định phân phối mã của bạn

Kền Kền [Dead Code Linter]

Vulture phát hiện các biến, hàm và phương thức không sử dụng. Nó tạo ra một số lượng lớn thông báo sai đối với tôi, vì vậy tôi thấy tính hữu dụng của nó bị hạn chế

diệt trừ [Dead Code Linter/Remove]

xóa có thể tìm [và cũng có thể xóa] mã đã nhận xét. Tôi gặp sự cố khi chạy nó trên Windows.

TryExcept 182 10
646:0: '_normalizeXYArgs' 13
826:0: '_normalizeButton' 10
1418:0: '_mouseMoveDrag' 11
1899:0: '_tokenizeCommandStr' 19
2025:0: '_runCommandList' 21
1 không hoạt động, buộc bạn phải nhập tên đầy đủ của tập lệnh Python đã xóa [điều khó hiểu là không kết thúc bằng. py] và bạn không thể chạy xóa trên một thư mục tệp hoặc chuyển ký tự đại diện để chạy trên nhiều tệp. Tôi cũng không nhất thiết đồng ý rằng mã nhận xét không có chỗ nếu bạn sử dụng kiểm soát nguồn. Cá nhân, tôi muốn vượt qua tiêu diệt

autoflake [Kẻ nói dối mã chết]

autoflake cực kỳ hạn chế và có sự lựa chọn tên kém. Nó loại bỏ việc nhập thư viện tiêu chuẩn không sử dụng và các câu lệnh

TryExcept 182 10
646:0: '_normalizeXYArgs' 13
826:0: '_normalizeButton' 10
1418:0: '_mouseMoveDrag' 11
1899:0: '_tokenizeCommandStr' 19
2025:0: '_runCommandList' 21
2 không cần thiết. Đó là nó. Cái tên này xuất phát từ thực tế là nó sử dụng Pyflakes để làm điều này

Tôi muốn vượt qua điều này. Pyflakes, flake8 hoặc các linters khác đã có thể chỉ ra các lần nhập không được sử dụng, do đó, một gói chuyên dụng để thực hiện việc này có vẻ dư thừa đối với tôi

docformatter [Trình định dạng chuỗi tài liệu]

Từ mô tả dự án

docformatter tự động định dạng các chuỗi tài liệu để tuân theo một tập hợp con của các quy ước PEP 257. Dưới đây là các mục liên quan được trích dẫn từ PEP 257
  • Để thống nhất, hãy luôn sử dụng ba dấu ngoặc kép xung quanh các tài liệu
  • Dấu ngoặc kép được sử dụng mặc dù chuỗi nằm trên một dòng
  • Chuỗi tài liệu nhiều dòng bao gồm một dòng tóm tắt giống như chuỗi tài liệu một dòng, theo sau là một dòng trống, tiếp theo là mô tả phức tạp hơn
  • Trừ khi toàn bộ chuỗi tài liệu phù hợp trên một dòng, hãy đặt dấu ngoặc kép đóng trên một dòng

docformatter cũng xử lý một số quy ước PEP 8

  • Đừng viết các chuỗi ký tự dựa trên khoảng trắng ở cuối đáng kể. Khoảng trắng ở cuối như vậy không thể phân biệt được bằng mắt thường và một số trình soạn thảo [hoặc gần đây hơn, reindent. py] sẽ cắt chúng

pydocstringformatter [Trình định dạng chuỗi tài liệu]

Từ mô tả dự án

Một công cụ tự động định dạng chuỗi tài liệu Python để tuân theo các đề xuất từ ​​PEP 8 và PEP 257. Dự án này được lấy cảm hứng rất nhiều từ docformatter

Nó dường như ít phổ biến hơn nhiều so với docformatter, mặc dù cả hai hiện đang được duy trì. Tiếp tục từ mô tả

Do đó, sự khác biệt lớn nhất giữa hai loại này là pydocstringformatter khắc phục một số sự cố mở mà chúng tôi tìm thấy trong docformatter. Nói chung, đầu ra của cả hai trình định dạng [và bất kỳ trình định dạng chuỗi tài liệu nào khác] phải tương đối giống nhau

pydocstyle [Docstring Linter]

pydocstyle dường như là một kẻ nói dối chuỗi doc khác. Nó chưa được cập nhật kể từ tháng 5 năm 2021

isort [Kiểu kẻ nói dối cho câu lệnh nhập]

isort đi kèm với Prospector. Từ mô tả dự án

"isort là một tiện ích/thư viện Python để sắp xếp các mục nhập theo thứ tự bảng chữ cái và tự động được phân tách thành các phần và theo loại. "

Điều này thật thú vị, nhưng tôi cũng có thể thấy nó thỉnh thoảng gây ra sự cố khi thứ tự của các câu lệnh nhập không quan trọng vì một số lý do tế nhị. Tôi sẽ sử dụng nó như một kẻ nói dối, nhưng không phải là thứ tự động định dạng thứ tự của câu lệnh

TryExcept 182 10
646:0: '_normalizeXYArgs' 13
826:0: '_normalizeButton' 10
1418:0: '_mouseMoveDrag' 11
1899:0: '_tokenizeCommandStr' 19
2025:0: '_runCommandList' 21
3

một kẻ nói dối tốt là gì?

Các công cụ linting giao diện người dùng hàng đầu để phát triển web .
CSSLint
SublimeLinter CSSLint
Trình xác thực CSS của W3C
JSLint
ESLint
JSHint
StyleLint

Linter Python là gì?

Linter là chương trình tư vấn về chất lượng mã bằng cách hiển thị cảnh báo và lỗi . Họ có thể phát hiện các lỗi mã Python của bạn, nhận thấy các mẫu mã không hợp lệ và tìm các phần tử không tuân theo quy ước của bạn. Linter Python có một số lợi thế, chẳng hạn như. Ngăn chặn lỗi trong một dự án.

Python có kẻ nói dối không?

Linting làm nổi bật các vấn đề về cú pháp và văn phong trong mã nguồn Python của bạn , điều này thường giúp bạn xác định và sửa các lỗi lập trình tinh vi hoặc các phương pháp viết mã độc đáo có thể dẫn đến lỗi.

Flake8 có phải là một kẻ nói dối tốt không?

Nó tiết kiệm thời gian của chúng tôi với tư cách là nhà phát triển. Nếu bạn đang làm việc theo nhóm, nó sẽ tiết kiệm thời gian cho những người đang xem xét mã của bạn [không cần phải nghi ngờ về lỗi chính tả và các vấn đề về định dạng] Nó rất dễ sử dụng. Các công cụ giống như xơ vải thường rất dễ cài đặt.

Chủ Đề