在源码树中获取 boost:shared_ptr 的 get 方法的所有使用列表
Posted
技术标签:
【中文标题】在源码树中获取 boost:shared_ptr 的 get 方法的所有使用列表【英文标题】:Get a list of all uses of boost:shared_ptr's get method in a source tree 【发布时间】:2013-01-11 19:04:02 【问题描述】:我正在尝试在一个大型项目中查找所有使用 boost::shared 的“get”方法的案例——其中某些内容并不具体。
问题是一些程序员在某些时候马虎并开始使用裸指针,使用 foo.get() 来控制它们。所以我的目标是找到所有使用这个 get 方法来审查和修复代码的地方。
我曾考虑修改 shared_ptr boost 标头以注释掉该方法并使用“-k”选项运行 make 以发现所有此类位置,但也许有更优雅的方法来做到这一点?
【问题讨论】:
Ctrl+F, ".get()",<enter>
.
+1 先评论简单的解决方案。
我怀疑“大项目”意味着“搜索 'get()' 是大量误报”。
+1 Drew。不仅 Ctrl+F 甚至是一个选项,find 和 grep 会给你很多错误的 +ves。 get 是最常用的方法名。你越是试图消除错误的+ve,你就会越花哨,直到你对自己说。 “伙计!我可以用这么多的努力编写一个 c++ 解析器”
Ctrl+F 不会在目录结构中搜索,并且不会对调用 get 方法的对象的类型做任何聪明的事情......老实说,该评论不值得一个 + 1(有见地)但 -1(巨魔)!
【参考方案1】:
我喜欢你的想法。听起来您担心修改系统头文件,这是一种错误的形式。
这是一个更优雅的想法。将头文件复制到 /tmp/tmpinclude,然后添加 CFLAG -I/tmp/tmpinclude 并确保这是第一个 -I CFlag。现在您的 hack 已包含在您的用户/沙盒空间中。
【讨论】:
以上是关于在源码树中获取 boost:shared_ptr 的 get 方法的所有使用列表的主要内容,如果未能解决你的问题,请参考以下文章
使用带有 boost::shared_ptr 的基类在地图中查找