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"

相关推荐
寻星探路30 分钟前
【深度长文】万字攻克网络原理:从 HTTP 报文解构到 HTTPS 终极加密逻辑
java·开发语言·网络·python·http·ai·https
崔庆才丨静觅2 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby60613 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了3 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅3 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
ValhallaCoder3 小时前
hot100-二叉树I
数据结构·python·算法·二叉树
崔庆才丨静觅3 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
猫头虎4 小时前
如何排查并解决项目启动时报错Error encountered while processing: java.io.IOException: closed 的问题
java·开发语言·jvm·spring boot·python·开源·maven
崔庆才丨静觅4 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment4 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端