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" <<EOF

${BASE} 中文分析报告

> 文件:\`$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(listk,arr," ")

printf "\n**%s**:\n",k

for(i=1;i<=n;i++){

idx++

printf " %2d. %-22s",idx,arri

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

}

if(n%3) printf "\n"

}

}' >> "$REPORT"

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

相关推荐
子兮曰21 小时前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰21 小时前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
默_笙21 小时前
🍙 给每个请求过安检:FastAPI 是怎么把校验写进类型注解的
python
XiHongShi201621 小时前
STM32F407 RTC定时器例程,建议保存
stm32·单片机·学习
前端小万21 小时前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝21 小时前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
qq_4260039621 小时前
启动playwright录制codegen生成自动化测试脚本
python·自动化
虎头金猫21 小时前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
三十而立洋1 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
长沙三为智能科技1 天前
家政小程序开发从0到上线:五阶段交付流程与验收清单
python