Как заставить doxygen работать быстрее?

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

Как заставить его обрабатывать только измененные файлы?

Ответы

Ответ 1

Из документации Doxygen:

Как я могу исключить все тестовые каталоги из моего дерева каталогов?

Проще говоря, используйте шаблон исключения это в файле конфигурации:

EXCLUDE_PATTERNS =/test/

Итак, вы должны использовать шаблоны для исключения файлов. Это было давно, так как я использовал Doxygen, но я не помню никакой опции для обработки только измененных файлов.

Ответ 2

Я обнаружил, что отключение опции SEARCH_INCLUDES имеет большое значение. Он просматривал всю SDK платформы и включал пути для компилятора, которые в любом случае не были документированы и не появлялись в сгенерированной документации.

Ответ 3

Существует опция DOT_NUM_THREADS, которая может увеличить производительность на многоядерных машинах. К сожалению, сам doxygen просто однопоточный.

Другим подходом было бы организовать ваш код в модули, выполняемые для каждого модуля, отдельного экземпляра doxygen и связать полученные теги вместе: http://www.stack.nl/~dimitri/doxygen/external.html

Ответ 4

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

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

Далее, можно было бы сделать модуль Doxygen по модулю, обрабатывать только измененные модули и документа верхнего уровня, которые ссылаются на все документации модулей.

Ответ 5

Я не думаю, что Doxygen работает на нормальном жизненном цикле - хорошая идея. Наша сборка Doxygen работает как часть обязанностей сервера Continuous Integration.

Тем не менее, есть некоторые преимущества запуска doxygen для каждой сборки, чтобы уловить недостающие документы. Таким образом, я бы обрезал конфигурацию doxygen для dev, создавая удаляющие диаграммы, и даже останавливал apple, импортируя его в xcode.