获取C文件各函数有效行

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

文章目录

概要

        获取C文件各函数的有效行数,可以协助代码规范检查(函数长度、嵌套深度)、评估代码质量、评估测试工作量、确认重点优化的函数(如代码行数过多的函数是否封装?)。本文使用python代码编写脚本,获取c文件中各个函数的有效行数。

整体架构流程

        python脚本获取文件夹中的c文件,然后逐个处理c文件,获取c文件名称、函数名称、有效代码行数。

        1、读入c文件后,先进行前处理:移除单行注释、块注释、条件编译定义的调试代码等;

        2、定义正则表达式,获取函数声明 [返回类型] [函数名] [参数列表 ],其中返回类型需要兼容viod类型、int\long\double\float等基本类型、自定义类型等;

        3、获取函数有效行数,生成EXCEL表格,便于数据分析。

        定义的主要python函数:
      1、generate_excel_report(src_dir, output_file="function_report.xlsx"),函数输入参数src_dir,读取指定文件夹中的c文件,输出参数output_file="function_report.xlsx",将函数有效行数保存在EXCEL文件中,默认名称:function_report.xlsx。

        2、extract_functions(file_path): 获取c文件中函数的有效行数。

        3、remove_comments(content: str):移除单行注释、块注释。

        4、remove_preprocessor_directives(content, macros_to_remove=[ "WSS_DEBUG_MODE" ]), 移除C代码中指定宏定义的条件编译块.

        5、extract_function_body(content, start_pos):栈式平衡匹配函数体花括号,获取函数体内容,支持任意嵌套。

主要技术难点

        1、提取函数声明的正则表达式定义。为防止提取错误的函数名,如“else if()”语句被识别为函数声明,正则表达式需要解决问题:①排除流程控制关键字;②支持基本类型和自定义类型。

        2、函数体的获取:通过 ​栈(Stack)​​ 实现括号的平衡检测,处理任意嵌套​(如递归函数、多层条件分支)。

运行结果        

小工具获取

        

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值