Mierzenie jakości kodu

68
Mierzenie jakości kodu Radosław Ganczarek

Transcript of Mierzenie jakości kodu

Page 1: Mierzenie jakości kodu

Mierzenie jakości koduRadosław Ganczarek

Page 2: Mierzenie jakości kodu
Page 3: Mierzenie jakości kodu

Skojarzenia

Mierzenie

Jakość

Kod

Page 4: Mierzenie jakości kodu

Skojarzenia

Mierzenie

Jakość

Kod

Page 5: Mierzenie jakości kodu

Skojarzenia

Mierzenie

Jakość

Kod

Page 6: Mierzenie jakości kodu

Skojarzenia

Mierzenie

Jakość

Kod

Page 7: Mierzenie jakości kodu

Co myśli menadżer

Page 8: Mierzenie jakości kodu

Co myślą inni programiści

Page 9: Mierzenie jakości kodu

Co myślą QA :)

Page 10: Mierzenie jakości kodu
Page 11: Mierzenie jakości kodu

Co ja myślę

Page 12: Mierzenie jakości kodu

Ale czasem

Page 13: Mierzenie jakości kodu

Ale dlaczego?

Dostatecznie ciekawe własności programów nie mogą być sprawdzane automatycznie

(Twierdzenie Rice’a. Wersja dla przedszkolaków)

Page 14: Mierzenie jakości kodu

Co możemy sprawdzać automatycznie

Page 15: Mierzenie jakości kodu

Obszary Narzędzia

Formatowanie

Dobre praktyki

Dokumentacja

Testy

Martwy kod

Formattery

Praca z branchami

Systemy budowania

Uruchamianie testów

Edytory

Page 16: Mierzenie jakości kodu

Obszary

Page 17: Mierzenie jakości kodu

Formatowanie - ale dlaczego?

Spójny styl kodowania w firmie/projekcie

Obniżenie progu wejścia

Czytelność kodu

Rozwiązywanie konfliktów

Bo tak (PEP0008)

Page 18: Mierzenie jakości kodu

Co zrobić żeby było pięknie?

Page 19: Mierzenie jakości kodu

Co zrobić żeby było pięknie?

Page 20: Mierzenie jakości kodu

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/

Page 21: Mierzenie jakości kodu

Przykład

Page 22: Mierzenie jakości kodu

isort

Co robi: Sortuje importy

Konfiguracja: dużo opcji, wybór aplikacji do sekcji, sposoby robienia wcięć

URL: https://isort.readthedocs.org

Page 23: Mierzenie jakości kodu

Przykład

Page 24: Mierzenie jakości kodu

scspell3k

Co robi: Szuka błędów ortograficznych

Konfiguracja: ustawienia słowników, tworzenie własnych

URL: https://github.com/myint/scspell

Page 25: Mierzenie jakości kodu

Przykład

Page 26: Mierzenie jakości kodu

No i pięknie!

Page 27: Mierzenie jakości kodu

Dobre praktyki

Page 28: Mierzenie jakości kodu

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

Page 29: Mierzenie jakości kodu

Polityczna agitacja #2

Page 30: Mierzenie jakości kodu

Polityczna agitacja #2

Page 31: Mierzenie jakości kodu

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

Page 32: Mierzenie jakości kodu

Przykład

Page 33: Mierzenie jakości kodu

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

Page 34: Mierzenie jakości kodu

Przykład

Page 35: Mierzenie jakości kodu

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/

Page 36: Mierzenie jakości kodu

Przykład

Page 37: Mierzenie jakości kodu
Page 38: Mierzenie jakości kodu
Page 39: Mierzenie jakości kodu
Page 40: Mierzenie jakości kodu

flake8

Co robi: pep8+pyflakes

Konfiguracja: konfiguracja pep8 i pyflakes

Rozszerzanie: wiele rozszerzeń (importy, nazwy, mccabe i inne)

URL: https://flake8.readthedocs.org

Page 41: Mierzenie jakości kodu

Stary, gdzie moja lama?

Page 42: Mierzenie jakości kodu

Pylama

Page 43: Mierzenie jakości kodu
Page 44: Mierzenie jakości kodu

Radon

Page 45: Mierzenie jakości kodu

Przykład

Page 46: Mierzenie jakości kodu

Dokumentacja

Page 47: Mierzenie jakości kodu

DokumentacjaDocstringi - dlaczemu?

Dokumentacja API

Czego można się spodziewać po funkcji/klasie/module?

Przemyślenie funkcji

Bo tak (PEP0257)

Page 48: Mierzenie jakości kodu

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/

Page 49: Mierzenie jakości kodu

Przykład

Page 50: Mierzenie jakości kodu

Testy

Page 51: Mierzenie jakości kodu

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 .

Page 52: Mierzenie jakości kodu

Przykład

Page 53: Mierzenie jakości kodu

Martwy kod

Page 54: Mierzenie jakości kodu

Vulture

Co robi: szuka nieużywanych zmiennych, funkcji, metod i klas

Konfiguracja: wskazanie katalogów

URL: https://bitbucket.org/jendrikseipp/vulture

Page 55: Mierzenie jakości kodu

Przykład

Page 56: Mierzenie jakości kodu

Narzędzia

Page 57: Mierzenie jakości kodu

Formatowanie

autopep8

isort

yapf

Page 58: Mierzenie jakości kodu

Praca z branchami

diff-coverdiff-qualitygit-linthgdiffmetrics

Page 59: Mierzenie jakości kodu

Przykład: diff-quality, diff-cover

Page 60: Mierzenie jakości kodu

Problemy

Page 61: Mierzenie jakości kodu

Systemy budowania

Automatyczna weryfikacja kodu na PR/MR

Przygotowywanie raportów

Sprawdzanie, czy jakość mastera się nie pogarsza

Page 62: Mierzenie jakości kodu

Systemy

Page 63: Mierzenie jakości kodu

Uruchamianie testów

py.test in setup.py

tox

Page 64: Mierzenie jakości kodu

tox

Page 65: Mierzenie jakości kodu

Edytory

Vim

SublimeText

PyCharm

Syntastic

SublimeLinter

(defined in External Tools)

Page 66: Mierzenie jakości kodu

Podsumowanie

Page 67: Mierzenie jakości kodu

Pytania?

Page 68: Mierzenie jakości kodu

Radosław Ganczarek

python developer @

https://pl.linkedin.com/in/dreamwalker

http://www.slideshare.net/RadosawJanGanczarek

Dziękuję!