2011-01-29 11 views
12

Estoy usando Doxygen para un proyecto de C++. Cuando estoy compilando el documento html, aparece el siguiente error:Advertencia de Doxygen: no se ha encontrado ningún miembro de la clase que coincida solo con

C:/Amir/Programming/Eclipse C++/CacheOptimization/src/CacheLruNaiveAlgorithm.cpp:19:

warning: no uniquely matching class member found for

void CacheOpt::CacheLruNaiveAlgorithm::init(TierList &tierList, TierMap *tierMap)

¿Cuál podría ser el origen de esta advertencia? ¿Qué lo causa generalmente?

Editar:

Mi Doxyfile

DOXYFILE_ENCODING  = UTF-8 
PROJECT_NAME   = "Cache Optimization" 
PROJECT_NUMBER   = 1.0 
PROJECT_BRIEF   = "Technion & LSI - Industrial Project" 
PROJECT_LOGO   = 
OUTPUT_DIRECTORY  = "C:/Amir/Programming/Eclipse C++/CacheOptimization/doc/" 
CREATE_SUBDIRS   = NO 
OUTPUT_LANGUAGE  = English 
BRIEF_MEMBER_DESC  = YES 
REPEAT_BRIEF   = YES 
ABBREVIATE_BRIEF  = "The $name class" \ 
         "The $name widget" \ 
         "The $name file" \ 
         is \ 
         provides \ 
         specifies \ 
         contains \ 
         represents \ 
         a \ 
         an \ 
         the 
ALWAYS_DETAILED_SEC = NO 
INLINE_INHERITED_MEMB = NO 
FULL_PATH_NAMES  = YES 
STRIP_FROM_PATH  = 
STRIP_FROM_INC_PATH = 
SHORT_NAMES   = NO 
JAVADOC_AUTOBRIEF  = NO 
QT_AUTOBRIEF   = NO 
MULTILINE_CPP_IS_BRIEF = NO 
INHERIT_DOCS   = YES 
SEPARATE_MEMBER_PAGES = NO 
TAB_SIZE    = 8 
ALIASES    = 
OPTIMIZE_OUTPUT_FOR_C = NO 
OPTIMIZE_OUTPUT_JAVA = NO 
OPTIMIZE_FOR_FORTRAN = NO 
OPTIMIZE_OUTPUT_VHDL = NO 
EXTENSION_MAPPING  = 
BUILTIN_STL_SUPPORT = NO 
CPP_CLI_SUPPORT  = YES 
SIP_SUPPORT   = NO 
IDL_PROPERTY_SUPPORT = YES 
DISTRIBUTE_GROUP_DOC = NO 
SUBGROUPING   = YES 
TYPEDEF_HIDES_STRUCT = NO 
SYMBOL_CACHE_SIZE  = 0 
EXTRACT_ALL   = YES 
EXTRACT_PRIVATE  = NO 
EXTRACT_STATIC   = NO 
EXTRACT_LOCAL_CLASSES = YES 
EXTRACT_LOCAL_METHODS = NO 
EXTRACT_ANON_NSPACES = NO 
HIDE_UNDOC_MEMBERS  = NO 
HIDE_UNDOC_CLASSES  = NO 
HIDE_FRIEND_COMPOUNDS = NO 
HIDE_IN_BODY_DOCS  = NO 
INTERNAL_DOCS   = NO 
CASE_SENSE_NAMES  = NO 
HIDE_SCOPE_NAMES  = NO 
SHOW_INCLUDE_FILES  = YES 
FORCE_LOCAL_INCLUDES = NO 
INLINE_INFO   = YES 
SORT_MEMBER_DOCS  = YES 
SORT_BRIEF_DOCS  = NO 
SORT_MEMBERS_CTORS_1ST = NO 
SORT_GROUP_NAMES  = NO 
SORT_BY_SCOPE_NAME  = NO 
STRICT_PROTO_MATCHING = NO 
GENERATE_TODOLIST  = YES 
GENERATE_TESTLIST  = YES 
GENERATE_BUGLIST  = YES 
GENERATE_DEPRECATEDLIST= YES 
ENABLED_SECTIONS  = 
MAX_INITIALIZER_LINES = 30 
SHOW_USED_FILES  = YES 
SHOW_DIRECTORIES  = NO 
SHOW_FILES    = YES 
SHOW_NAMESPACES  = YES 
FILE_VERSION_FILTER = 
LAYOUT_FILE   = 
QUIET     = NO 
WARNINGS    = YES 
WARN_IF_UNDOCUMENTED = YES 
WARN_IF_DOC_ERROR  = YES 
WARN_NO_PARAMDOC  = NO 
WARN_FORMAT   = "$file:$line: $text" 
WARN_LOGFILE   = 
INPUT     = "C:/Amir/Programming/Eclipse C++/CacheOptimization/" 
INPUT_ENCODING   = UTF-8 
FILE_PATTERNS   = *.c \ 
         *.cc \ 
         *.cxx \ 
         *.cpp \ 
         *.c++ \ 
         *.d \ 
         *.java \ 
         *.ii \ 
         *.ixx \ 
         *.ipp \ 
         *.i++ \ 
         *.inl \ 
         *.h \ 
         *.hh \ 
         *.hxx \ 
         *.hpp \ 
         *.h++ \ 
         *.idl \ 
         *.odl \ 
         *.cs \ 
         *.php \ 
         *.php3 \ 
         *.inc \ 
         *.m \ 
         *.mm \ 
         *.dox \ 
         *.py \ 
         *.f90 \ 
         *.f \ 
         *.for \ 
         *.vhd \ 
         *.vhdl 
RECURSIVE    = YES 
EXCLUDE    = 
EXCLUDE_SYMLINKS  = NO 
EXCLUDE_PATTERNS  = 
EXCLUDE_SYMBOLS  = 
EXAMPLE_PATH   = 
EXAMPLE_PATTERNS  = * 
EXAMPLE_RECURSIVE  = NO 
IMAGE_PATH    = 
INPUT_FILTER   = 
FILTER_PATTERNS  = 
FILTER_SOURCE_FILES = NO 
FILTER_SOURCE_PATTERNS = 
SOURCE_BROWSER   = NO 
INLINE_SOURCES   = NO 
STRIP_CODE_COMMENTS = YES 
REFERENCED_BY_RELATION = NO 
REFERENCES_RELATION = NO 
REFERENCES_LINK_SOURCE = YES 
USE_HTAGS    = NO 
VERBATIM_HEADERS  = YES 
ALPHABETICAL_INDEX  = YES 
COLS_IN_ALPHA_INDEX = 5 
IGNORE_PREFIX   = 
GENERATE_HTML   = YES 
HTML_OUTPUT   = html 
HTML_FILE_EXTENSION = .html 
HTML_HEADER   = 
HTML_FOOTER   = 
HTML_STYLESHEET  = 
HTML_COLORSTYLE_HUE = 220 
HTML_COLORSTYLE_SAT = 100 
HTML_COLORSTYLE_GAMMA = 80 
HTML_TIMESTAMP   = YES 
HTML_ALIGN_MEMBERS  = YES 
HTML_DYNAMIC_SECTIONS = NO 
GENERATE_DOCSET  = NO 
DOCSET_FEEDNAME  = "Doxygen generated docs" 
DOCSET_BUNDLE_ID  = org.doxygen.Project 
DOCSET_PUBLISHER_ID = org.doxygen.Publisher 
DOCSET_PUBLISHER_NAME = Publisher 
GENERATE_HTMLHELP  = NO 
CHM_FILE    = 
HHC_LOCATION   = 
GENERATE_CHI   = NO 
CHM_INDEX_ENCODING  = 
BINARY_TOC    = NO 
TOC_EXPAND    = NO 
GENERATE_QHP   = NO 
QCH_FILE    = 
QHP_NAMESPACE   = org.doxygen.Project 
QHP_VIRTUAL_FOLDER  = doc 
QHP_CUST_FILTER_NAME = 
QHP_CUST_FILTER_ATTRS = 
QHP_SECT_FILTER_ATTRS = 
QHG_LOCATION   = 
GENERATE_ECLIPSEHELP = NO 
ECLIPSE_DOC_ID   = org.doxygen.Project 
DISABLE_INDEX   = NO 
ENUM_VALUES_PER_LINE = 4 
GENERATE_TREEVIEW  = YES 
USE_INLINE_TREES  = NO 
TREEVIEW_WIDTH   = 250 
EXT_LINKS_IN_WINDOW = NO 
FORMULA_FONTSIZE  = 10 
FORMULA_TRANSPARENT = YES 
USE_MATHJAX   = NO 
MATHJAX_RELPATH  = http://www.mathjax.org/mathjax 
SEARCHENGINE   = YES 
SERVER_BASED_SEARCH = NO 
GENERATE_LATEX   = NO 
LATEX_OUTPUT   = latex 
LATEX_CMD_NAME   = latex 
MAKEINDEX_CMD_NAME  = makeindex 
COMPACT_LATEX   = NO 
PAPER_TYPE    = a4 
EXTRA_PACKAGES   = 
LATEX_HEADER   = 
PDF_HYPERLINKS   = YES 
USE_PDFLATEX   = YES 
LATEX_BATCHMODE  = NO 
LATEX_HIDE_INDICES  = NO 
LATEX_SOURCE_CODE  = NO 
GENERATE_RTF   = NO 
RTF_OUTPUT    = rtf 
COMPACT_RTF   = NO 
RTF_HYPERLINKS   = NO 
RTF_STYLESHEET_FILE = 
RTF_EXTENSIONS_FILE = 
GENERATE_MAN   = NO 
MAN_OUTPUT    = man 
MAN_EXTENSION   = .3 
MAN_LINKS    = NO 
GENERATE_XML   = NO 
XML_OUTPUT    = xml 
XML_SCHEMA    = 
XML_DTD    = 
XML_PROGRAMLISTING  = YES 
GENERATE_AUTOGEN_DEF = NO 
GENERATE_PERLMOD  = NO 
PERLMOD_LATEX   = NO 
PERLMOD_PRETTY   = YES 
PERLMOD_MAKEVAR_PREFIX = 
ENABLE_PREPROCESSING = YES 
MACRO_EXPANSION  = NO 
EXPAND_ONLY_PREDEF  = NO 
SEARCH_INCLUDES  = YES 
INCLUDE_PATH   = 
INCLUDE_FILE_PATTERNS = 
PREDEFINED    = 
EXPAND_AS_DEFINED  = 
SKIP_FUNCTION_MACROS = YES 
TAGFILES    = 
GENERATE_TAGFILE  = 
ALLEXTERNALS   = NO 
EXTERNAL_GROUPS  = YES 
PERL_PATH    = /usr/bin/perl 
CLASS_DIAGRAMS   = YES 
MSCGEN_PATH   = 
HIDE_UNDOC_RELATIONS = YES 
HAVE_DOT    = NO 
DOT_NUM_THREADS  = 0 
DOT_FONTNAME   = Helvetica 
DOT_FONTSIZE   = 10 
DOT_FONTPATH   = 
CLASS_GRAPH   = YES 
COLLABORATION_GRAPH = YES 
GROUP_GRAPHS   = YES 
UML_LOOK    = NO 
TEMPLATE_RELATIONS  = NO 
INCLUDE_GRAPH   = NO 
INCLUDED_BY_GRAPH  = NO 
CALL_GRAPH    = NO 
CALLER_GRAPH   = NO 
GRAPHICAL_HIERARCHY = YES 
DIRECTORY_GRAPH  = YES 
DOT_IMAGE_FORMAT  = png 
DOT_PATH    = 
DOTFILE_DIRS   = 
MSCFILE_DIRS   = 
DOT_GRAPH_MAX_NODES = 50 
MAX_DOT_GRAPH_DEPTH = 0 
DOT_TRANSPARENT  = NO 
DOT_MULTI_TARGETS  = NO 
GENERATE_LEGEND  = YES 
DOT_CLEANUP   = YES 


Editar:

He aquí un método de muestreo definición/declaración de que Doxygen se quejaba (Quité algunas cosas, como los tipos de parámetros, porque está protegido por IP. No hay macros utilizadas en cualquier lugar):

Algorithm.h

namespace CacheOpt { 
    class Algorithm { 
     protected: 
      /*..*/ 
     public: 
      virtual void init(/*..*/); 
      virtual std::string getName() = 0; 
    }; 
} //CacheOpt 

Algorithm.cpp

#include "Algorithm.h" 

void 
CacheOpt::Algorithm::init(/*..*/) { 
    /*..*/ 
} 

consigo este error aquí:

C:/Amir/Programming/Eclipse C++/CacheOptimization/src/Algorithm.cpp:11: warning: no uniquely matching class member found for void CacheOpt::Algorithm::init(/*..*/)

y ni siquiera identifica ¡tify Algorithm como clase! ¿Que puedo hacer?

+0

¿Cuáles son los Doxytags que provocan esta advertencia? ¿Qué tienes en tu Doxyfile? –

+0

@James Pegué mi archivo Doxy. ¿Qué son Doxytags? –

+0

¿La línea de código hace que la advertencia sea una llamada de función o un bloque de comentario? ¿Estás intentando asociar de forma remota un comentario con la etiqueta '\ function' (o '@ function')? –

Respuesta

8

causas posibles:

  • Si usted está tratando de asociar de forma remota con los comentarios de código mediante el uso de etiquetas como \function y \class, STOP. Poner los comentarios de la documentación inmediatamente antes de que el código en cuestión lo asocie automáticamente, es más probable que el mantenedor del código actualice el comentario cuando se modifique el código y elimine por completo la carga de actualizar las firmas de funciones en el comentario.

  • Un miembro de la clase con una implementación fuera de clase tiene una falta de coincidencia del código fuente entre las firmas de declaración y definición. De acuerdo con el estándar de C++, cosas como const de nivel superior no cambian la firma, pero doxygen funciona en el código fuente e intenta hacer coincidir cosas usando reglas diferentes del compilador. Los typedefs y macros también pueden desempeñar un papel, donde el compilador ve una definición correspondiente a la declaración, mientras que doxygen ve dos funciones separadas. Podría ser posible resolver esto diciendo a doxygen que expanda ciertas macros, o podría ser necesario modificar la declaración para que coincida exactamente con la definición.

  • Uso del operador de ámbito con espacios de nombres o varias veces en el mismo nombre. Algunos de los códigos de doxygen asumen que el operador de ámbito se usa con tipos en lugar de espacios de nombres. En su lugar, usar un bloque de espacio de nombres es una solución razonable. También he visto problemas donde el operador de resolución de alcance se usa más de una vez, doxygen puede mantener demasiados alcances cuando pasa al procesamiento del siguiente fragmento de código. Mantenga su código más simple, y doxygen le gustará más.

Para su código de ejemplo, esto puede funcionar mejor:

#include "Algorithm.h" 

namespace CacheOpt 
{ 
    void Algorithm::init(/*..*/) 
    { 
     /*..*/ 
    } 
} 

Si esto es una solución, no dude en usarlo, pero también file a bug report en the doxygen bug tracker.

+0

No estoy tratando de asociar nada y salvo una etiqueta '\ brief' en una clase no relacionada que funciona, no estoy usando ninguna etiqueta. –

+0

@Amir: Ok, aquí hay otra idea. Además, ¿se está produciendo la advertencia en una línea de comentarios o en un código fuente? –

+0

@Ben la advertencia está en el código fuente. –

Cuestiones relacionadas