Pylama - audyt kodu

Pylama jest narzędzie do audytu kodu dla pythona. Moduł ten integruje i wykorzystuje kilka zewnętrznych modułów:

  • pycodestyle (sprawdzanie poprawności kodu pod kątem PEP8)
  • pydocstyle (sprawdzenie poprawności docstring którego opis znajduje się w PEP257)
  • pyflakes (program, który sprawdza pliki źródłowe Pythona pod kątem błędów)
  • mccabe (mikro-narzędzie do sprawdzania złożoności cyklomatycznej kodu)
  • pylint (narzędzie do weryfikacji kodu)
  • radon (narzędzie do obliczania różnych metryk kodu)

Instalacja

$ pip install pylama

Ustawienia

Ustawienia tego modułu można dokonać w kilku plikach:

  • pylama.ini
  • setup.cfg
  • tox.ini
  • pytest.ini

Istnieje kilka konfiguracji. Pierwszą z nich jest sekcja „pylama” konfigurująca globalne opcje.

[pylama]
format = pylint
skip = */.tox/*,*/.env/*
linters = pylint,mccabe
ignore = F0401,C0111,E731

Można również ustawić opcje specjalnego sprawdzania kodu dla poszczególnych konfiguracjami narzędzi.

[pylama:pyflakes]
builtins = _

[pylama:pycodestyle]
max_line_length = 100

[pylama:pylint]
max_line_length = 100
disable = R

Ostanią możliwością jest ustawienie opcji dla pliku (lub grupy plików) w sekcjach. Opcje te mają wyższy priorytet niż sekcja „pylama”.

[pylama:*/pylama/main.py]
ignore = C901,R0914,W0212
select = R

[pylama:*/tests.py]
ignore = C0110

[pylama:*/setup.py]
skip = 1

Wykorzystanie

Pylama posiada wsparcie dla pytest. Pakiet automatycznie rejestruje się jako dodatek do pytest podczas instalacji.

$ pytest --pylama ...

Więcej szczegółów konfiguracyjnych można znaleźć na stronie https://pylama.readthedocs.io/en/latest/

Złożoność cyklomatyczna McCabe’a

Złożoność cyklomatyczna (CC), mimo swojej długiej historii – została zdefiniowana w 1976 roku z myślą o programowaniu strukturalnym – jest nadal podstawową miarą złożoności dowolnego fragmentu kodu.

wartość CC Interpretacja
1 - 10 prosta metoda
11 - 20 metoda złożona
21 - 50 metoda bardzo złożona
> 50 testowanie niemal niemożliwe

Możliwości modułu Radom

  • obliczenie złożoność cyklomatycznej
  • całkowita liczba linii kodu (LOC)
  • liczba logicznych linii kodu (LLOC)
  • liczba linii źródłowych kodu (SLOC)
  • liczba linii komentarza
  • liczba linii reprezentujących wieloliniowe ciągi
  • liczba pustych linii
  • złożoność Halsteada (trudność, poziom programu, wysiłek, czas, szacunkowa liczba błędów itd.)