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"

相关推荐
汤姆小白4 小时前
01-环境搭建与项目导览
人工智能·python·机器学习·numpy
胡萝卜术8 小时前
从API调用到手写LRU:力扣146「LRU缓存」的哈希表+双向链表终极进化之路
前端·javascript·面试
科技道人8 小时前
记录 默认置灰/禁用 app ‘Search Engine Selector‘ 的disable按钮
开发语言·前端·javascript
天疆说8 小时前
Zotero Connector 在 Edge 里找不到桌面 Zotero(Linux / Zotero 9.0.6 / Edge 150)
linux·前端·edge
李伟_Li慢慢10 小时前
02-从硬件说起WebGL
前端·three.js
向日的葵00610 小时前
langchain的Tools教程(三)
python·langchain·tools
kyriewen11 小时前
看了微软几万人用AI编程的数据——效率涨24%的代价没人提
前端·ai编程·claude
2601_9637713711 小时前
How to Scale Your WordPress Store Traffic in 2026
前端·php·plugin
亿元程序员11 小时前
老板说我的3D箭头游戏用来做试玩太普通了,没人想玩,让我变点花样...
前端
言乐611 小时前
Python实现可运行解密游戏游戏框架
python·游戏·小程序·游戏程序·关卡设计