Как заставить 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.