Mierzenie jakości kodu
-
Upload
radoslaw-jan-ganczarek -
Category
Software
-
view
345 -
download
0
Transcript of Mierzenie jakości kodu
Mierzenie jakości koduRadosław Ganczarek
Skojarzenia
Mierzenie
Jakość
Kod
Skojarzenia
Mierzenie
Jakość
Kod
Skojarzenia
Mierzenie
Jakość
Kod
Skojarzenia
Mierzenie
Jakość
Kod
Co myśli menadżer
Co myślą inni programiści
Co myślą QA :)
Co ja myślę
Ale czasem
Ale dlaczego?
Dostatecznie ciekawe własności programów nie mogą być sprawdzane automatycznie
(Twierdzenie Rice’a. Wersja dla przedszkolaków)
Co możemy sprawdzać automatycznie
Obszary Narzędzia
Formatowanie
Dobre praktyki
Dokumentacja
Testy
Martwy kod
Formattery
Praca z branchami
Systemy budowania
Uruchamianie testów
Edytory
Obszary
Formatowanie - ale dlaczego?
Spójny styl kodowania w firmie/projekcie
Obniżenie progu wejścia
Czytelność kodu
Rozwiązywanie konfliktów
Bo tak (PEP0008)
Co zrobić żeby było pięknie?
Co zrobić żeby było pięknie?
pep8
Co robi: Sprawdza niektóre zasady z PEP8
Konfiguracja: można włączać/wyłączać zasady
Rozszerzanie: tylko przez budowanie narzędzi na bazie pep8 (jak flake8 albo PyLama)
URL: http://pep8.readthedocs.org/
Przykład
isort
Co robi: Sortuje importy
Konfiguracja: dużo opcji, wybór aplikacji do sekcji, sposoby robienia wcięć
URL: https://isort.readthedocs.org
Przykład
scspell3k
Co robi: Szuka błędów ortograficznych
Konfiguracja: ustawienia słowników, tworzenie własnych
URL: https://github.com/myint/scspell
Przykład
No i pięknie!
Dobre praktyki
Dlaczego dobre praktyki? A dlaczego nie?
Dobre praktyki są (skreśl jedno):
● wypróbowane● szybsze● bezpieczniejsze● niezależne od platformy● zapobiegają głupim błędom● Leczą raka
Polityczna agitacja #2
Polityczna agitacja #2
Pyflakes
Co robi: Wyłapuje możliwe błędy w kodzie. Działa szybko, nie komentuje stylu i stara się nie zwracać fałszywie pozytywnych wyników.
URL: https://github.com/pyflakes/pyflakes
Przykład
mccabe
Co robi: Mierzy złożoność kodu algorytmem McCabe’a (jest to plugin do flake8, ale można go też wywołać niezależnie)
URL: https://github.com/flintwork/mccabe
Przykład
Pylint
Co robi: Sprawdza dobre praktyki, styl, możliwe błędy itd.
Konfiguracja: można włączać/wyłączać zasady, konfigurować wartości różnych kryteriów
Rozszerzanie: jest kilka dostępnych rozszerzeń (np. dla Django albo z liczeniem złożoności McCabe’a) i można tworzyć własne
URL: http://pylint.org/
Przykład
flake8
Co robi: pep8+pyflakes
Konfiguracja: konfiguracja pep8 i pyflakes
Rozszerzanie: wiele rozszerzeń (importy, nazwy, mccabe i inne)
URL: https://flake8.readthedocs.org
Stary, gdzie moja lama?
Pylama
Radon
Przykład
Dokumentacja
DokumentacjaDocstringi - dlaczemu?
Dokumentacja API
Czego można się spodziewać po funkcji/klasie/module?
Przemyślenie funkcji
Bo tak (PEP0257)
pep257
Co robi: Sprawdza jakość docstringów (bardzo dokładnie)
Konfiguracja: można wybrać reguły i styl docstringów
URL: https://github.com/GreenSteam/pep257/
Przykład
Testy
coverage
Co robi: zbierane dane o pokryciu kodu i prezentuje je
Konfiguracja: dokładność, pliki do sprawdzania pokrycia, opcje raportów
URL: https://coverage.readthedocs.org/
coverage run -m nose .
Przykład
Martwy kod
Vulture
Co robi: szuka nieużywanych zmiennych, funkcji, metod i klas
Konfiguracja: wskazanie katalogów
URL: https://bitbucket.org/jendrikseipp/vulture
Przykład
Narzędzia
Formatowanie
autopep8
isort
yapf
Praca z branchami
diff-coverdiff-qualitygit-linthgdiffmetrics
Przykład: diff-quality, diff-cover
Problemy
Systemy budowania
Automatyczna weryfikacja kodu na PR/MR
Przygotowywanie raportów
Sprawdzanie, czy jakość mastera się nie pogarsza
Systemy
Uruchamianie testów
py.test in setup.py
tox
tox
Edytory
Vim
SublimeText
PyCharm
Syntastic
SublimeLinter
(defined in External Tools)
Podsumowanie
Pytania?
Radosław Ganczarek
python developer @
https://pl.linkedin.com/in/dreamwalker
http://www.slideshare.net/RadosawJanGanczarek
Dziękuję!