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"

相关推荐
reasonsummer1 分钟前
【办公类-133-02】20260319_学区化展示PPT_02_python(图片合并文件夹、提取同名图片归类文件夹、图片编号、图片GIF)
前端·数据库·powerpoint
巧妹儿8 分钟前
Python 配置管理封神技:pydantic_settings+@lru_cache,支持优先级,安全又高效,杜绝重复加载!
开发语言·python·ai·配置管理
独隅12 分钟前
Python AI 全面使用指南:从数据基石到智能决策
开发语言·人工智能·python
胡耀超16 分钟前
Web Crawling 网络爬虫全景:技术体系、反爬对抗与全链路成本分析
前端·爬虫·python·网络爬虫·数据采集·逆向工程·反爬虫
小陈的进阶之路20 分钟前
Selenium元素定位
python·selenium
阿明的小蝴蝶20 分钟前
记一次Gradle环境的编译问题与解决
android·前端·gradle
李昊哲小课21 分钟前
matplotlib多子图与复杂布局实战
python·数据分析·matplotlib·数据可视化
2401_8319207421 分钟前
持续集成/持续部署(CI/CD) for Python
jvm·数据库·python
Ruihong22 分钟前
【VuReact】轻松实现 Vue 到 React 路由适配
前端·react.js
山_雨23 分钟前
startViewTransition
前端