Предупреждение Doxygen: задокументированная функция не объявлена ​​или не определена

Я пытаюсь использовать Doxygen в первый раз. При запуске Doxygen мне выдается большое количество предупреждений следующего вида:

<код>.cxx:<номер строки>: предупреждение: документированная функция `<функция>::<функция>' не была объявлена ​​или определена.

Я не уверен, как подойти к проблеме. Я работаю с большим пакетом C++, и этот тип предупреждения появляется несколько сотен раз при запуске Doxygen.

Вот более конкретная информация:

пример предупреждения:

            Accept.cxx:14: warning: documented function `Accept::Accept' was not declared or defined.

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

            #include "Analysis/Accept.h"
            #include "Analysis/Cutflow.h"
            #include "GlaNtp/GlaUtil/Steer/Steer.h"
            #include <iostream>

            Accept::Accept(unsigned int cutmask, unsigned int invertword, StringIntMap* CutTypeMap, Cutflow* analysis_cutflow): m_cutmask(cutmask), m_invertword(invertword), 
                                                                            m_cutword(0),m_cutword_set(false), m_CutTypeMap(CutTypeMap),
                                                                                    m_analysis_cutflow(analysis_cutflow){ 
                                                                                        // this is constructor
            InitBitOrder();

            }

            Accept::~Accept(){}

            void Accept::setCutWord(const unsigned int &cutword){
             m_cutword_set = true;
             m_cutword = cutword;
            }

            bool Accept::didBitPass(){
             //std::cout << "Rick Evnt Pass: " << rickTestCutWord() << std::endl;
             return testCutWord();
            }

            void Accept::InitBitOrder(){

             Steer* bitorsteer=new Steer(); 

             std::string configfile="ConFigFiles/ApplyBits/BitOrderConfigurationFile.txt";

            if(!bitorsteer->ReadFile(configfile)){
             std::cout << "Fatal ERROR: Failed to read Bit Order configuration steering file:  " << configfile << std::endl;
             delete bitorsteer;
             bitorsteer=0;
             exit(1);
            }

            m_bitOrderMap = new StringIntMap("BitOrder", bitorsteer);//  bit order

            delete bitorsteer;
            }

Я был бы признателен за любую помощь, которую вы могли бы оказать в указании меня в правильном направлении.

Превентивная благодарность


person d3pd    schedule 26.07.2012    source источник


Ответы (3)


Я предполагаю, что Doxygen не анализирует заголовочный файл Analysis/Accept.h, поэтому не видит объявление класса Analysis. В выходном журнале убедитесь, что Analysis/Accept.h действительно обрабатывается.

Чтобы убедиться, что Doxygen анализирует каталог Analysis, вам может потребоваться добавить дополнительные исходные каталоги в Expert->Input (в графическом интерфейсе Doxygen) и/или включить параметр Recursive. Возможно, вам нужно указать исходный каталог на один уровень выше того, который вы указали в данный момент.

person Emile Cormier    schedule 26.07.2012
comment
Спасибо, включение рекурсивной опции помогло мне, хотя мой исходный путь содержал все файлы, которые мне нужно было проанализировать. - person Alex; 24.11.2015

У меня была та же проблема, и я последовал совету Эмиля Кормье. В моем случае соответствующий заголовочный файл действительно не анализировался. Это произошло потому, что у меня есть заголовочный файл С++ с расширением .h. Изначально в моем файле Doxygen.in было следующее:

EXTENSION_MAPPING      = .h=C++

Внимательно посмотрев на вывод, я заметил утверждение: «Добавление пользовательского сопоставления расширений: ..h будет рассматриваться как язык C++», указывающее на дополнительное «.». Удаление точки из соответствующей строки устранило мою проблему.

person Spacemoose    schedule 14.05.2013

FWIW, у меня был еще один случай, который вызвал такое предупреждение: определение типа было выполнено в двух разных местах. Это нормально для C++, но заставляет doxygen (1.8.7) выдавать именно это предупреждение. Изменение порядка, чтобы исправить одно определение.

person akim    schedule 31.07.2014