Как проверить, отличаются ли два коммита только форматированием кода - PullRequest
2 голосов
/ 02 октября 2019

Я пытался добавить java checkstyle в проект hugh и получил около 7000 ошибок, я рассчитывал formatting, что весь проект избавится от 5000 ошибок.

Проблема в том, что моя команда отказалась от обзораэтот коммит (на git), так как это огромное изменение. Есть ли способ / сценарий, чтобы легко выяснить, если два коммита отличаются только форматированием кода и не имеют логического различия.

Ответы [ 3 ]

1 голос
/ 02 октября 2019

Вы могли бы начать с проверки различий с некоторыми параметрами , чтобы уменьшить некоторые различия, например

git diff --ignore-all-space --allow-indentation-change --ignore-blank-lines HEAD^

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

0 голосов
/ 02 октября 2019

Решение 1

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

Затем сравните каталоги, используя инструмент сравнения, который вы выбрали, например, Meld, WinMerge, Diffinity. Если они не показывают различий, то на самом деле две ревизии не имеют различий, кроме форматирования.

Решение 2

Более простым способом было бы не сравнение ревизий, а простоотформатировать код: отменить фиксацию, проверить ревизию «базовой линии», отформатировать код, зафиксировать. Тогда вы будете уверены, что нет никаких изменений, кроме форматирования.

0 голосов
/ 02 октября 2019

Одним из решений будет сравнение результатов сборки (т.е. скомпилируйте ваш проект и соберите JAR или WAR или другие артефакты). Если вы изменяете только форматирование, то полученный байт-код будет равен предыдущему. Таким образом, простое побитовое сравнение покажет вам, не изменилась ли функциональность при изменении форматирования.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...