Flake8 не выдает ошибок / предупреждений об отсутствующей строке документации или коде, не соответствующем соглашению об именах PEP8 - PullRequest
1 голос
/ 26 февраля 2020

Я пытаюсь запустить Flake8 для моего python кода, однако я замечаю, что он не выдает никаких ошибок PyDocStyle в простом классе с отсутствующими строками документов или предупреждением о моем имени класса cars, которое должно быть Cars согласно Руководству по стилю PEP8

Файл примера кода (cars.py)

class cars:
    def __init__(self, some_value):
        self.some_value = some_value

при запуске flake8 cars.py я получаю следующий вывод:

cars.py:3:37: W292 no newline at end of file

Я пытаюсь настроить Flake8 для запуска некоторых общих проверок стилей, но не могу найти никакой помощи в документации Flake8 о том, как включить PyDocStyle коды ошибок.

Для сравнения, я запустил тот же файл для Pylint, и вот вывод

************* Module code.cars                                                                                                
cars.py:3:0: C0304: Final newline missing (missing-final-newline)                                                             
cars.py:1:0: C0114: Missing module docstring (missing-module-docstring)                                                       
cars.py:1:0: C0103: Class name "cars" doesnt conform to PascalCase naming style (invalid-name)                               
cars.py:1:0: C0115: Missing class docstring (missing-class-docstring)                                                         
cars.py:1:0: R0903: Too few public methods (0/2) (too-few-public-methods)                                                                                                                                                                                   
------------------------------------                                                                                          
Your code has been rated at -6.67/10  

Я использую python 3.7.6, flake8 3.7.9 (mccabe: 0.6.1, pycodestyle: 2.5.0, pyflakes: 2.1.1) CPython 3.7.6 на Linux

1 Ответ

0 голосов
/ 26 февраля 2020

Итак, я обнаружил, что по умолчанию Flake8 упаковывает pycodestyle: 2.5.0 по умолчанию, что из документации гласит:

Помимо прочего, эти функции в настоящее время не входят в сферу применения библиотеки pycodestyle. :

  • соглашения об именах: эта функция поддерживается через плагины. Установите flake8 и расширение pep8-naming для использования этой функции.
  • соглашения о документах: они не входят в сферу действия этой библиотеки; увидеть проект pydocstyle.
  • автомат c исправление: см. Раздел Исправления PEP8 на странице связанных инструментов.

Итак, я установил pep8-naming, а также flake8-docstrings и после работает flake8 --version Я получил ниже, который показывает, что он теперь использует установленные плагины:

3.7.9 (flake8-docstrings: 1.5.0, pydocstyle: 5.0.2, mccabe: 0.6.1, naming: 0.8.2, pycodestyle: 2.5.0, pyflakes: 2.1.1) CPython 3.7.6 on Darwin

Я повторно чек flake8 cars.py, и я получил следующий вывод:

cars.py:1:1: D100 Missing docstring in public module
cars.py:2:1: D101 Missing docstring in public class
cars.py:2:8: N801 class name 'cars' should use CapWords convention
cars.py:3:1: D107 Missing docstring in __init__

Первое впечатление - после проверки репозиториев git для flake8 и дополнительных плагинов, которые мне пришлось установить, я немного скептически отношусь к Flake8. Причина в том, что на момент написания статьи Pylint, похоже, был упакован с тем поведением, которое мне нужно, а также с тем, чтобы дольше оставаться в выигрыше от стабильности и большего количества участников. В отличие от flake8, который является более новым, и для достижения желаемого поведения необходимо установить сторонние плагины / библиотеки, которые могут быть отменены через год или два или прерваны при обновлении flake8. Любой сценарий проблематичен c, а последний проблематичен, если вы не будете осторожны с упоминанием конкретной c версии / сборок в конвейерах CI.

...