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"

相关推荐
Sirius.z1 天前
第R6周:LSTM实现糖尿病探索与预测
python
名字还没想好☜1 天前
Python f-string 进阶:数字格式化、对齐填充、调试 = 号与嵌套表达式
开发语言·数据库·python·字符串格式化·f-string
·薯条大王1 天前
经济实惠玩云服务器|一台云服务器多人共用,子账号配置教程
java·linux·运维·服务器·汇编·c++·python
用户938515635071 天前
从零在浏览器里跑 DeepSeek-R1:WebGPU + Transformer.js 全链路实战
前端·设计模式·typescript
芯片设计-曾工1 天前
当精准脉冲遇上清晰视界——CH2205E模块与YL1621的“黄金搭档“
驱动开发·stm32·单片机·51单片机·硬件工程
CodeSheep1 天前
稚晖君公司人事大变动,来了!
前端·后端·程序员
鱼樱前端1 天前
用 AI 做内容变收入
前端·人工智能·ai编程
Dxy12393102161 天前
Python 如何使用 MySQL 的事务
python·mysql
浮生望1 天前
React + TypeScript 组件设计进阶:从类型约束到无状态组件的三次进化
前端
90后的晨仔1 天前
Mac 开发 uni-app 终极方案:让安卓模拟器彻底脱离 Android Studio 独立运行
前端·vue.js