Почему это там в первую очередь?
Вы проверили нестабильный код в магистрали? Почему?
Нестабильный код не должен быть зарегистрирован в trunk / main / master или как там есть основное имя транка. Это считается разработкой с высоким уровнем риска, и вместо этого она должна была быть изолирована в своей собственной ветке, над которой вы работали, а не проверена на main.
Я настоятельно рекомендую вам (и руководителю вашей команды) прочитать Расширенные стратегии ветвления SCM . В частности, обратите внимание на роль разработки и то, что в ней говорится о том, что считается развитием высокого риска:
В общем, рассмотрите возможность использования отдельных веток для каждого проекта с высокой степенью риска. Проекты с высоким риском характеризуются большим размером, большим количеством людей, незнакомыми предметами, высокотехнологичными предметами, очень жесткими временными рамками, неопределенными сроками сдачи, неполными или нестабильными требованиями и географически распределенными проектными командами. Точно так же рассмотрите возможность назначения отдельной ветки для разработки с низким уровнем риска в каждом выпуске. Несколько источников, включая [WING98], рекомендуют использовать магистраль для этой цели. Рассмотрите факторы, обсужденные выше для основной линии, прежде чем совершать этот курс действий. Разработка с низким уровнем риска может отличаться от основной линии, даже если у вас есть несколько членов семейства продуктов, координирующих через основную линию.
Разрешение людям проверять нестабильный (или неиспользуемый) код в основной строке означает, что вы будете путать будущие усилия по разработке с попыткой сохранить этот код. Каждая ветвь и клон представителя с этого момента до конца времени будут содержать это, пока кто-нибудь не скажет «его мертвый код» и не удалит его.
Некоторые говорят, что «хорошо, если в ветке это забыто», и хотя это может быть правдой, забыть мертвый (и нестабильный) код в mainline во много раз хуже, так как он запутывает всю будущую разработку, пока он не будет удален - и тогда это еще более забыто. Красиво названная ветка "/ fooProject / branch / WeisBigIdea" (или эквивалентная) видна и с ней легче работать в будущем - особенно, если она работает.
@Deprecated
Первое - это @Deprecated
аннотация. Это выходит за рамки javadoc и выдает предупреждения компилятора. javac
предоставляет -deprecation
флаг, который описывается как:
Показать описание каждого использования или переопределения устаревшего члена или класса. Без -deprecation
, javac
показывает сводку исходных файлов, которые используют или переопределяют устаревшие элементы или классы. -декрекция это сокращение от -Xlint:deprecation
.
Как уже отмечалось, это выходит за рамки стандартных предупреждений компилятора.
Во многих средах разработки устаревшие методы и значения показаны зачеркнутыми:
foo.bar();
И будет производить вывод, как:
$ javac -Xlint:all Foo.java Bar.java
Bar.java:2: warning: [deprecation] Foo in unnamed package has been deprecated
interface Bar extends Foo { }
^
В зависимости от вашей структуры сборки, у вас могут быть предупреждения, нарушающие сборку. Это нарушит сборку только в том случае, если будет использован один из ваших классов (а не если он просто скомпилирован).
@CustomAnnotation
Есть много подходов к этому. Например, облегченная аннотация javac @Warning, которая предоставляет процессор аннотаций, который выдает предупреждение во время компиляции, когда используется что-то с этой аннотацией ( учебное руководство по netbeans на пользовательских процессорах аннотаций, чтобы вы могли получить представление о том, что происходит за сцены).
Oracle даже описывает пример использования пользовательских аннотаций для @Unfinished
аннотации в статье Использование большинства метаданных Java, часть 2: Пользовательские аннотации .
С AnnotationProcessor вы можете запускать произвольный код во время компиляции. Вам решать, что вы хотите от этого. Предупредить, сломать сборку, когда что-то используется. В Интернете существует множество учебных пособий по написанию такого рода кода. Если вы хотите сгенерировать ошибку при ее компиляции (это будет раздражать и привести к ее удалению), или если ее использовать (написать немного сложнее).
Обратите внимание, что все это подразумевает изменение сборок для фактического использования процессора аннотаций.