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"

相关推荐
宿州派大星3 小时前
Python实战:PyQt5 + OpenCV + Dlib 打造AI桌面应用
人工智能·python·qt
承渊政道4 小时前
【从零开始大模型开发与微调:基于PyTorch与ChatGLM】(开源大模型ChatGLM高级定制化应用实战)
人工智能·pytorch·python·llm·模型微调·glm
youcans_9 小时前
【STM32C5教程】(3)GPIO 按键输入实验
stm32·单片机·嵌入式硬件
Java后端的Ai之路10 小时前
06-React-Props
前端·react.js·前端框架
Smoothcloud润云10 小时前
PyTorch大模型权重加载与启动耗时优化实战:定位磁盘、内存与显存瓶颈
人工智能·pytorch·python·深度学习·gpu算力
Flynt11 小时前
开源"间谍卫星"说数据全是真的,我把它的免key数据源挨个试了一遍
前端·开源·数据可视化
databook11 小时前
从循环到向量化:NumPy提速的7个关键思维
python·数据分析·numpy
Csvn11 小时前
渲染管线
前端
棉猴11 小时前
玩游戏学Python1-Python和pgzero库的安装
python·pygame·玩游戏·pgzero·pgzrun
程序员大阳11 小时前
副队长CSS教程(33)–圆角与透明
前端·css·透明·圆角