C ++源代码标记

问题描述 投票:17回答:5

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

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

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

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

c++
5个回答
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 ++和表单类中的每个类成员(数据和函数/方法)生成第二个类限定标记。 .Eiffel和Java的方法。

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

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


9
投票

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


1
投票

试试GNU global http://www.gnu.org/software/global/

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


0
投票

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

希望这个有效!


0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.