Насколько мне известно, Checkstyle предназначен для анализа источника без учета его истории или изменений.
Чтобы добавить такую функцию, необходимо выполнить анализ сценария проверки сценариев, чтобы получить точный набор файлов, представляющих дельту.
Но тогда некоторые виды проверок могут потерпеть неудачу или пропустить их анализ, например проверка дублированного кода .
Таким образом, для такого вида инкрементального анализа вам нужно не только ограничить набор источников, но и набор правил, которые вы хотите применять, поскольку некоторые из этих правил имеют смысл только для всех источников.
Итак, почему вы не можете выполнить полную проверку каждого файла, а затем отфильтровать результаты на основе изменений, управляемых вашей системой контроля версий? Что-нибудь подобное существует?
Насколько мне известно, особенно с таким плагином, как eclipse-cs для eclipse: если они анализируют файл, они будут отображать все предупреждения, даже если система контроля версий упоминает, что файл не изменился с момента пересмотр.
Это может сделать только внешний скрипт:
Принцип прост (хотя он может быть немного медленным во время выполнения):
- для каждого файла, выполните diff, чтобы проверить, были ли внесены изменения
- если да,
- сделать
svn blame
, чтобы аннотировать строки с номером редакции, которая содержала последнее изменение.
- Затем проанализируйте файл с помощью checkstyle.
- Затем сценарий может отфильтровать предупреждение для строки, которая в данный момент изменяется (или для всех строк, измененных после данной ревизии).