@appthreat/atom

中文文档
3.2.1发布于 2026/10/28MITES Module零依赖构建来源已验证近 30 天下载 140.7万

为您的应用程序、软件包和库创建原子 (QQ) 代表

中文使用文档
文档目录10 节
  1. 使用量
  2. 支助语文
  3. CLI 使用量
  4. 请求样本
  5. 生成一个原子
  6. 为 Java 项目创建可达切片 .
  7. 环境变量
  8. 解决问题
  9. 大型工程的原子文件不完整
  10. 许可证

原子 npm 包装器

Atom是应用程序的新型中间代表,也是由Atom提供动力的独立工具 陈 图书馆。 中间代表(一个有节点和链接的网络)是用于应用分析和机器学习的典型操作的最优化的,包括: 切开 和传入.

这个包包包了原子Java可分配,并通过npm包注册提供. 确保 Java 21 在 PATH 中可用 .

使用量

npm install @appthreat/atom

对于更广泛的语言支持,也安装 @appthreat/atom-parsetools。 。 。 .

npm install -g @appthreat/atom-parsetools

支助语文

  • 页:1
  • H(仅C/C++ 标题和已预处理的.i文件)
  • Java (需要汇编)
  • 贾
  • Android APK(要求Android SDK. 设置环境变量 ANDROID_HOME 或使用容器图像。 )
  • Java 脚本
  • 流动
  • 类型脚本
  • Python( 支持 3. x 至 3. 14)
  • PHP( 需要 PHP QQ 7.4. 支持 PHP 7. 0 到 8.5, 有限支持 PHP 5. x)
  • Ruby( 需要Ruby 运行时间 ) rbastgen 生成器; 语法由 功能,而不是运行时的版本,所以Ruby 1.8 - 4.0.x 语法在任意一个语法上得到支持 支持运行时间)
  • 斯卡拉(WIP)

CLI 使用量

Usage: atom [parsedeps|data-flow|usages|reachables] [options] [input]

  input                    source file or directory
  -o, --output <value>     output filename. Default app.⚛ or app.atom in windows
  -s, --slice-outfile <value>
                           export intra-procedural slices as json
  -l, --language <value>   source language
  --with-data-deps         generate the atom with data-dependencies - defaults to `false`
  --remove-atom            do not persist the atom file - defaults to `false`
  --reuse-atom             reuse existing atom file - defaults to `false`
  -x, --export-atom        export the atom file with data-dependencies to graphml - defaults to `false`
  --export-dir <value>     export directory. Default: atom-exports
  --file-filter <value>    the name of the source file to generate slices from. Uses regex.
  --method-name-filter <value>
                           filters in slices that go through specific methods by names. Uses regex.
  --method-parameter-filter <value>
                           filters in slices that go through methods with specific types on the method parameters. Uses regex.
  --method-annotation-filter <value>
                           filters in slices that go through methods with specific annotations on the methods. Uses regex.
  --max-num-def <value>    maximum number of definitions in per-method data flow calculation - defaults to 2000
Command: parsedeps
Extract dependencies from the build file and imports
Command: data-flow [options]
Extract backward data-flow slices
  --slice-depth <value>    the max depth to traverse the DDG for the data-flow slice - defaults to 7.
  --sink-filter <value>    filters on the sink's `code` property. Uses regex.
Command: usages [options]
Extract local variable and parameter usages
  --min-num-calls <value>  the minimum number of calls required for a usage slice - defaults to 1.
  --include-source         includes method source code in the slices - defaults to false.
  --extract-endpoints      extract http endpoints and convert to openapi format using atom-tools - defaults to false.
Command: reachables [options]
Extract reachable data-flow slices based on automated framework tags
  --source-tag <value>     source tag - defaults to framework-input. Comma-separated values allowed.
  --sink-tag <value>       sink tag - defaults to framework-output. Comma-separated values allowed.
  --include-crypto         includes crypto library flows - defaults to false.
  --help                   display this help message

请求样本

生成一个原子

# Compile java project
atom -o app.atom -l java .
atom -o app.atom -l jar <jar file>
export ANDROID_HOME=<path to android sdk>
atom -o app.atom -l apk <apk file>

为 Java 项目创建可达切片 .

cd <path to repo>
cdxgen -t java --deep -o bom.json .
atom reachables -o app.atom -s reachables.json -l java .

通过辩论 --reuse-atom 以已存在的原子文件为基础切换.

atom reachables --reuse-atom -o app.atom -s reachables.json -l java .

环境变量

变量说明
CHEN IGNORE 数字逗号分隔目录列表,用于忽略每种语言的前端.
中国 IGNORE TEST DIRS设定为真以忽略常见的测试目录( T)test, (中文(简体) ), tests, (中文(简体) ), mocks) 对于每种语言的前端.
陈行 C IGNORE DIRS逗号分隔的要忽略的 C/C++ 和页眉前端目录列表 .
CHEN CPP IGNORE 数字要忽略 C++ 前端的逗号分隔目录列表 .
陈起来 贾瓦 IGNORE DIRS逗号分隔的要忽略Java源前端的额外目录列表 .
CHEN JIMPLE IGNORE 数字要忽略 Jimple/JAR/Android/APK/DEX 前端的逗号分隔目录列表 .
CHEN SCALA IGNORE DIRS (中文(简体) )为斯卡拉前端忽略的逗号分隔目录列表 .
(原始内容存档于2013-10-12) (中文(中国大陆) ). CHEN JAVASCRIPT IGNORE DIRS为 JavaScript 、 TypeScript 和 Flow 前端忽略的逗号分隔目录列表 .
CHEN JS IGNORE 数字别名 JavaScript, TypeScript, 和 Flow 忽略目录 .
(简体中文)TypeScript 和 Flow 的异名被忽略目录 .
(中文(简体) )为 Python 忽略的逗号分隔目录列表 。 如果未设置, Atom 使用 Python 默认被忽略的目录 .
(简体中文)逗号分隔的要忽略 PHP 前端目录列表 .
(中文(简体) )为 Ruby 前端忽略的逗号分隔目录列表 .
CHEN DELOMBOK MODE 游戏机Java 前端的 Delombok 模式 (no-delombok, (中文(简体) ), default, (中文(简体) ), types-only, (中文(简体) ), run-delombok) (中文(简体) ).
陈起平 (中文(简体) )包含 C 前端的目录 。 分离路径 : 或者说 ;。 。 。 .
陈思成已存在的 astgen 输出目录 。 重复引用时通过重用已存在的AST json数据来提高JavaScript,TypeScript,和Flow的性能.
ATOM TOOLS OPENAPI FORMAT原子工具的 OpenAPI 格式 。 默认 : openapi3.1.0; 备选案文: openapi3.0.1。 。 。 .
ATOM TOOLS 工作站 DIR原子工具工作目录. 默认为原子输入路径 .
ATOM SCALASEM WORK DIRScalasem的工作目录. 默认为原子输入路径 .
ATOM SCALASEM SLICES 文件切片文件名. 默认为 semantics.slices.json。 。 。 .
ATOM JVM 目标覆盖由原子节点.js slapper构建的JVM参数,包括堆积内存值.
(原始内容存档于2018-07-21). ATOM JAVA HOMEJava 21或以上被原子所使用.
ƯΜ㼯A覆盖 PHP 前端使用的 PHP 命令.
ƯΜ㼯A覆盖 PHP 前端所使用的php-parse 命令.
SCALA CMD 卫星超过scala命令.
SCALAC CMD 移动覆盖 scala 前端使用的 scala 命令 .
ASTGEN IGNORE 数字逗号分隔的目录列表,由JavaScript astgen预处理器命令忽略.
ASTGEN IGNORE FILE PATERN (法语)JavaScript astgen 预处理器命令忽略的文件模式 .
ASTGEN INCLUDE NODE MODULES BUNDLES 互联网档案馆的存檔,存档日期2014-12-02也包含从节点-模块目录中的源代码. 以增加内存使用为代价,使流量更加完整.
JAVA CMD (印度尼西亚)推翻了java命令.
(原始内容存档于2019-09-26) (英语). RUBY CMD覆盖 Ruby 命令 rbastgen 包装.
(原始内容存档于2018-09-21) (英语). ATOM RUBY HOMERuby 安装目录 rbastgen 包装,当Ruby不在时 PATH。 。 。 .
(原始内容存档于2018-10-21) (英语). RUBY ASTGEN BIN路径 ruby_ast_gen 脚本 rbastgen 包装器运行。 最简单的方法测试一个发电机组.
区域局路径 rbastgen 可执行文件本身,凌驾于 PATH; 数据 rbastgen.path 系统财产优先.

解决问题

大型工程的原子文件不完整

astgen可能需要大量大型JavaScript项目,尤其是流项目的大量内存. 使用环境变量 NODE_OPTIONS 用于增加可用的内存.

export NODE_OPTIONS="--expose-gc --max-old-space-size=16288"

对于React 19等大型项目,astgen需要超过80GB的堆积内存! 使用环境变量 CHEN_ASTGEN_OUT 要制作原子和正则,请重新使用含有 astgen 生成的 json 和 typemap 文件的现有目录.

为进一步提高准确性,将源代码从 node_modules 设置目录 ASTGEN_INCLUDE_NODE_MODULES_BUNDLES。 。 。 .

export ASTGEN_INCLUDE_NODE_MODULES_BUNDLES=true
export ASTGEN_IGNORE_DIRS=""

许可证

麻省理工学院

版本与发布记录

@appthreat/atom 共发布 148 个版本,首次发布于 2023/06/08;过去 12 个月发布了 16 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
3.2.1latest2026/10/289 天前
3.1.12026/08/082 个月前
3.1.02026/08/082 个月前
3.0.32026/06/284 个月前
3.0.22026/06/264 个月前
2.5.62026/06/184 个月前

关于 @appthreat/atom 的常见问题

@appthreat/atom 是什么?

为您的应用程序、软件包和库创建原子 (QQ) 代表

如何安装 @appthreat/atom?

在项目目录运行 npm install @appthreat/atom,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 atom,可以用 npx atom 直接运行。

@appthreat/atom 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/appthreat__atom 是否存在。

@appthreat/atom 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@appthreat/atom 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=18。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@appthreat/atom 可以商用吗?

@appthreat/atom 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@appthreat/atom 的下载量有多少?

根据 npm 官方下载统计,@appthreat/atom 在 2026/10/07 – 2026/11/05 这 30 天内被下载 1,407,492 次,日均约 46,916 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@appthreat/atom 还在维护吗?

最新版本 3.2.1 发布于 2026/10/28(9 天前);至今共发布 148 个版本,其中过去 12 个月发布了 16 个;首次发布于 2023/06/08。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。