C ++源代码标记

时间:2009-12-19 08:55:24

标签: c++

有关标记和搜索c ++代码的质量方法的任何建议。我使用cscope / ctags作为大多数东西,但我发现它不足以找到一些工作中过于复杂的c ++代码。我已经开始从vim切换到Slickedit(这仍然不是完美的,但更好)用于浏览代码,但是我想回到vim。

我想要的是可以理解类成员范围的东西,例如,如果我搜索对其他类中存在相同成员名的类的成员的引用(并且可能是c ++代码之外)只会给我相关的参考资料。

我更喜欢与vim一起使用的东西,但任何开源软件包都可以自己创建一个插件。

任何建议表示赞赏,谢谢。

5 个答案:

答案 0 :(得分:30)

您确定使用正确的选项调用了ctags吗?对于C ++,我使用:

ctags --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++

这是文档对--c++-kinds=+p选项所说的内容:

  

解析C ++成员函数定义时(例如   “className :: function”),ctags无法确定是否为范围说明符   是类名或命名空间说明符,并始终将其列为类名   在扩展字段的范围部分中。另外,如果是C ++   函数是在类声明(通常情况)之外定义的   访问规范(即公共,受保护或私有)和   包含在函数中的实现信息(例如虚拟,纯虚拟)   为函数生成标记时,不知道声明   定义。然而,它将用于原型
  (例如--c ++ - types = + p)。

--fields=+iaS选项:

 a   Access (or export) of class members
 i   Inheritance information
 S   Signature of routine (e.g. prototype or parameter list)

--extra=+q选项:

  

因为默认情况下,ctags只为源文件中的单独标识符生成标记。如果指定--extra = + q选项,则ctags也会生成一个   第二个是类成员(数据和函数/方法)的类限定标记,格式为class :: member for C ++,以及表格class.method for Eiffel和Java。

--language-force=C++选项:

  

默认情况下,ctags会自动选择源文件的语言,忽略那些无法确定其语言的文件(请参阅上面的SOURCE FILES)。此选项强制指定的语言(不区分大小写;内置或用户定义)用于每个提供的文件,而不是根据其扩展名自动选择语言。此外,特殊值auto表示应自动选择语言(这有效地禁用了此选项)。

答案 1 :(得分:9)

使用doxygen这是一个很好的工具来浏览代码并查看类和成员之间的关系。该工具为源代码生成可点击的html输出,并为每种用法提供参考。您可以将其编译为可搜索的chm文件,或使用Web服务器在代码中搜索关键字。

答案 2 :(得分:1)

尝试GNU全球http://www.gnu.org/software/global/

它可以生成导航:源代码的网页以及支持vim和通常有用的命令行界面。

答案 3 :(得分:0)

我没有这方面的经验,但我使用Doxygen来浏览复杂项目的源代码。只需在打开所有设置的情况下运行它,它将生成调用图,被调用者图,引用和引用关系,模板实例等。输出格式包括HTML,LaTeX,CHM,POD

希望这有效!

答案 4 :(得分:0)

有一段时间,我为此目的混合了不同的工具。 Vi是一个很棒的编辑器,你可以在没有麻烦的情况下在远程计算机上运行它,但完成信息不是语义。

当面临一个大问题时,我倾向于使用Eclipse CDT或QTCreator,在这两种情况下,最新版本,一年前的版本都不是那么好。 QTCreator是一个轻量级工具,但我对其分析代码的能力印象深刻。 Eclipse CDT的重量比较重,但是我对这个界面有点习惯了,所以最后我倾向于使用它。

我正在处理的项目是在一个单独的沙箱中编译的,这两个IDE都不能使用,但是您可以获取存储库的副本以供分析,并将IDE用作浏览工具。

相关问题