New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cross-project inheritance using tags does not work (Origin: bugzilla #624095) #3841

Closed
doxygen opened this Issue Jul 2, 2018 · 0 comments

Comments

Projects
None yet
1 participant
@doxygen
Owner

doxygen commented Jul 2, 2018

status RESOLVED severity normal in component general for ---
Reported in version 1.6.3 on platform Other
Assigned to: Dimitri van Heesch

Original attachment names and IDs:

On 2010-07-11 11:32:27 +0000, Roger Leigh wrote:

Created attachment 165674
Simple testcase

I am documenting different modules separately using doxygen, generating tagfiles for each. I then use TAGFILES to reference modules being used by other modules. Earlier versions of doxygen correctly documented inheritance (with full inheritance diagrams) as well as inheriting documentation for virtual functions which were documented in the base class in the other module.

Versions 1.6.3 (Debian) and 1.7.1 (self-built) no longer appear to do this. The inheritance diagrams are missing the parts of the inheritance hierarchy in the other module, and the documentation for virtual functions is missing.

I have attached a simple testcase containing just two classes (one from each module), as well as the doxygen configuration for each. sbuild.dox is the first module generating sbuild.tag. schroot.dox is the dependent module, using that tag. You'll see that the sbuild::session class in the first is not shown as a parent of dchroot::session_base in the second, and is missing all of the documentation. I've also included all.dox which combines both modules to show it does work correctly in this case.

The full (non test case) code is available from:
http://git.debian.org/?p=buildd-tools/schroot.git;a=shortlog;h=refs/heads/schroot-1.4
http://git.debian.org/?p=buildd-tools/schroot.git;a=tree;h=refs/heads/schroot-1.4;hb=refs/heads/schroot-1.4
doxygen configuration in http://git.debian.org/?p=buildd-tools/schroot.git;a=tree;f=doc;h=SHA: bcff57a67ddfb54b097dbce2c23f6b1f845f03e1;hb=refs/heads/schroot-1.4

Best regards,
Roger Leigh

On 2010-07-11 14:21:59 +0000, Dimitri van Heesch wrote:

Hi Roger,

The problem is that the namespace in sbuild in not documented and as a result does not appear in the tag file. When doxygen looks for the base class, it does not find it because it cannot find its namespace.

I'll correct this, but as a workaround I suggest to document the namespace.

On 2010-07-11 15:30:40 +0000, Roger Leigh wrote:

Thanks for the quick response! I can confirm that documenting the namespace does fix the issue of the missing parent in the inheritance diagrams. However, I still don't see the virtual functions documented. If I combine all the sources into a single doxygen file, I do see correct documentation of the virtual functions, so AFAICT there's still something else not quite right in this situation (possibly something else not correctly documented, though I don't see anything related in the warnings).

Regards,
Roger

On 2010-07-11 15:39:26 +0000, Roger Leigh wrote:

Just as an additional suggestion, warning about undocumented namespaces in addition to other undocumented items would also be most helpful!

Regards,
Roger

On 2010-07-11 16:35:13 +0000, Roger Leigh wrote:

Possibly also related to the virtual functions: If I have a static class member:
namespace sbuild
{
template
class error : public error_base
{
�
private:
/// Mapping between error code and string.
static map_type error_strings;
�
};
}

The error_strings needs defining for each new instance of the templated class. Such as:

template<>
sbuild::error<main_base::error_code>::map_type
sbuild::error<main_base::error_code>::error_strings
(init_errors,
init_errors + (sizeof(init_errors) / sizeof(init_errors[0])));

If this is in the same (sbuild) namespace, it is documented correctly. If it's in another namespace and uses explicit namespaces as in the above example, doxygen complains about it:

/home/rleigh/schroot/bin/schroot/schroot-main-base.cc:77: Warning: Member error_strings(init_errors, init_errors+(sizeof(init_errors)/sizeof(init_errors[0]))) (function) of class sbuild::error is not documented.
/home/rleigh/schroot/bin/schroot-listmounts/schroot-listmounts-main.cc:66: Warning: Member error_strings(init_errors, init_errors+(sizeof(init_errors)/sizeof(init_errors[0]))) (function) of class sbuild::error is not documented.
/home/rleigh/schroot/bin/schroot-releaselock/schroot-releaselock-main.cc:67: Warning: Member error_strings(init_errors, init_errors+(sizeof(init_errors)/sizeof(init_errors[0]))) (function) of class sbuild::error is not documented.

Regards,
Roger

On 2010-10-09 08:19:24 +0000, Dimitri van Heesch wrote:

This bug was previously marked ASSIGNED, which means it should be fixed in
doxygen version 1.7.2. Please verify if this is indeed the case. Reopen the
bug if you think it is not fixed and please include any additional information
that you think can be relevant.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment