Есть ли плагин maven, который дает mvn verify
aggregating project, если его подмодули или их транзитные зависимости зависят от того, что они не должны.Есть ли плагин maven, который увеличивает контроль доступа Java?
Я хотел бы иметь возможность ограничить использование публичного API, чтобы выразить политику как
- Только классы или пакеты на белом списке может вызвать этот публичный конструктор/метод.
- Этот публичный сеттер, созданный генератором кода, не должен называться - он должен быть действительно закрытым пакетом.
Мотивация & Предостережения
Я понимаю, что есть способы обойти эти требования с помощью отражения и десериализации. Моя конечная цель, чтобы системно-архитекторам & технически ведет установить политику как
- Все виды использования API, критических для безопасности должны быть в модулях проанализированных безопасности. Свяжитесь с ними, если вам нужен белый список.
- Эти устаревшие API запрещены в пользу новых. Есть белый список для grandfathered кода, который должен сокращаться с течением времени.
Системный архитектор рассматривает доверенных разработчиков приложений, но мы хотим, чтобы наивные нарушения правил помечены полезными сообщениями об ошибках, и мы хотим, чтобы разработчики, которые взломали политику, не могли правдоподобно отрицать, что они это сделали.
Трюки, такие как отражение и десериализация, попадают в этот неправдоподобный-допустимый взлом.
Это вроде как некоторые из целей Jigsaw, где модуль (группа пакетов) может заявить, что открытый интерфейс ограничивается только некоторые пакеты, но головоломки не получили широкого распространения.
Этот вопрос отличается от "Make Java methods visible to only specific classes", потому что я не спрашиваю о том, как это сделать на языке Java.
Разве это не то, что обзоры кода и 'Геррит? – Shark
@Shark, В крупных проектах команды должны специализироваться.Специалистам по безопасности необходимо работать над тем, чтобы обеспечить безопасность объектов, дизайнерам необходимо работать над дизайном, администраторы db должны убедиться, что база данных используется эффективно, а разработчикам приложений необходимо убедиться в том, что бизнес-логика реализована должным образом. Если каждое изменение, которое разработчик приложения разработало, должно было быть рассмотрено специалистами любого типа, развитие остановится. Разработчики приложений не должны быть экспертами по всем специальностям, прежде чем они смогут сделать обзор работы другого приложения. –
Многое соглашалось, что обычно приводит к тому, что руководители команд вообще не кодируют и только управляют своей командой и делегируют задачи соответствующим людям/подчиненным/партнерам:/Но это всегда стоимость последующих политик, не так ли. – Shark