Pythonウィジェット-プログラミング言語仕様のコメントをヘッダーファイルとして抽出します

概要概要

コードを書くとき、一般的に比較的標準的な関数コメントがあります。ソースファイルが書き込まれた後、コピーアンドペーストからコメントと関数を抽出する効率的な方法は何ですか?

実装

  • 注釈仕様
    / **
    * @author whiteblack
    * @brief push data to stack
    * @ Input params:stack object
    * @Input params:data
    * @Input params:
    * @ Output params:
    * @ Output params:
    * @ return 0 successed- 1失敗
    * /

  • Pythonコードの実装

import os
import sys
import  re

'''
用正则提取函数注释以及函数
'''
test_path = r"XXXXXXXXXX"

all_dir_path = []

#获取目录下所有有效文件路径
def get_dir_all_path(code_path_dir):
     for root, dirs, files in os.walk(code_path_dir):  #获取目录下的文件和子目录 root为根目录
         for i in files:
             if i.endswith(".c"):
                 all_dir_path.append(os.path.join(root, i))
                 #print(i)

#获取注释与函数名
def get_func_briefandname(code_path):
    all_str = ''
    base_name = os.path.basename(code_path).split('.')[0].upper()
    save_path =os.path.join(os.path.dirname(code_path), os.path.basename(code_path).split('.')[0]+".h")
    with open(code_path, "r", encoding="utf-8") as f:
         for i in f.readlines():
             all_str += i.strip(' ')  

    #print(all_str)

    rule = re.compile(r"/[*]{2}[^{]+[(].+[)]") # 从/**开始  中间不可跨越函数  以函数()结尾

    re_str = re.findall(rule, all_str)
    #print(re_str)
    if len(re_str) > 0:
        with open(save_path, 'w') as f:
                f.write("#ifndef __" + base_name + '\n')
                f.write("#define __" + base_name + '\n\n')
                for i in re_str:
                    f.write(i + ";\n\n\n")
                f.write("\n\n#endif")
                print(save_path + " save successed\r\n")



if  __name__ == "__main__":
    get_dir_all_path(r"test_path")
    for i in all_dir_path:
        #print(i)
        get_func_briefandname(i)




おすすめ

転載: blog.csdn.net/tulongyongshi/article/details/108411888