【发布时间】:2010-07-19 09:19:31
【问题描述】:
熟悉大约 200K LOC 大小的 C# 代码库的最佳方法是什么?有没有可用的工具?
http://www.program-comprehension.org/似乎有一个为此目的而进行了很长时间的活动。
谢谢。
【问题讨论】:
标签: c# maintenance list-comprehension
熟悉大约 200K LOC 大小的 C# 代码库的最佳方法是什么?有没有可用的工具?
http://www.program-comprehension.org/似乎有一个为此目的而进行了很长时间的活动。
谢谢。
【问题讨论】:
标签: c# maintenance list-comprehension
CodeCity 有一个非常好的代码库可视化;它使用了一个很有意义的城市隐喻,以及有用地突出代码气味。
ndepend.com 非常适合概览。
Atomiq 具有很好的复制可视化效果。它解析您的代码库并通过轮子将其可视化,其中重复项由轮子中的辐条表示,您可以将鼠标悬停在每个轮子上以查看并排差异。
Nitriq 有一个很好的 LinqToCode 之类的东西来强制执行质量约束。作为构建过程的一部分,您可以从命令行运行这些规则。
ReSharper's 导航功能对于找出什么用什么是无价的。 Find-Usages 非常有用。对于探索代码库,Alt+F7 是您的朋友,因为它还会保持打开您运行过的查询的历史记录,因此您可以在其中来回跳转以保持您的位置。
Visual Studio 会记录光标位置/编辑器点,并使用 ctrl+- 和 ctrl+shift+- 在它们之间前后移动光标。
如果您决定使用常规注释(例如 // NOTE: blah),您可以为自己插入注释,然后使用 ReSharper 的 TODO Explorer 查找所有此类 cmets(以及您可能定义的其他模式),然后导航到他们。例如,我们目前将其用于代码审查。
Visual Studio(至少专业版)可以生成类图;多选文件,然后右键单击然后创建一个类图。不过,坦率地说,我发现这些作为涂鸦而不是人工制品更有用,以保持最新并与代码库同步。它会告诉你继承,但不会很清楚地显示implements-interface,甚至不会尝试显示collects或compose-by。
【讨论】:
正如@Peter Mounce 所建议的那样,NDepend 很好,您可以免费将其用于非商业用途。您会获得很多不错的可视化效果,例如依赖关系图,可帮助您了解正在发生的事情。
Visual Studio 2010 还包含 Architecture Explorer 形式的类似工具,尽管我认为您需要添加架构(或更高版本)才能获得它。但它是交互式的,可让您深入了解有用的结构。
【讨论】:
我使用SonarQube 进行代码可视化。它从各个方面显示代码,在使用 SonarQube 仪表板的 15-20 分钟内,您将立即了解代码的核心部分。不仅如此,它还显示了代码的哪些部分是复杂的,以及您可以在哪些地方进行攻击以快速获得简化代码的胜利。
【讨论】: