Взаимодействие с источником контроля - PullRequest
1 голос
/ 16 сентября 2009

Недавно я изучал стиль проверки в рамках некоторых исследований стандартных соглашений о кодировании. Хотя кажется, что он идеально подходит для совершенно новых проектов, он, кажется, имеет огромный барьер для принятия уже существующих проектов, так как он, похоже, не обеспечивает метод проверки только нового или отредактированного кода. Может я не прав?

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

Я предполагаю, что это должно быть связано с системой контроля версий, чтобы это было возможно. Это возможно с Checkstyle или есть другой инструмент, который может обеспечить эту функциональность?

Ответы [ 2 ]

1 голос
/ 16 сентября 2009

Насколько мне известно, Checkstyle предназначен для анализа источника без учета его истории или изменений.

Чтобы добавить такую ​​функцию, необходимо выполнить анализ сценария проверки сценариев, чтобы получить точный набор файлов, представляющих дельту.

Но тогда некоторые виды проверок могут потерпеть неудачу или пропустить их анализ, например проверка дублированного кода .

Таким образом, для такого вида инкрементального анализа вам нужно не только ограничить набор источников, но и набор правил, которые вы хотите применять, поскольку некоторые из этих правил имеют смысл только для всех источников.


Итак, почему вы не можете выполнить полную проверку каждого файла, а затем отфильтровать результаты на основе изменений, управляемых вашей системой контроля версий? Что-нибудь подобное существует?

Насколько мне известно, особенно с таким плагином, как eclipse-cs для eclipse: если они анализируют файл, они будут отображать все предупреждения, даже если система контроля версий упоминает, что файл не изменился с момента пересмотр.

Это может сделать только внешний скрипт:
Принцип прост (хотя он может быть немного медленным во время выполнения):

  • для каждого файла, выполните diff, чтобы проверить, были ли внесены изменения
  • если да,
    • сделать svn blame, чтобы аннотировать строки с номером редакции, которая содержала последнее изменение.
    • Затем проанализируйте файл с помощью checkstyle.
  • Затем сценарий может отфильтровать предупреждение для строки, которая в данный момент изменяется (или для всех строк, измененных после данной ревизии).
0 голосов
/ 19 сентября 2013

Мы разработали плагин Checkstyle для SCM-Manager , инструмент для управления Git, Subversion и Mercurial репозиториями. Если он активирован, можно проверить зафиксированный исходный код на соответствие вашим правилам Checkstyle. Если проверка обнаружила ошибки, фиксация отменяется.

...