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"

相关推荐
java干货17 分钟前
为什么 “File 10“ 排在 “File 2“ 前面?解决文件名排序的终极算法:自然排序
开发语言·python·算法
机器懒得学习18 分钟前
智能股票分析系统
python·深度学习·金融
毕设源码-郭学长18 分钟前
【开题答辩全过程】以 基于python的二手房数据分析与可视化为例,包含答辩的问题和答案
开发语言·python·数据分析
SR_shuiyunjian22 分钟前
Python第三次作业
python
vx_biyesheji000123 分钟前
豆瓣电影推荐系统 | Python Django 协同过滤 Echarts可视化 深度学习 大数据 毕业设计源码
大数据·爬虫·python·深度学习·django·毕业设计·echarts
鸽芷咕1 小时前
DrissionPage 成 CANN 仓库爆款自动化工具:背后原因何在?
运维·python·自动化·cann
爱学习的阿磊1 小时前
使用Fabric自动化你的部署流程
jvm·数据库·python
少云清1 小时前
【金融项目实战】7_接口测试 _代码实现接口测试(重点)
python·金融项目实战
深蓝电商API1 小时前
爬虫IP封禁后的自动切换与检测机制
爬虫·python
m0_550024631 小时前
持续集成/持续部署(CI/CD) for Python
jvm·数据库·python