如何阅读mongodb源代码-1

举报
eharry 发表于 2018/03/18 16:18:54 2018/03/18
【摘要】 在上一篇帖子中,详细描述了如何下载mongodb源代码,如果没有看, 可以参考如下链接 http://forum.huaweicloud.com/thread-7359-1-1-101.html 那么在这一篇帖子中,就详细介绍一下如何阅读mongodb源代码的, 主要是一些工具类的设置.注意: 以下文章举例, 以cli界面为例, 如果使用的是windows系统, 可以自行创建文件件. ...

在上一篇帖子中,详细描述了如何下载mongodb源代码,


如果没有看, 可以参考如下链接 http://forum.huaweicloud.com/thread-7359-1-1-101.html 


那么在这一篇帖子中,就详细介绍一下如何阅读mongodb源代码的, 


主要是一些工具类的设置.


注意:  以下文章举例, 以cli界面为例, 如果使用的是windows系统, 可以自行创建文件件. 

       

            同时建议windows用户安装cygwin等unix shell模拟工具.


  1.  建立一个mongodb的代码文件夹


# eharry @ eharry-macbook-pro in /data/example [15:16:58]
$ mkdir mongodb3.6.1


2. 进入这个目录,并解压mongodb源代码包


# eharry @ eharry-macbook-pro in /data/example/mongodb3.6.1 [15:21:25]
$ tar -xzf mongodb-src-3.6.1.tgz

# eharry @ eharry-macbook-pro in /data/example/mongodb3.6.1 [15:21:38]
$ ll
total 442840
-rw-r--r--@  1 eharry  admin   216M  1  5 23:08 mongodb-src-3.6.1.tgz
drwxr-xr-x@ 24 eharry  admin   768B 12 21 05:22 mongodb-src-r3.6.1


3. 选择个人喜欢的源代码阅读工具.


    a.   sourceinsight 用户


             记得在源代码同级目录下,创建sourceinsight的文件夹,用于存放sourceinsight的工程文件.


             然后添加mongodb源代码到sourceinsight工程.


    b.   clion 用户

             

             记得在源代码同级目录下,创建clion的文件夹,用于存放clion的工程文件.


             然后添加mongodb源代码到clion工程.


    b.   understand 用户

             

             记得在源代码同级目录下,创建understand的文件夹,用于存放understand的工程文件.


             然后添加mongodb源代码到understand工程.


    d.  CDT 用户


             记得在源代码同级目录下,创建CDT的文件夹,用于存放CDT的工程文件.


             然后添加mongodb源代码到CDT工程.

     

     还有,sublime用户, vscode用户, atom用户等等, 不一而说. 


     就是希望在建立工程目录的时候, 不要污染了mongodb原生代码.


     说一下上面的4个工具, 因为mongodb的编译, 有些头文件上通过python生成(这点比较坑ide), 


     所以导致上述的ide都不能在mongodb源代码上很好的工作, 浏览代码是经常碰到找不到定义的地方.


     CDT 


                 在代码分析上功能最差, 基本上被我弃之不用.


     clion 


                 打开和浏览代码起来, 机器资源要求太高, 小小笔记本经常风扇转速, 并且分析功能也不是很好. 


                 而且巨贵无比, 没有社区版可用. 也基本上被废弃.


     understand 

           

                 功能不错,资源占用低, 响应也快,  基本上是这四个里面分析功能最好的.  


                 虚函数,子函数, 父类, 子类的关系一目了然, 还支持模糊语义, 


                 能很好的适用到mongodb这种用python生成头文件的情况. 


                 但就是这个东西太贵,  买不起.  而且很少见公司会买这个软件.


      sourceinsight

 

                 c/c++ IDE界扛把子,  自从15年前开发出来后, 未有更新. 老板和老板娘坐收15年软件使用费.


                 15年来, 还找不到一块比他更加出色的IDE.  3M大小的软件就能实现如此丰富的功能. 


                 CDT你300M的软件不应该感到汗颜吗.  clion虽然分析功能比sourceinsight好,但是性能就差远了. 


                 这个软件也是大多数软件公司必备软件之一.  


                 唯一的缺点就是, 没有linux和osx的版本.    可是mongodb 是数据库啊,  是跑在linux上的啊.


                 当然,通过crossover也可以将就一下.


                 

        上面说了这么多废话, 就是说, 目前并没有一款合适的IDE,用来编写阅读,处理c++代码.


         所以仍有很多程序员固守vim阵地, 利用最原始的ctags + cscope 来处理mongodb代码.


4.  VIM mongodb的阅读配置


     用vim看mongodb代码,跟看其他c++代码一样. 在vim配置上并没有特殊的地方. 


      使用ctags cscope进行代码,变量,函数跳转, 

      使用a.vim进行头文件和实现的切换, 

      使用lookupfile进行文件内容跳转.


      vim 如何配置阅读c++代码,会另开一篇博客详细描述.


      本文看看mongodb使用vim的浏览效果

Jietu20180318-160112.jpg


5. mongodb的代码简化


不管是什么代码, 当你在调查问题的时候, 如果搜索出来的东西结果太多,总是令人沮丧的, 


尤其是当这个结果里面有很多测试代码的时候,那真是令人恼火的事情.


所以阅读mongodb代码的第一件事情, 就是代码简化, 去除掉所有的test代码.


# eharry @ eharry-macbook-pro in /data/example/mongodb3.6.1/mongodb-src-r3.6.1 [16:05:23]
$ find . | grep test | rm -rf


这下代码清净了好多.





【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。