Питонические атаки
1.19K subscribers
183 photos
4 videos
1 file
459 links
Всяческие заметки про программирование на Python и другие весёлые истории.
Download Telegram
wily — статический анализатор кода, который собирает различные метрики и позволяет сравнивать их между ревизиями.

Умеет собирать множество различных метрик, например:
* количество строк, использованных операторов, комментариев;
* цикломатическая сложность;
* maintainability index.

По этим метрикам позволяет находить, например, самые сложные файлы в репозитории, которые сильнее всего хотят быть отрефактореными. Умеет пробегать историю изменений вглубь и оценивать, как метрики меняются со временем.

Можно интегрировать wily в качестве хука в Git, либо в CI. Честно говоря, это не кажется мне такой уж хорошей идеей, потому что мы часто осознанно хотим усложнить код, добавляя в проект новые фичи. Код вообще зачастую становится лишь сложнее. Было бы странно постоянно ронять CI из-за этого.

Но тулза всё равно полезная в информационных целях. Можно периодически её запускать, чтобы оценивать, как меняется проект. А ещё можно строить разные графики.

source: https://github.com/tonybaloney/wily
docs: https://wily.readthedocs.io/en/latest/index.html

#tool #wily
Вот, например, такие графики оно строит.

В какой-то момент файл был разделён на части, поэтому его размер уменьшился, но затем он снова продолжил расти. Эх.

#tool #wily
Многие уже приняли за норму форматирование кода разными тулзами (black) и сортировку импортов в алфавитном порядке с разбиением на группы (isort).

А что если начать сортировать ещё и весь остальной исходный код?

https://github.com/bwhmather/ssort

ssort сортирует функции и классы, ставя их после того, от чего они зависят. Получается, что вверху файла находятся самые низкоуровневые функции, от которых всё зависит, а внизу файла — самый главный высокоуровневый код. Прям как завещал дядюшка Боб.

> Makes old fashioned code navigation easier, you can always scroll up to see where something is defined, and reduces bikeshedding.

#formatter #tool
👍23🤔21