Обновление: лучший вариант, вероятно, заключается в том, чтобы обернуть ваши реальные объекты в оболочку Obfuscated-ClassName, которая реализует тот же интерфейс, но возвращает обфусцированные версии (путем делегирования реальному объекту и обфусцирования результата) и передать их в систему регистрации. Это работает только в том случае, если вы сами передаете эти объекты, а не если они являются частью дерева объектов - это может сделать всю ситуацию немного более сложной.
старый:
Может быть, вам следует просто добавить функции типа getPhoneNumberForLogging () / getObfuscatedPhoneNumber ()? (Конечно, вы должны принять во внимание, что если вы передаете объект, содержащий эти данные, другому объекту / процессу, вы не можете контролировать доступ к «обычным» функциям, поэтому технически вы вообще не экранируете данные - хотя это может быть возможно сделать методы, которые показывают, что конфиденциальный пакет данных локально доступен только?)
Вы можете также исследовать стек вызовов при каждом вызове и попытаться выяснить, хотите ли вы вернуть полные данные или запутанную версию - это добавит немало и может быть очень сложно отладить.