【问题标题】:Good code visualization / refactoring tools for C++?好的 C++ 代码可视化/重构工具?
【发布时间】:2011-02-21 01:07:18
【问题描述】:

我发现自己最近在工作中遇到了很多相当大、复杂的代码库,我被要求审查或重构或两者兼而有之。当代码高度并发、大量使用模板(尤其是静态多态性)并且具有依赖于回调/信号/条件变量/等的逻辑时,这可能会非常耗时。

在 C++ 时期有什么好的可视化工具,其中有没有可以很好地与“高级”C++ 特性配合使用的工具?任何事情都可能比我现在的方法更好,这基本上是笔+纸或单步调试器。调试器方法可以很好地跟踪特定的代码路径,但不适合在进行严重重构时查看您真正需要的全局。

编辑:我应该提一下,Visual Studio 插件对我没有多大帮助,因为我们的东西大多仅适用于 Linux。

【问题讨论】:

    标签: c++ refactoring visualization


    【解决方案1】:

    您可以使用 Doxygen 来帮助您入门;一旦完成了简单的部分(类布局,层次结构,...),您需要编写无法通过 doxygen 等工具轻松处理的软件的其余部分。

    祝你好运。

    M.

    【讨论】:

      【解决方案2】:

      可视化:

      我不知道 UML 世界之外发生了什么,但其中可用的东西根本不能对现代的、基于模板的 C++ 进行逆向工程。充其量,你会得到简单的类图。

      重构:

      Mozilla 创建了 dehydra / Pork 工具来分析和重构他们的 C++ 源代码,从而用更好的习惯用法改变他们旧式的 XPCOM 和内存管理。它不依赖于可视化工具,而是使用模式匹配和 JavaScript。我自己没有尝试过,很幸运没有处于需要它的位置。

      【讨论】:

        【解决方案3】:

        【讨论】:

        • 这是我目前能找到的最接近有用的。真正很棒的是一个工具,它可以生成最好的可视化,然后让你有能力自己填补空白。唉,似乎还没有这样的工具(目前)。
        • 在任何地方都看不到这个,最后一条评论来自 2010 年:“插件仍在操场上”。
        【解决方案4】:

        没有。不,不。您需要手动记录和绘制代码库;应该已经至少部分完成的事情。

        有一个重构工具,或者至少声称是,用于 xemacs。 VS 有一个,但效果不佳,只知道 5-10 次重构。 xemacs 的价格是 250 美元或其他东西。不知道有一个用于 Eclipse。您很可能需要手动进行重构。

        【讨论】:

        • +1 用于 bashing 代码生成。你不需要一个自动工具来操纵代码说// autogenerated: do not touch
        【解决方案5】:

        我不知道有一个 C++ 重构工具,它甚至与你可以找到的 Java 重构工具处于同一联盟。 Eclipse/CTD 有一些小的重构(提取方法,公开/私有/getter+setter),仅此而已。

        仍然是 Eclipse/CDT 是一个很好的工具,可以概览庞大的代码库。代码导航功能(显示引用、显示定义、显示声明、类层次结构等)是我在 C/C++ 编辑器中看到的最好的。

        【讨论】:

          【解决方案6】:

          我无法保证,但有 CDT Refactoring Project
          edit: 该页面看起来已过时。也许其他人可以证明 CDT 重构的状态?

          【讨论】:

            【解决方案7】:

            DMS Software Reengineering Toolkit 是由语言定义参数化的程序转换引擎。它有一个完整的 C++ 前端,并已被用于对用 C++ 编码的软件系统进行大规模重构。

            参见 Akers, R, Baxter, I., Mehlich, M. , Ellis, B. , Luecke, K.,案例研究:通过自动程序转换、信息和软件技术重新设计 C++ 组件模型 49(3) :275-291 2007 讨论 DMS 以及如何将其应用于 C++ 模块以支持航空电子软件。

            【讨论】:

              猜你喜欢
              • 2012-04-09
              • 2010-10-04
              • 2010-11-19
              • 1970-01-01
              • 1970-01-01
              • 2016-05-25
              • 2011-11-09
              • 2018-09-13
              • 1970-01-01
              相关资源
              最近更新 更多