Предупреждение на 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 GUI) и/или да активирате опцията Recursive. Може би трябва да посочите изходна директория едно ниво над това, което сте посочили в момента.

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

Имах същия проблем и последвах съвета на Emile Cormier. В моя случай съответният заглавен файл наистина не беше анализиран. Това беше, защото имам c++ заглавен файл с разширение .h. Първоначално имах следното в моя файл Doxygen.in:

EXTENSION_MAPPING      = .h=C++

Разглеждайки внимателно изхода, забелязах изявлението: „Добавяне на персонализирано съпоставяне на разширение: ..h ще се третира като език c++“, указващ допълнително „.“. Премахването на точката от съответния ред реши проблема ми.

person Spacemoose    schedule 14.05.2013

FWIW, имах друг случай, който задейства такова предупреждение: направена typedef на две различни места. Това е ОК спрямо C++, но кара doxygen (1.8.7) да издаде точно това предупреждение. Пренареждането, за да има една единствена дефиниция, го коригира.

person akim    schedule 31.07.2014