阅读开源项目的源代码是提升本身编程能力的好方法,而有一个好的源代码阅读工具无疑可以让你在阅读源代码时事半功倍。以前找过很多源代码阅读工具,像SourceInsight、sourcenav、scitools等,可是这些工具要么是收费的,要么只有windows版本。sourcenav虽然是开源的,可是我的以为不是很好用。直到最近毕设时老师要求用doxygen生成代码文档,在使用doxygen的过程当中,忽然发现这个东西配合上浏览器其实就是一个很好的源码阅读工具,因此给你们推荐一下。html
废话很少说,相信你们都知道doxygen是一个用来生成源码文档的工具,很多有名的开源项目想opencv,boost都是用它来生成文档的。虽然正常要生成一份详细的文档须要咱们在代码中按照必定格式写注释,可是doxygen也可以从没有这些注释的源码中抽取出函数定义、类定义、变量定义、宏定义等信息,而且可以提供交叉引用,为咱们阅读代码提供方便。我这里用一个开源项目Google Protobuf来作一下演示。编程
首先按照安装教程(http://www.stack.nl/~dimitri/doxygen/manual/install.html)安装好doxygen。windows
进入存放项目的目录,运行doxygen -g命令,生成Doxygen配置文件Doxyfile浏览器
Doxygen配置文件默认名为Doxyfile,这里面是一些格式为 KEY = VALUE的键值配置属性,以下图。每个属性前都有相应的说明,doxygen会根据这些配置属性来生成文档。编辑器
咱们要编辑器打开Doxyfile后设置以下属性 (由于文件比较大,须要使用编辑器的查找功能找到这些属性。函数
INPUT = protobuf-2.5.0/src (设置项目源代码目录的路径,相对于Doxyfile的位置) PROJECT_NAME = "ProtoBuf" (项目名默认为My Project) OUTPUT_DIRECOTRY = doc (设置文档输出路径,相对于Doxyfile的位置) RECURSIVE = YES (设置递归查找全部子目录,默认NO只查找当前目录) EXTRACT_ALL = YES (设置抽取代码中全部实体,默认NO只抽取有doxygen注释的实体) SOURCE_BROWSER = YES (生成交叉引用) INLINE_SOURCES = YES (将源代码包含进文档,默认NO只包含声明,不包含定义) OUTPUT_LANGUAGE = Chinese (设置文档语言为中文)
设置后保存,运行doxygen命令生成文档。工具
能够看到当前目录多除了doc/html,和doc/latex目录,分别包含了html格式和latex格式的文档。咱们在doc/html目录下用浏览器打开index.html。能够看到代码实体按命名空间,类,文件三种方式组织。其中类能够查看类列表,类索引,类继承关系,和类成员等。google
咱们选择google::protobuf::internal::ExtensionFinder类看看具体信息。spa
能够看到类继承关系图,成员函数,详细描述下还有成员函数的函数原型和跳转到函数定义的连接(截图比较大就不发了)。code
其中蓝色的连接点击后可跳转到函数的具体实现处。
能够看到在查看具体实现时,全部的蓝色连接都表明了项目中定义的实体,如函数,类,成员等。鼠标悬浮上能够看到简要信息,也能够点击跳转到详细信息。这样在看源码时遇到一个不清楚的东西就可以随时看到它的定义。再配合上浏览器原有的返回,跳转,在新标签打开页面等功能,阅读源码就变得十分方便了。
好了,个人介绍就到这,有兴趣的朋友能够本身试一试,谢谢~