принудительное предупреждение в Java - PullRequest
9 голосов
/ 19 мая 2010

Мне бы хотелось, чтобы механизм выдавал предупреждение во время компиляции вручную. Я использую его для пометки незавершенного кода, поэтому я не могу забыть об этом позже. @Deprecated близок, но предупреждает на сайте вызывающей стороны, а не на сайте создания. Я использую затмение. Нечто подобное # Предупреждение в C #.

Ответы [ 7 ]

6 голосов
/ 19 мая 2010

Почему бы просто не добавить флаг в исходный код, например //TODO: или что-то еще? А потом просто искать все вхождения TODO в файле? Вы могли бы даже иметь какой-то особый флаг, например FINISHME или что-то в этом роде.

Если в вашем проекте есть сотни TODO от команды, вы можете фильтровать по строке, например. ваши инициалы в верхнем правом меню панели задач.

2 голосов
/ 23 января 2014

Намного лучше, чем использовать устаревшую аннотацию, по моему скромному мнению, аннотацию suppresswarnings.

@SuppressWarnings("XXX")

можно аннотировать почти везде, и если XXX не является действительным предупреждением, вы получите предупреждение от затмения об этом.

2 голосов
/ 19 мая 2010

Создайте аннотацию, которая выводит предупреждение.

1 голос
/ 17 мая 2013

Когда я хочу предупредить пользователей о вызове метода, я (неправильно) использую встроенную аннотацию @Deprecated, которая генерирует предупреждение на стороне вызывающего. На самом деле это имеет немного другое значение, но мне все равно.

/** [Additional information...]
 * It is marked as deprecated to warn callers. */
@Deprecated public void methodForWhichIWantToCreateAWarning();
1 голос
/ 19 мая 2010

Я делаю это все время, просто ставя "*** СЛЕДУЮЩИЙ ЗДЕСЬ ***" или что-то подобное. Так как это недопустимый Java или C ++ или почти любой другой синтаксис языка, компилятор выдает сообщение об ошибке.

Конечно, это дает ошибку, а не предупреждение. Если вы хотите иначе успешно скомпилировать, я полагаю, что проще всего было бы поместить оператор, который, как вы знаете, сгенерирует предупреждение компилятора с комментарием, говорящим «закончи это» или что-то в этом роде.

1 голос
/ 19 мая 2010

Вы можете попытаться вызвать исключение, если вызывается незаконченный метод (например,)

throw new UnsupportedOperationException()

(Или вы можете создать свое собственное исключение). Очевидно, это поможет только во время выполнения (если вы не выполните поиск или что-то в своем коде для этого - но Todo будет лучшим решением для этого)

И если вы используете eclipse, вы можете пометить ваш незаконченный код с помощью // TODO, и он будет отображаться в вашем списке задач (и справа, если вы его настроили). Очевидно, что все может стать очень шумным, если у вас много тегов Todo.

0 голосов
/ 19 мая 2010

Я не уверен, есть ли что-нибудь подобное в Java

но вот что может вам помочь:

скомпилируйте приведенный ниже код следующим образом:

javac -Xprint verbose.java

public class verbose{

    public @interface SomeMessage {
        String somevalue();
    }


    @SomeMessage(
        somevalue = "WHOOOOHOOOO000000000000000"
    )

    public static void main(){
        System.out.println("Hello");
    }   
}
...