V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
sin41018
V2EX  ›  程序员

新手程序员求助,关于如何提取.cpp 内的代码和注释。

  •  
  •   sin41018 · 33 天前 · 939 次点击
    这是一个创建于 33 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我试图在 C++项目的 README 内写明项目特性。 实际上,我只需要把.cpp 文件内的注释搬运到 README 内,就几乎可以解决问题。

    但我找不到(或者不知道)提取注释的工具。

    具体来说,我希望能从如下的代码:

    /*
    	指出函数特性的注释
    */
    int process(const char* str)
    {
    	xxxxxxx
        //只有当满足某个条件,才能为真
        if( func(A) == true )
        {
        	xxxxxxx
        }
    }
    

    提取出这样的信息:

    /*
    	指出函数特性的注释
    */
    int process(const char* str)
    
    //只有当满足某个条件,才能为真
    if( func(A) == true )
    

    我找不到现成的工具,因此只能自己写了一个小工具,勉强满足了自己的需求。

    但我仍然好奇: 有无更简单直接的方法提取出.cpp 文件中的注释,以便于 README 的撰写呢?

    我的工作环境是 unix + vscode (有时候是 vim )

    8 条回复    2024-11-25 00:57:02 +08:00
    wnpllrzodiac
        1
    wnpllrzodiac  
       32 天前
    doxygen
    有现成的轮子。
    从代码生成帮助文档的。可以看看。
    有空交流哈。我没用过,看别人用过。
    yolee599
        2
    yolee599  
       32 天前 via Android
    楼上正解,doxygen 自动提取注释生成文档
    bfdh
        3
    bfdh  
       32 天前
    doxygen +1
    guyeu
        4
    guyeu  
       32 天前
    doxygen 确实正解,楼主想 diy 的话也可以考虑直接用 `clang++ -ast-dump=json` 这样的方式把语法树导出成结构化的文本,然后自己处理。
    iOCZS
        5
    iOCZS  
       32 天前
    文档生成工具能处理代码内部的注释吗?
    jamesdd
        6
    jamesdd  
       31 天前
    lex + yacc ?
    sin41018
        7
    sin41018  
    OP
       27 天前
    谢谢各位的解答,doxygen 确实是好用且直接的工具。
    我的小工具是一个 150 行代码的纯文本处理工具,由于不涉及到编译器组件,无论我怎么设置解析规则,这个工具实在是效果有限。
    我个人得出了如下的结论:
    1.doxygen 是第一选择。
    2.如果要自己 DIY ,应当从编译器组件入手。纯文本分析效果非常有限,总有一些场合不适用。
    sin41018
        8
    sin41018  
    OP
       27 天前
    @iOCZS 似乎不能。
    目前的解析工具很少涉及到代码内部(即“代码块”内)的注释提取。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2944 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 13:02 · PVG 21:02 · LAX 05:02 · JFK 08:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.