# @appthreat/atom 中文文档

规范地址：https://npmcn.com/package/%40appthreat/atom/

版本：3\.2\.1
npm 元数据更新时间：2026-10-28T10:54:08.198Z
中文译文更新时间：2026-11-06T12:38:46.810Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40appthreat/atom
原文对照：https://npmcn.com/package/%40appthreat/atom/?lang=original
项目主页：https://github.com/AppThreat/atom#readme
源码仓库：https://github.com/AppThreat/atom

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：31 kB，5 个文件
- 模块格式：ES Module
- TypeScript 类型：未声明
- Node.js 要求：\>=18
- 运行依赖：0 个
- 首次发布：2023-06-08T14:31:50.793Z
- 最新版本发布：2026-10-28T10:54:07.731Z
- 近 30 天下载量：1407492（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：148（近 12 个月 16 个）

## 中文简介

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

## 安装

```sh
npm install @appthreat/atom
```

也可以使用：`pnpm add @appthreat/atom`、`yarn add @appthreat/atom`、`bun add @appthreat/atom`

## README

# 原子 npm 包装器

Atom是应用程序的新型中间代表,也是由Atom提供动力的独立工具 [陈](https://github.com/AppThreat/chen) 图书馆。 中间代表(一个有节点和链接的网络)是用于应用分析和机器学习的典型操作的最优化的,包括: [切开](https://npmcn.com/package/%40appthreat/atom/specification/docs/slices.md) 和传入.

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

## 使用量

```shell
npm install @appthreat/atom
```

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

```shell
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
```

## 请求样本

### 生成一个原子

```shell
# Compile java project
atom -o app.atom -l java .
```

```shell
atom -o app.atom -l jar <jar file>
```

```shell
export ANDROID_HOME=<path to android sdk>
atom -o app.atom -l apk <apk file>
```

### 为 Java 项目创建可达切片 .

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

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

```shell
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 DIR** | Scalasem的工作目录. 默认为原子输入路径 . |
| **ATOM SCALASEM SLICES 文件** | 切片文件名. 默认为 `semantics.slices.json`。 。 。 . |
| **ATOM JVM 目标** | 覆盖由原子节点.js slapper构建的JVM参数,包括堆积内存值. |
| **(原始内容存档于2018-07-21). ATOM JAVA HOME** | Java 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 HOME** | Ruby 安装目录 `rbastgen` 包装,当Ruby不在时 `PATH`。 。 。 . |
| **(原始内容存档于2018-10-21) (英语). RUBY ASTGEN BIN** | 路径 `ruby_ast_gen` 脚本 `rbastgen` 包装器运行。 最简单的方法测试一个发电机组. |
| **区域局** | 路径 `rbastgen` 可执行文件本身,凌驾于 `PATH`; 数据 `rbastgen.path` 系统财产优先. |

## 解决问题

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

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

```bash
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`。 。 。 .

```bash
export ASTGEN_INCLUDE_NODE_MODULES_BUNDLES=true
export ASTGEN_IGNORE_DIRS=""
```

## 许可证

麻省理工学院

## 常见问题

### @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 和提交记录判断。

