C++源代码标记

Jef*_*mas 19 c++

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

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

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

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

Ton*_*vel 32

你确定你用正确的选项打电话给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)
Run Code Online (Sandbox Code Playgroud)

--extra=+q选项:

因为,默认情况下,ctags仅为源文件中找到的单独标识符生成标记.如果指定--extra = + q选项,那么ctags还将为表格class :: member for C++和表单类中的每个类成员(数据和函数/方法)生成第二个类限定标记. .Eiffel和Java的方法.

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

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

  • 很好的答案,即使这些天我使用更多的C ++,多年来我一直在使用相同的旧ctags命令行。猜猜我从来没有想过阅读手册页,看看是否需要为C ++添加更多选项。很有帮助。 (2认同)
  • `--extra` 选项现已过时;应该使用 `--extras` 来代替。 (2认同)

Alo*_*lon 9

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


blw*_*y10 0

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

希望这有效!