After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 731363 - Callgraphs for C# only generated for methods inside the same class
Callgraphs for C# only generated for methods inside the same class
Status: RESOLVED FIXED
Product: doxygen
Classification: Other
Component: general
1.8.7
Other Windows
: Normal normal
: ---
Assigned To: Dimitri van Heesch
Dimitri van Heesch
Depends on:
Blocks:
 
 
Reported: 2014-06-07 15:38 UTC by Steffen
Modified: 2014-06-11 13:43 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Steffen 2014-06-07 15:38:31 UTC
Original question on Stackoverflow: http://stackoverflow.com/questions/24060934/doxygen-is-not-generating-call-graphs-for-most-methods-functions

In detail: When running doxygen on a C# solution/project with graphviz installed, doxygen does not generate callgraphs for calls the leave the scope of a class. This is not a graphviz bug, since doxygen doesn't even generate the files for those calls/methods for graphviz, which shows in the logfile.

Below is an easy testcode. In theory, there should be callgraphs showing that Class1.SomeOtherPublicMethod() is called by Class2.ConstructingClass1() and Class2.CallingAllPublicsOfClass1(), the last method also calls Class1.SomePublicMethod() which should show up as/inside a callgraph.

Instead neither of the methods inside Class2 has any callgraph and the logfile shows no "Generating caller graph for function [...]" entry for those methods.

public class Class1
{
    public void SomePublicMethod()
    {
        Refresh();
    }

    public void SomeOtherPublicMethod()
    {
        SomePublicMethod();
    }

    private void SomePrivateMethod()
    {
        SomeOtherPublicMethod();
        Refresh();
    }

    private static void Refresh()
    {
    }
}

public class Class2
{
    private Class1 test2;
    public void ConstructingClass1()
    {
        Class1 test = new Class1();
        test.SomeOtherPublicMethod();
        test2 = new Class1();
    }

    public void CallingAllPublicsOfClass1()
    {
        test2.SomeOtherPublicMethod();
        test2.SomePublicMethod();

    }
}
Comment 1 Steffen 2014-06-11 13:43:19 UTC
this was fixed by this commit https://github.com/doxygen/doxygen/commit/7edbf2b2e705eccc0d99cce86149228473bc7f3e