Pylint — отличать новые ошибки от старых

Кто-нибудь знает, как отличить новые ошибки (те, которые были обнаружены во время последнего выполнения Pylint) и старые ошибки (те, которые уже были обнаружены во время предыдущих выполнений) в отчете Pylint?

Я использую Pylint в одном из своих проектов, и проект довольно большой. Pylint сообщает о довольно многих ошибках (хотя я отключил многие из них в rcfile). Хотя я исправляю эти ошибки со временем, также важно не создавать новых. Но Pylint HTML и «поддающиеся анализу» отчеты не отличают новые ошибки от тех, которые были идентифицированы ранее, даже несмотря на то, что я запускаю Pylint с параметром persistent=yes.

А пока - сравниваю старые и новые отчеты вручную. Что было бы действительно хорошо, так это если бы Pylint мог каким-то образом выделить те сообщения об ошибках, которые были обнаружены при последнем запуске, но не были найдены при предыдущем. Можно ли это сделать с помощью Pylint или существующих инструментов или чего-то еще? Потому что если нет - похоже, я закончу тем, что напишу собственное сравнение и генерацию отчета.


person Timur    schedule 23.07.2011    source источник
comment
Я заметил, что для Pylint есть запрос функции, который очень похож на мой вопрос — logilab.org/ticket/ 20386. Итак, похоже, что Pylint еще не поддерживает это.   -  person Timur    schedule 24.07.2011


Ответы (2)


Два основных подхода. Исправьте ошибки по мере их появления, чтобы не было старых. Или, если вы не собираетесь исправлять определенные типы ошибок lint, скажите lint прекратить сообщать о них.

Если у вас много файлов, было бы неплохо получить отчет о анализе для каждого файла отдельно, зафиксировать отчеты о анализе в системе контроля версий, такой как svn, а затем использовать утилиту diff систем контроля версий, чтобы отделить новые ошибки анализа от старых предварительных. -существующие. Причина создания отдельных отчетов для каждого файла .py заключается в том, чтобы упростить чтение результатов сравнения.

Если вы работаете в Linux, vim -d oldfile newfile — хороший способ читать diff. Если вы работаете в Windows, просто используйте функцию сравнения, встроенную в Tortoise SVN.

person Michael Dillon    schedule 24.07.2011
comment
Спасибо! Но на самом деле у меня есть проект с более чем 1000 файлов исходного кода, и все это было написано до того, как я начал использовать Pylint. И, что еще хуже, исходный код очень плохого качества (дискалимер: кодировался не мной :-) ). Мой rcfile разрешает только ОШИБКИ, а у меня их около 100+. Вы можете себе представить, какое количество ошибок будет, когда я включу ПРЕДУПРЕЖДЕНИЯ... Я исправляю эти ошибки одну за другой, но это тяжелая работа и требует времени, при этом я также добавляю новый код, и я хочу сосредоточиться на том, чтобы не вводить новые ошибки. Итак, поэтому я все еще хочу отличать новые ошибки от старых. - person Timur; 24.07.2011
comment
Что касается инструментов сравнения - да, я действительно так делаю сейчас :) - person Timur; 24.07.2011

  • Запустите pylint в ветке dev, получите x ошибок
  • Запустите pylint в основной ветке, получите ошибки y
  • Если y › x, значит у вас новые ошибки
  • Вы можете делать все вышеперечисленное в процессе CI до того, как код будет объединен с мастером.
person nanjinglmm    schedule 29.10.2020