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"

相关推荐
GeekPMAlex1 小时前
Python SQLite多线程、上下文管理器与生成器全面解析
python
IT·小灰灰1 小时前
基于Python的机器学习/数据分析环境搭建完全指南
开发语言·人工智能·python·算法·机器学习·数据分析
是你的小橘呀2 小时前
JavaScript 原型链解密:原来 proto 和 prototype 这么好懂
前端·javascript·前端框架
ohyeah2 小时前
使用 LocalStorage 实现本地待办事项(To-Do)列表
前端·javascript
Jing_Rainbow2 小时前
【前端三剑客-6/Lesson11(2025-10-28)构建现代响应式网页:从 HTML 到 CSS 弹性布局再到 JavaScript 交互的完整指南 🌈
前端·javascript
非专业程序员2 小时前
精读 GitHub - servo 浏览器(一)
前端·ios·rust
Yanni4Night2 小时前
掌握 JS 中迭代器的未来用法
前端·javascript
Irene19912 小时前
Element UI 及其 Vue 3 版本 Element Plus 发展现状
前端·vue.js·ui
Account_Ray2 小时前
vue3 的专属二维码组件 vue3-next-qrcode 迎来 4.0.0 版本
前端·vue.js·nuxt.js