Заменить Java-комментарий журналом во время или до времени выполнения - PullRequest
5 голосов
/ 27 декабря 2011

Мне любопытно, можно ли использовать аннотацию для класса или метода, которая во время или до времени выполнения заменяет комментарии на запись в строку комментариев. Например, если на андроиде:

@LogComments
class MyActivity extends Activity {
    @Override public void onCreate(Bundle b) {
        super.onCreate(b);
        // set some local vars
        int a = 1;
        int b = 2;
    }
}

будет означать что-то вроде

class MyActivity extends Activity {
    @Override public void onCreate(Bundle b) {
        super.onCreate(b);
        Log.d("TAG", "set some local vars");
        int a = 1;
        int b = 2;
    }
}

Ответы [ 3 ]

1 голос
/ 27 декабря 2011

Из коробки. Нет, ничего такого не существует.

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

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

0 голосов
/ 27 декабря 2011

Чего ты пытаешься достичь?

Если вы хотите включить ведение журнала для каждого класса, вы можете использовать некоторый флаг (static final int сделает), который отключит или включит ведение журнала. Взгляните на эту ветку: Как включить / отключить уровни журналов в Android? , чтобы получить несколько советов по входу в Android.

0 голосов
/ 27 декабря 2011

Нет, это невозможно, поскольку комментарии удаляются во время выполнения. Лучшее, что я могу придумать - это читать Javadoc во время выполнения и регистрировать их. Но это не включает не-Javadoc комментарии.

...