tomtom-international / asciidoxy

AsciiDoxy generates API documentation from Doxygen XML output to AsciiDoc.
Apache License 2.0
31 stars 10 forks source link

C++: Class-scope enums wrong include snippet #29

Closed jenswet closed 2 years ago

jenswet commented 3 years ago

The include path generated for class scope enums like

class MyClass {
  enum class MyEnum {
    HELLO
  }

is wrong.

MyEnum is correctly documented, but instead of

#include <MyClass.h>
enum class MyClass::MyEnum;

following is generated at the top of the documentation:

#include </absolute/path/toMyClass.h>
enum MyClass::MyEnum;
RobvanderMost-TomTom commented 3 years ago

I cannot reproduce this behavior. Could you provide me with the following:

jenswet commented 3 years ago

Hello,

I've created a minimal example (see attached zip including build output). Run doxygen and asciidoxy --spec-file packages.spec Main.adoc --multipage from doc-builder. Path of the spec file needs to be adjusted.

test.zip

I've extracted the details you requested for quicker reference: Doxyfile:

PROJECT_NAME      = "Test"
XML_OUTPUT        = ../docs/xml
HTML_OUTPUT        = ../docs/html
INPUT             = ../src
BUILTIN_STL_SUPPORT = YES
GENERATE_LATEX    = NO
GENERATE_MAN      = NO
GENERATE_RTF      = NO
CASE_SENSE_NAMES  = NO
GENERATE_HTML     = YES
GENERATE_XML      = YES
RECURSIVE         = YES
QUIET             = YES
JAVADOC_AUTOBRIEF = YES
EXTRACT_ALL          = YES
HIDE_UNDOC_RELATIONS = NO
COLLABORATION_GRAPH  = NO
HAVE_DOT             = YES
CLASS_GRAPH          = YES
UML_LOOK             = YES
UML_LIMIT_NUM_FIELDS = 50
TEMPLATE_RELATIONS   = YES
DOT_GRAPH_MAX_NODES  = 100
MAX_DOT_GRAPH_DEPTH  = 0
DOT_TRANSPARENT      = YES
WARN_IF_UNDOCUMENTED = YES
DOT_IMAGE_FORMAT = svg
MACRO_EXPANSION = YES
PREDEFINED = IN_DOXYGEN

Doxygen version: 1.8.18

XML containing the enum:

<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.18">
  <compounddef id="class_test" kind="class" language="C++" prot="public">
    <compoundname>Test</compoundname>
    <includes refid="_test_8h" local="no">Test.h</includes>
      <sectiondef kind="public-type">
      <memberdef kind="enum" id="class_test_1afecde416e0c6486d00a9f361e8382823" prot="public" static="no" strong="yes">
        <type></type>
        <name>TestEnum</name>
        <enumvalue id="class_test_1afecde416e0c6486d00a9f361e8382823a79ce8508b165746597039bd1dbeb6957" prot="public">
          <name>COOL</name>
          <briefdescription>
          </briefdescription>
          <detaileddescription>
          </detaileddescription>
        </enumvalue>
        <enumvalue id="class_test_1afecde416e0c6486d00a9f361e8382823aecc2e9c313faddb07e7da223c1dc5c3f" prot="public">
          <name>VALUE</name>
          <briefdescription>
          </briefdescription>
          <detaileddescription>
          </detaileddescription>
        </enumvalue>
        <briefdescription>
<para>test enum </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/jens/Uni/WTP/tp-testbed/test/src/Test.h" line="16" column="3" bodyfile="/Users/jens/Uni/WTP/tp-testbed/test/src/Test.h" bodystart="16" bodyend="16"/>
      </memberdef>
      </sectiondef>
    <briefdescription>
<para><ref refid="class_test" kindref="compound">Test</ref> class. </para>
    </briefdescription>
    <detaileddescription>
    </detaileddescription>
    <collaborationgraph>
      <node id="1">
        <label>Test</label>
        <link refid="class_test"/>
      </node>
    </collaborationgraph>
    <location file="/Users/jens/Uni/WTP/tp-testbed/test/src/Test.h" line="10" column="1" bodyfile="/Users/jens/Uni/WTP/tp-testbed/test/src/Test.h" bodystart="10" bodyend="17"/>
    <listofallmembers>
      <member refid="class_test_1afecde416e0c6486d00a9f361e8382823" prot="public" virt="non-virtual"><scope>Test</scope><name>TestEnum</name></member>
    </listofallmembers>
  </compounddef>
</doxygen>

Thanks a lot also for the other fixes already!

silvester747 commented 3 years ago

Sorry for the late response, but this is likely an issue with the Doxygen configuration. When Doxygen is not run in the same directory as the source code, you need to specify option STRIP_FROM_INC_PATH to correctly generate the relative paths.

jenswet commented 2 years ago

No problem, I fixed it by running a regex on the output.

The problem occured only for enums. All other paths, e.g. for header files where generated correctly. That's why I am not sure if it's a Doxygen problem.

Unfortunately I am currently not active in the project using asciidoxy anymore, so I can't verify it.

I will close the issue. If somebody else runs into the same we can reopen it.

Thanks!