11.22 脚本 手机termux项目分析(bash)

输入,termux +一个脚本+一个文件即可

输出 :

#!/bin/bash

一键中文分析报告:调用树 + 符号列表,结果与源文件同目录

set -euo pipefail

1. 读文件(支持空格)

read -r -p "请输入要分析的 C 源文件路径(支持空格): " SRC

\[ -z "$SRC" \]\] \&\& { echo "❌ 未输入路径,退出"; exit 1; } SRC="${SRC%\\"}" SRC="${SRC#\\"}" \[\[ -f "$SRC" \]\] \|\| { echo "❌ 文件不存在:$SRC"; exit 1; } DIR=$(dirname "$SRC") BASE=$(basename "$SRC" \| sed 's/\\.\[\^.\]\*$//') REPORT="$DIR/${BASE}_分析报告.md" # 2. 写报告头 cat \> "$REPORT" \<\ 文件:\\\`$SRC\\\` \> 生成时间:$(date "+%Y-%m-%d %H:%M:%S") --- ## 一、函数调用关系 EOF # 3. 生成调用树(带序号) echo "🔄 生成调用树 ..." if ! cflow "$SRC" 2\>/dev/null \| awk ' BEGIN{idx=1} /\^\[\^ \\t\]/{gsub(/\<.\*\>/,"");gsub(/\\(.\*\\)/,"");gsub(/\^\[ \\t\]+\|\[ \\t\]+$/,"");printf "%2d. %s\\n",idx++,$0} /\^\[ \\t\]+/{gsub(/\<.\*\>/,"");gsub(/\\(.\*\\)/,"");gsub(/\^\[ \\t\]+\|\[ \\t\]+$/,"");printf " ├─ %s\\n",$0} ' \>\> "$REPORT"; then echo "⚠️ cflow 未安装或解析失败,已跳过调用树" fi # 4. 生成符号列表(中文归类,一行三列) echo "🔄 生成符号列表 ..." ctags --output-format=json \\ --kinds-c=+c+d+e+f+g+l+m+n+p+s+t+u+v+x \\ --kinds-c++=+c+d+e+f+g+l+m+n+p+s+t+u+v+x \\ --fields=+iafkmnsSt \\ --extras=+F+q+r \\ "$SRC" 2\>/dev/null \\ \| jq -r 'select(.name\|startswith("__anon")\|not)\|(.kind+"\\t"+.name)' \\ \| awk -v OFS="" ' BEGIN{ map\["f"\]="函数"; map\["p"\]="原型"; map\["d"\]="宏定义" map\["s"\]="结构体"; map\["u"\]="联合体"; map\["e"\]="枚举" map\["g"\]="枚举值"; map\["t"\]="类型"; map\["v"\]="变量" map\["l"\]="局部"; map\["h"\]="头文件"; map\["x"\]="外部变量" } { k=(($1 in map)?map\[$1\]:$1); list\[k\]=list\[k\] (list\[k\]?" ":"") $2 } END{ print "\\n---\\n## 二、符号列表" idx=0 for(k in list){ n=split(list\[k\],arr," ") printf "\\n\*\*%s\*\*:\\n",k for(i=1;i\<=n;i++){ idx++ printf " %2d. %-22s",idx,arr\[i

if(i%3==0) printf "\n"

}

if(n%3) printf "\n"

}

}' >> "$REPORT"

echo "✅ 中文分析报告已生成:$REPORT"

相关推荐
陈小桔2 分钟前
logging模块-python
开发语言·python
风行男孩5 分钟前
stm32基础学习——串口(USART)的基本使用
stm32·嵌入式硬件·学习
水中加点糖5 分钟前
RagFlow实现多模态搜索(文、图、视频)与(关键字/相似度)搜索原理(二)
python·ai·音视频·knn·ragflow·多模态搜索·相似度搜索
小Tomkk6 分钟前
⭐️ StarRocks Web 使用介绍与实战指南
前端·ffmpeg
贾宝玉的玉宝贾7 分钟前
FreeSWITCH 简单图形化界面52 - 拨号应用 Answer 介绍
python·django·voip·freeswitch·sip·ippbx·jssip
Hello.Reader7 分钟前
PyFlink JAR、Python 包、requirements、虚拟环境、模型文件,远程集群怎么一次搞定?
java·python·jar
不一样的少年_10 分钟前
产品催: 1 天优化 Vue 官网 SEO?我用这个插件半天搞定(不重构 Nuxt)
前端·javascript·vue.js
-dcr11 分钟前
50.智能体
前端·javascript·人工智能·ai·easyui
0和1的舞者17 分钟前
Python 中四种核心数据结构的用途和嵌套逻辑
数据结构·python·学习·知识
weixin_4624462318 分钟前
Python 使用 PyQt5 + Pandas 实现 Excel(xlsx)批量合并工具(带图形界面)
python·qt·pandas