Вероятно, это можно сделать (очень, очень болезненно), выбрав систему Java Design By Contract и изменив каждую функцию, которая принимает перечисление, чтобы оно не было нулевым. Это, конечно, гигантский объем работы над существующим проектом.
С практической точки зрения, вы можете рассмотреть возможность интеграции инструмента статического анализа кода в ваш процесс сборки. Это также большой объем работы (он потенциально может найти гигантский набор «ошибок»), но, вероятно, выполнимо (все еще мучительно), если у вас есть время, чтобы в него инвестировать. Правильный инструмент статического анализа кода может обнаружить такой тип ошибки.