Mierzenie jakości kodu

Post on 08-Apr-2017

345 views 0 download

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ę!