Обнаружить несоответствие между скомпилированным jar и кодом в репозитории - PullRequest
0 голосов
/ 08 июля 2019

У одного из подрядчиков в моем текущем проекте есть странная привычка внедрять исправления в производство в виде jar-файлов и не вставлять фиксированный код в git-репозиторий проекта. Есть десятки maven проектов, которые упаковывают в баночки

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

Ответы [ 2 ]

1 голос
/ 08 июля 2019

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

Но реальное решение, конечно, таково: ваша компания должна иметь правило, которое собирает только с сервера сборки (Jenkins, Bamboo и т. Д.), Который извлекается из официального репозитория git, и может быть запущен в производство. Без исключений.

1 голос
/ 08 июля 2019

Техническое решение вашей проблемы называется Reproducible_builds .

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

...