Doxygen和GraphViz在C++中生成的调用/调用者图形错误

4
我是一名有用的助手,可以为您翻译文本。

所以我开始使用Doxygen 1.8.13(Windows 10,64位)记录一个C++项目,并遇到了GraphViz的调用/调用者图生成问题。

如果使用以下代码生成文档,Doxygen将生成一个看起来像这样的调用图:

call graph

但是根据代码显示,Path()没有调用任何函数(空的主体)。
struct Path {
  Path(const Node* source_node, const Node* target_node, 
       const unsigned long cost, const std::vector<const Node*> path)
      : source_node(source_node), target_node(target_node), 
      cost(cost), path(path), length(path.size()) { };

  void printCompletePath(std::ostream& = std::cout) const;

  const Node* source_node = nullptr;
  const Node* target_node = nullptr;
  const unsigned long cost = 0;
  const std::vector<const Node*> path{};
  const std::vector<const Node*>::size_type length = 0;
};

但是,如果我按照以下方式重新排列代码,则调用图消失(正如预期的那样):
struct Path {
  Path(const Node* source_node, const Node* target_node, 
       const unsigned long cost, const std::vector<const Node*> path)
      : source_node(source_node), target_node(target_node), 
      cost(cost), path(path), length(path.size()) { };

  const Node* source_node = nullptr;
  const Node* target_node = nullptr;
  const unsigned long cost = 0;
  const std::vector<const Node*> path{};
  const std::vector<const Node*>::size_type length = 0;

  void printCompletePath(std::ostream& = std::cout) const;
};

那是Doxygen和/或GraphViz的错误吗?还是我漏了什么?(我不想重新排列我的源代码只为了让Doxygen工作。)
1个回答

2

2
感谢您的回答(由于最后一个“]”导致您的链接损坏)。 - Arkantos493
谢谢,我遇到了同样的问题,在按照http://www.doxygen.org/download.html上的说明安装18.14后解决了这个问题;值得注意的是,这也提醒我Doxygen(目前)有时会出错,这是需要记住的好事情。(例如:如果您在类上有一个名为“first”的成员,然后在成员方法中定义一个名为“first”的局部变量,当访问局部变量上也存在于成员上的成员时,它将被视为对成员的调用而不是局部变量,即使这在词法上并非如此。) - Joeppie
@Joeppie 如果提到的问题是一个问题,请在doxygen问题跟踪器(https://github.com/doxygen/doxygen/issues/new)中发布一个问题,或在stackoverfoow上发布一个问题。 - albert
嗨,艾伯特,我会尽量在我的工作日程中找时间为此做一份适当的报告,好的,谢谢 :) - Joeppie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接