Как использовать муравей для проверки тегов (TODO: и т.д.) в исходном коде Java - PullRequest
5 голосов
/ 28 октября 2009

Обычно в коде можно увидеть что-то подобное, надеюсь, только во время разработки:

//XXX: not in production!
String password = "hello"; // getActualPassword(...);
...
catch(Exception e) { /* TODO: Auto-generated catch block*/ }

Я бы хотел, чтобы ant мог а) предупреждать (в тегах TODO: / FIXME:) или не работать (в XXX: или аналогично) Сервер сборки Linux, доморощенный и основанный на ant. Нужно будет работать по крайней мере на Linux, если не на Windows.

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

Ответы [ 5 ]

6 голосов
/ 28 октября 2009

Может быть, вы можете использовать Checkstyle . Я думаю, что есть проверка для комментариев TODO, и checkstyle можно запустить как задачу Ant, чтобы вы могли достичь того, что вы хотите.

5 голосов
/ 28 октября 2009

Вы можете использовать муравьиные условия для этих проверок:

<condition property="isSourceFileOK">
    <not>
        <isfileselected file="${source}">
            <contains text="TODO" casesensitive="yes"/>
        </isfileselected>
    </not>
</condition>
<fail unless="isSourceFileOK" message="Source contains TODO!" />
3 голосов
/ 28 октября 2009

Что касается варианта Perforce, вы, вероятно, захотите написать триггер для этого. См. документацию о триггерах для получения дополнительной информации. В вашем случае вы бы написали триггер 'change-content', чтобы увидеть файл-содержимое на сервере Perforce перед фиксацией файла.

В триггере вы можете использовать p4 files //depot/...@4711, чтобы получить список файлов изменений (в данном случае 4711, но передается в командной строке триггеру. Для каждого из файлов, которые вы используете p4 print -q //depot/path/to/file@4711 чтобы получить содержимое файла и отсканировать его по ключевым словам (TODO / XXX). Вы можете напечатать предупреждение на stdout в случае TODO и выйти с кодом 0, чтобы фиксация прошла успешно и выйти с кодом 1 в случае XXX, так что фиксация не удалась.

2 голосов
/ 28 октября 2009

Во-первых, jassuncao правильно; Checkstyle делает то, что вы просите, в соответствии с документами здесь . Рискуя навлечь на себя гнев «не изобретать велосипед», я также могу предположить, что то, чего вы хотите достичь, является хорошей проблемой для тех, кто хочет научиться писать задачи Ant.

0 голосов
/ 22 августа 2011

Вы также можете использовать задачу Ant TODO .

...