【问题标题】:Tool to find all instances of a class查找类的所有实例的工具
【发布时间】:2018-12-16 22:19:07
【问题描述】:

我正在从事一个 C++ 项目,其中模块旨在组合成一个小组以服务于特定目的(在某种处理管道中)。

有时很难知道任何更改的影响,因为我们凭直觉甚至不知道使用我们的一个模块的所有地方。

我知道我可以在文件中搜索来查找类的所有实例,但是有没有一种工具可以分析我的源代码并给我每个类使用了多少实例的列表?

【问题讨论】:

  • 我不太明白您要做什么:for(...) {A* = new A;}:有多少实例...
  • 我的目标是能够了解变更的潜在影响。就我的目的而言,这只能算作一个。我想我感兴趣的是有多少其他模块实际使用 A 类。
  • 如果 B 继承自 A,想必你也想找到 B 的实例?
  • 我希望您也想知道在其他模块中在哪里使用了 A(B、C、...)。

标签: c++ code-analysis


【解决方案1】:

但是我可能没有正确理解您的问题,但我相信 doxygen 可以做到这一点:http://www.doxygen.nl/

您将能够看到一切是如何被使用和调用的。它将为您提供调用其他类的类,您的代码的整个层次结构。

【讨论】:

  • 我以前用过 doxygen,但不知道它可以做到这一点......我会再检查一下。
  • 如果 B 继承自 A,grep 将找不到 B。
  • ...如果有多个名为 A 的类(比如说,在不同的命名空间中),那么 grep 会产生很多误报。
【解决方案2】:

如果通过代码的所有路径都已知(实际上不太可能),那么在类构造函数中放置 printf/cout 就可以很好地完成这项工作。

否则,我会部署find-and-grep 解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-05
    • 1970-01-01
    • 2021-08-05
    • 2021-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多