code quality in python - tools and reasons

43

Upload: radoslaw-jan-ganczarek

Post on 13-Apr-2017

388 views

Category:

Software


4 download

TRANSCRIPT

Page 1: Code quality in Python - tools and reasons
Page 2: Code quality in Python - tools and reasons

You can’t automatically check if code is good

Page 3: Code quality in Python - tools and reasons

Code quality in Python - tools and reasons

Radosław Ganczarek

Page 4: Code quality in Python - tools and reasons

Rice’s theorem

Page 5: Code quality in Python - tools and reasons

Rice’s theorem

(You probably haven’t heard of it)

for any non-trivial property of partial functions, no general and effective method can decide whether an algorithm computes a partial function with that property

Page 6: Code quality in Python - tools and reasons

Rice’s theorem

In the common language:

you can’t write a algorithm, that will check in finite time if a program has some nontrivial property

Page 7: Code quality in Python - tools and reasons

You can’t write a dictionary containing all good programs

Page 8: Code quality in Python - tools and reasons

Examples

You can’t automatically check if:● program never fails● there is any data set, for which program

returns “1”● program is well written and will be readable

for humans● program’s WTF factor will be low

Page 9: Code quality in Python - tools and reasons

But you can try hard ...

Page 10: Code quality in Python - tools and reasons

Don’t worry! It’s not that hard!

Page 11: Code quality in Python - tools and reasons

We’ve got many tools

CheckersFormattersImport sortersCoverageDocstring checkersDead code checkers...

Page 12: Code quality in Python - tools and reasons

What’s this talk about?YES

Developer’s viewChecking code every dayGeneral toolsPython 2.7Jenkins

NOManager’s viewCharts and tablesDjango, flask, web2py etc.Python 3.*Buildbot, Travis etc.Checkers for other languages

Import graph visualisation

Page 13: Code quality in Python - tools and reasons

Let’s get started!

Page 14: Code quality in Python - tools and reasons

Checkers

Page 15: Code quality in Python - tools and reasons

pep8

Page 16: Code quality in Python - tools and reasons

pyflakes

Page 17: Code quality in Python - tools and reasons

mccabe

Page 18: Code quality in Python - tools and reasons

radon

Page 19: Code quality in Python - tools and reasons

flake8

Page 20: Code quality in Python - tools and reasons

pylint

Page 21: Code quality in Python - tools and reasons

The lure of Pylama

Pro:● all tools in one

moduleCon:● Configuration

Page 22: Code quality in Python - tools and reasons

Other tools

pep257vulture

isort

Page 23: Code quality in Python - tools and reasons

pep257

Page 24: Code quality in Python - tools and reasons

Vulture

Page 25: Code quality in Python - tools and reasons

isort

Page 26: Code quality in Python - tools and reasons

Extensions

flake8 (other checks - imports, docstrings etc.)pylint (specific settings - Django, flask etc.)pylama (new checkers)

browsing raw code vs AST

Page 27: Code quality in Python - tools and reasons

Extensions

Example: mccabe extension to flake8

Page 28: Code quality in Python - tools and reasons

Formatters

autopep8yapfisort

Page 29: Code quality in Python - tools and reasons

Autopep8

● Doesn’t fix everything

● Leaves ugly line breaks

Page 30: Code quality in Python - tools and reasons

Yapf - our saviour

Page 31: Code quality in Python - tools and reasons

Isort

Page 32: Code quality in Python - tools and reasons

Test coveragecoverage moduleHow to runCommon problemsComparing with master

Page 33: Code quality in Python - tools and reasons

Utils

diff-coverdiff-qualitygit-linthgdiffmetricsscspell3k

Page 34: Code quality in Python - tools and reasons

diff-cover, diff-quality

Page 35: Code quality in Python - tools and reasons

git-lint, hgdiffmetrics

Page 36: Code quality in Python - tools and reasons

scspell3k

Page 37: Code quality in Python - tools and reasons

Automation

toxpy.testJenkinsGithub PR builder plugin

Page 38: Code quality in Python - tools and reasons

Tox example (from diff-cover app)

Page 39: Code quality in Python - tools and reasons

OK, got it. But why?

Page 40: Code quality in Python - tools and reasons

Benefits?

● refactor confidence● uniform stylePro tip: buzzwords for managers:● maintainability● readability● extendability

Page 41: Code quality in Python - tools and reasons

Questions?

Page 42: Code quality in Python - tools and reasons

Mandatory Monty Python screen

Page 43: Code quality in Python - tools and reasons

About meRadosław GanczarekSenior Python Developer @ (http://stxnext.com)From Wrocław (Poland)https://pl.linkedin.com/in/dreamwalker