【问题标题】:finding execution flow in a huge java code base在庞大的 Java 代码库中查找执行流程
【发布时间】:2012-06-13 19:10:51
【问题描述】:

我试图在不是我编写的大型 Java 代码库中找到执行流程。我已经搜索了使这成为可能的工具(JSonde、JTrace、Java Call Tracert、JavacallTracer),但问题是它们都应该与单个 java/jar/class 文件一起使用。 我试图理解的代码是用 Ant 构建的,并且有数百个 jars。因此,它使用 shell 脚本运行。我不知道如何在这段代码中使用这些工具。

非常感谢您的帮助。

【问题讨论】:

  • 一个大型代码库可以有数十亿条不同的路径。您希望从这样的工具中学到什么?理解代码没有灵丹妙药。您必须阅读它,并在必要时在 Eclipse 等 IDE 调试器中跟踪它。
  • 很难找到“执行流程”。您要完成的实际任务是什么? Eclipse 内置了您需要的大多数工具。您需要图形表示吗?如果是,具体应该可视化什么?
  • 您说(回答 Mark O'Conner),“我想做的是对代码进行一些更改”。在什么条件下?你想如何进行更改[每个人都想更改代码,为什么你的需要特别]?手动?自动地?您具体想从“控制流”中得到什么来使这成为可能? (您建议使用序列图。那是您真正想要的吗?那是您唯一想要的吗?)

标签: java ant reverse-engineering sequence-diagram


【解决方案1】:

我知道,这是一个老问题,但现在我找到了解决方案,如果其他人搜索相同的内容,我将其放在这里:http://findtheflow.io/#gettingstarted

【讨论】:

    【解决方案2】:

    我认为您应该考虑的是代码覆盖工具。这将报告您的代码的哪些部分已执行,哪些未执行。有几个这样的工具需要考虑。 Jacoco 是一个新兴的宠儿,与 Emma Eclipse 插件相关联。

    关于代码覆盖需要记住的一点是它需要由某些东西驱动。通常这是通过运行代码的测试(单元或集成)来完成的。

    最后,一旦您熟悉了如何启用代码覆盖,您还可以考虑将其结果上传并存档到 Sonar

    【讨论】:

    • 我想做的是对代码进行一些更改。我已经多次阅读代码,但这还不够。代码可以导入Eclipse,但不能在Eclipse中执行(原来是用命令行构建的)。我从代码中生成了 UML 类图。不过,序列图对于理解流程会更有用。
    • 我认为不可能做你想做的事。即使您有一个启用代码跟踪的工具(例如通过启用 Java 的检测 API),您仍然需要一些东西来驱动您的代码。最明显的机制是自动化测试套件。正如 Jim Garrison 指出的那样,通过您的代码有很多可能的执行路径。 (遵循哪一个取决于程序是如何执行的)。最后在实践中,代码覆盖率报告是一种更标准的执行分析形式
    • @MarkO'Connor:动态分析没有得到他的控制流数据。它让他执行代码,也许是调用树中的一个分支。他要求进行静态分析。
    • @IraBaxter 我了解他在寻找什么,但我不知道有什么工具可以满足要求。你?我试图提供选项。
    • 直到他清楚他的问题到底是什么,不。如果它真的是关于控制流,那么是的,我可能知道替代方案。在我操之过急之前,我希望他更清楚自己的需求。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 2015-07-06
    • 2014-11-30
    • 1970-01-01
    • 2010-10-28
    相关资源
    最近更新 更多