Source-Navigator 4.2 版本

作者:Daniel Lazenby
Source-Navigator Version 4.2
Source-Navigator 4.2 版本
  • 制造商:Cygnus Solutions

  • 电子邮件:info@cygnus.com

  • 网址: http://www.cygnus.com/

  • 价格:开发者版 149.00 美元,企业版 499.00 美元

  • 评测者:Daniel Lazenby

无论您是创建急需实用程序的个人开发者,还是负责团队开发下一代 Linux 杀手级应用的团队,Cygnus 的 Source-Navigator 都能为您的软件项目增值。Source-Navigator (SN) 是一款可扩展的源代码编辑器、组织器和分析工具。SN 可用于创建、维护、重构或重用代码,理解复杂的应用程序代码关系,或协助源代码配置管理。

这款软件工具至少可以通过两种不同的方式使用。假设您刚刚接手维护一个拥有数千行代码的遗留应用程序。该应用程序的文档很少,源代码文档也很少。如何进行代码考古来了解应用程序的结构、功能、包含关系和其他代码相互依赖性?将其转换为 SN 项目可能有助于为理解代码奠定基础。也许您已被分配管理下一代 Linux 杀手级应用的开发任务。这项任务包括确保代码重用、跟踪修改、实施源代码版本控制以及使开发团队专注于他们负责的开发部分。SN 可以用来实现这些目标。在接下来的几段中,我将重点介绍可用于实现这些目标的各种工具、浏览器和编辑器。

Source-Navigator Version 4.2

图 1. 符号浏览器

Source-Navigator 的主要工作环境分为符号浏览器和编辑器窗口。我将符号浏览器视为概览工具(见图 1)。每个项目都以符号浏览器打开。这提供了项目目录、文件、方法、函数和类的列表。可以使用此浏览器显示几乎任何符号或源文件的列表。符号列表可以设置为显示单个符号或任何符号组合。通常,符号信息以两列(或更多列)列表的形式呈现。

注意最右边的四个工具栏按钮。从左到右分别标记为:类、方法、函数和文件。选择“文件”按钮将列出所有应用程序的文件、文件类型和位置。选择“方法”按钮将列出所有方法、它们的类、类型和关联的文件位置。“类”和“函数”按钮提供类似的类和函数信息列表。最左边的四个按钮提供对层次结构、类、交叉引用和包含浏览器的超链接访问。单击按钮,这些浏览器将提供有关所选符号的更多详细信息。

我用一些从未见过的 C++ 代码创建了一个软件项目。在符号浏览器上花了几分钟后,我对应用程序所属的类、方法、函数和文件有了一些感觉。在使用这个工具花费更多时间后,很明显哪些类、方法和函数包含在哪个(些)文件中。了解了这些关系后,我发现自己想打印出符号浏览器的一些列表。不幸的是,此版本未提供从符号浏览器打印的功能。

深入研究应用程序细节需要用于剖析和映射特定代码、文件和符号关系的工具。这些工具包含在编辑器窗口中。此窗口是层次结构、类、交叉引用和包含浏览器的所在地。编辑器窗口浏览器通常显示为单个窗口。如果需要,可以拆分浏览器窗口以在同一窗口中显示两个浏览器。除了四个浏览器外,编辑器窗口还包含两个文本模式搜索工具和一个编辑器。编辑器窗口还包括查看先前选择的内容、关系、文件或符号的功能。这些“视图”可以通过项目历史记录列表访问。项目历史记录列表是按工具维护的。编辑器窗口还可用于设置项目、添加和删除源文件或目录,以及组织和分段源文件视图。编辑器窗口及其主要部分如图 2 所示。

Source-Navigator Version 4.2

图 2. 编辑器窗口

理解应用程序涉及将软件分解为可管理的块。这些块可以采用文件、对象、代码符号、编码结构或算法的形式。通常,这些应用程序组件之间存在某种预定的相互关系。交叉引用浏览器提供了一种以分层树格式图形化检查这些关系的方法。例如,选择一个函数,然后选择交叉引用浏览器 (X-Ref) 将显示一个函数调用树。此树可以提供一个视角,显示树中较高的调用函数和树中较低的被调用函数。选择 X-Ref 浏览器和一个方法会生成类似的树,说明与该方法相关的变量、方法、类和函数。当 X-Ref 与类一起使用时,也会显示类似的分层树。我认为 SN 的一个更好的属性是它能够图解关系。

某些语言允许将其他文件包含为当前文件的一部分。检查文件的 #include 语句可以向后查看哪些文件包含在所选文件中。文件很少提供包含它的文件列表。包含浏览器提供了各种包含文件关系的前向和后向图形图片。此浏览器显示所选文件中包含哪些文件。它还显示哪些文件包含所选文件。此浏览器可以说明包含关系,范围从简单的一对一关系到复杂的多对多关系。

类和对象之间的继承关系显示在层次结构浏览器中。与 X-Ref 浏览器一样,此信息以分层树的形式显示。在此浏览器中可以选择三个分层视图。一个视图显示整个类层次结构。有一个视图仅显示所选类及其相关的子类和超类。另一个视图仅显示所选类和相关的超类。

类浏览器可以与面向对象语言或传统语言(C、COBOL 等)一起使用。此浏览器使用两个窗口窗格来显示信息。“继承树”窗格显示为浏览选择的类与任何相关的基类或超类之间的关系。“成员列表”窗格列出“继承树”窗格中显示的类的成员。在“树”窗格中选择或取消选择类名称将修改成员列表中显示的成员。此浏览器中包含成员过滤器。成员列表过滤器提供了一种显示符合特定条件的成员的方法。例如,过滤器可用于仅列出从基类重写的方法。

包含的编辑器提供典型的编辑功能,以及其他几项服务。符号加速器下拉列表包含整个应用程序中的所有符号,或者仅包含打开文件中的符号。从列表中选择一个符号会将编辑器前进到相应的文件并突出显示该符号。SN 的超链接功能使所有其他浏览器自动准备好显示同一符号的信息。如果需要,可以告诉 SN 使用您喜欢的编辑器而不是默认编辑器。

SN 包含另外两个功能。一个功能是它能够与调试和编程工具接口。另一个功能是版本控制支持。“工具”菜单提供“Make”和“调试器”选项。现有项目的 Makefile 可以从 SN 中运行。SN Make 对话框包含一个 make 命令字段、一个工作目录字段和一个输出窗口。make 运行的输出显示在此窗口中。此窗口中显示的任何编译器错误消息都可用于打开 SN 编辑器。编辑器打开后,光标将放置在包含错误的行上。命令行编译器可以与 SN 一起使用。“程序员参考指南”提供了有关如何集成命令行编译器的信息。

GNU 调试器由 SN 用于调试程序。选择调试器菜单选项将显示“要调试的程序”对话框。输入程序名称和工作目录后,即可启动调试器。如果您安装了正确版本的 GDB 调试器,当出现问题时,SN 将能够打开并显示源文件。

管理软件项目通常涉及修订和版本控制。通过版本控制,可以选择管理版本、版本历史记录、标签和相关文档。SN 的“编辑”菜单提供了一个图形界面,用于访问四个外部版本控制系统。这四个产品中的每一个都已与 SN 集成。您必须在平台上安装其中一个,SN 才能使用它。在非商业方面,您可以选择修订控制系统 (RCS)、并发版本系统 (CVS) 或源代码控制系统 (SCCS)。第四个选择是名为 ClearCase 的商业版本控制产品。所有系统都提供基本的检出锁定、检出不锁定、检入、检入锁定、更改描述、文件比较和放弃更改功能。我不熟悉 ClearCase。由于它是商业产品,因此它可能具有其他功能。

分布式环境中的版本控制意味着所有开发人员最终都在检入和检出同一个代码存储库中的代码。有几种共享文件系统的技术可用。在我当前的设置中,我无法审查产品在共享版本控制环境中的行为方式。

打印肯定需要 PostScript 打印机。根据打印机/绘图仪的功能,SN 可以在多种纸张尺寸上打印。支持的纸张尺寸范围从 8.5 x 11 英寸到 42 x 59.5 英寸。“打印”对话框提供了几个附加选项,包括图像缩放、分页、纸张方向和打印颜色。您的打印机的功能将决定您可以使用哪些选项。

安装

SN 开发者版和企业版至少在 Sun Solaris 2.5.1、SuSE 6.0/6.1 或 Red Hat 6.0 上受支持。它也支持运行 NT 4.0 和 Windows 95/98 的 Wintel 平台。企业版也支持 HP-UX 10.20。文献表明 SN 应该可以在 Caldera Linux 发行版上运行。本次评测中使用的平台使用了 Caldera v1.3 和 v2.2 Linux 发行版。

默认情况下,产品安装在安装程序的 ID 下,位于安装程序的根目录中。提供了一个选项,可以根据您的产品安装约定安装 Source-Navigator 产品。

Source-Navigator 安装起来非常容易。首先,从 X 环境中启动安装脚本。接下来,输入所需的目标安装目录,并确定问题报告将如何发送给 Cygnus。在完成上述选择后,系统会提供安装演示项目的选项。可以选择安装六个演示项目中的任意一个或全部。本教程基于 C++ 演示项目。对话框会随时通知您安装进度。

产品首次安装时没有问题。在 Caldera v2.2 安装中,某些子目录和文件的 UID 和 GID 号码在我的系统上不存在。为了纠正这个问题,我为子目录和文件分配了有效的用户和组 ID。

SN 使用网络浮动许可证方案来控制产品访问。我发现安装许可证管理器资产密钥不像安装指南中指示的那样无缝。我必须手动创建许可证文件以包含资产密钥信息。

在 Caldera v1.3 下运行许可证管理器非常简单。在 Caldera v2.2 下则不太顺利。许可证管理器想要在 /usr/tmp 中放置一个锁定文件。我的 v2.2 安装中不存在此目录。我选择在 /usr/tmp 和 /tmp 之间创建一个软链接。此链接允许许可证管理器创建其锁定文件。顺便说一句,许可证管理器文档不建议在 root ID 下运行许可证管理器。

文档和支持

Source-Navigator 附带 用户指南程序员参考指南。《用户指南》清楚地介绍了安装说明,包含有关创建项目的教程,并如实描述了每个 Source-Navigator 浏览器。《程序员指南》用作自定义和扩展 Source-Navigator 功能的参考。这些手册中的描述和叙述均附有屏幕截图。在适当的情况下,手册中包含示例代码。

安装指南》清楚地介绍了 UNIX 系统内存、磁盘、X11 和打印机要求。还给出了可比较的 Wintel 要求。我发现 UNIX 内存利用率的示例(用于启动、项目创建后和每个打开的浏览器)很有参考价值。《安装指南》还提供了估算每个项目磁盘存储要求的经验法则。默认目录表几乎毫无疑问地说明了正在创建哪些目录以及正在将哪种类型的文件放入目录中。

Cygnus 使用 GLOBEtrotter Software 的 FLEXlm 来管理 SN 许可证。《用户指南》几乎不包含有关启动、停止或检查 FLEXlm 当前状态的信息。我能找到的有关启动此许可证管理器的唯一参考资料是在资产密钥电子邮件中。如果您在命令行输入 lmutil 而不带任何选项,则会显示可用命令和选项的列表。有关 FLEXlm 许可证管理器的更多信息,请访问 http://www.globetrotter.com/ 网站;在那里您将找到 FLEXlm FAQ 和用户手册。

有一个 17 页的教程介绍了项目创建以及每个浏览器和编辑器的基本用法。《用户指南》手册部分提供了有关教程中涵盖的每个项目的更多详细信息。我发现本教程值得花费时间。

软件开发工具包

开箱即用,SN 支持七种语言:C、C++、Tcl、[incr tcl]、FORTRAN、COBOL 和汇编。基本产品中包含 SDK。使用包含的 SDK,可以修改图形用户界面,编写新的解析器以合并其他语言,构建应用程序以访问 SN 项目数据库,以及实现 SN 和外部应用程序之间的通信。

两个版本

开发者版专为单个开发者设计。此版本可以容纳中小型项目。根据 Cygnus 文献,中小型项目少于 100,000 行源代码。Source-Navigator 企业版支持工作组和大型项目。代码行数超过 100,000 行的项目被认为是大型项目。最大项目大小似乎仅受磁盘空间和系统内存的限制。

结论

无论是进行代码考古还是构建下一代杀手级应用程序,这都是每个工具包中都应该包含的产品之一。它可以为软件开发工作提供实质性的支持、结构和进步。

顺便说一句,可以从 Cygnus 网站获得功能齐全的 SN 评估副本。希望我已经激起了您足够的兴趣,可以下载副本并在评估期内使用它。很快就能看到可能性。

Daniel Lazenby (d.lazenby@worldnet.att.net) 于 1983 年首次接触 UNIX,并于 1994 年发现了 Linux。

加载 Disqus 评论