# @corekraft/flow-linter-core 中文文档

规范地址：https://npmcn.com/package/%40corekraft/flow-linter-core/

版本：1\.1\.0
npm 元数据更新时间：2025-10-22T01:01:59.200Z
中文译文更新时间：2026-11-14T10:32:11.438Z
软件包许可：MIT

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

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

弃用说明：Package deprecated due to licensing issues, please support the new product 'flow-lint' https://github\.com/corekraft/flow-lint this version is of MIT license and completely restarted

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

- 包体积（解压后）：573 kB，129 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- Node.js 要求：^20 \|\| ^22 \|\| ^24
- 运行依赖：1 个
- 首次发布：2025-08-21T23:27:02.886Z
- 最新版本发布：2025-09-07T00:10:10.419Z
- 近 30 天下载量：2073（2026-10-11 至 2026-11-09，npm 官方下载统计）
- 已发布版本数：5（近 12 个月 0 个）

## 中文简介

能够对与销售力量流动、过程构建器和工作流动相关的元数据进行静态分析的规则引擎.

## 安装

```sh
npm install @corekraft/flow-linter-core
```

也可以使用：`pnpm add @corekraft/flow-linter-core`、`yarn add @corekraft/flow-linter-core`、`bun add @corekraft/flow-linter-core`

## README

`flow-linter` 是一个静态配置分析工具,可以执行流程最佳做法.

销售力流是使流程自动化的有力途径,但是如果没有适当的护栏,它们会很快变得难以维护,容易出错,而且不一致.

JavaScript有ESLint,Apex有PMD,但Flows怎么办? `flow-linter` 给与JavaScript或Apex合作的开发者带来同样的平起伏和静态代码分析的刚性—— 给销售力流程.

-   [默认规则](https://npmcn.com/package/%40corekraft/flow-linter-core/#readme-default-rules)
-   [核心职能](https://npmcn.com/package/%40corekraft/flow-linter-core/#readme-core-functions)
-   [配置](https://npmcn.com/package/%40corekraft/flow-linter-core/#readme-configurations)
    -   [规则配置](https://npmcn.com/package/%40corekraft/flow-linter-core/#readme-rule-configuration)
    -   [自定义规则接口](https://npmcn.com/package/%40corekraft/flow-linter-core/#readme-custom-rule-interface)
    -   [例外配置](https://npmcn.com/package/%40corekraft/flow-linter-core/#readme-exception-configuration)
-   [开发设置](https://npmcn.com/package/%40corekraft/flow-linter-core/#readme-development-setup)

* * *

## 默认规则

### 循环中的行动呼吁

_[动作呼叫内环](https://github.com/corekraft/flow-linter-core/tree/master/src/main/rules/ActionCallsInLoop.ts)_ - 为防止超过最高州长限额,最好利用循环结束时包含一个收集变量的单项行动呼吁,合并和充实最高要求.

### 过时的 API 版本

_[APVERSION 计划](https://github.com/corekraft/flow-linter-core/tree/master/src/main/rules/APIVersion.ts)_ - 采用较新的API组件可能导致与更古老的流程版本产生出出乎意料的问题,因为它们可能与基础力学不一致。 从API 50.0版本开始 **Api 版本** 属性在流动对象上随时可用。 为确保平稳运行并减少API版本之间的差异,强烈建议定期更新并维护.

### 自动布局

_[自动拉尤特](https://github.com/corekraft/flow-linter-core/tree/master/src/main/rules/AutoLayout.ts)_ - 将 Canvas Mode 设置为 Auto-Layout , 元素被间隔, 连接, 自动对齐, 使您的流程保持整齐有序, 节省时间 .

### 复制 API 名称

_[复制APIName](https://github.com/corekraft/flow-linter-core/tree/master/src/main/rules/CopyAPIName.ts)_ - 保持多个名称相似的元素,如 `Copy_X_Of_Element`,可以降低您的流量的总体可读性。 复制并粘贴这些元素时,请记住更新新创建的复制品的API名称.

### 杂交复杂度

_[杂交](https://github.com/corekraft/flow-linter-core/tree/master/src/main/rules/CyclomaticComplexity.ts)_ - 循环和决定规则的数目,加上决定的数目。 使用1个分流和2个分流的组合,将分流分解为多个简洁的触发--命令分流,以降低单流内部的环形复杂度,确保可维护性和简单性.

### 循环中的 DML 语句

_[DML 声明内环](https://github.com/corekraft/flow-linter-core/tree/master/src/main/rules/DMLStatementInLoop.ts)_ - 为了防止超过顶级州长限制,在流量结束时,合并所有数据库操作——记录创建、更新或删除.

### 复制 DML 操作

_[复制DML操作](https://github.com/corekraft/flow-linter-core/tree/master/src/main/rules/DuplicateDMLOperation.ts)_ - 当一流执行两个屏幕之间的数据库更改或动作时,防止用户在屏幕之间向后导航;否则,可以进行重复的数据库操作.

### 流程命名公约

_[流程Name](https://github.com/corekraft/flow-linter-core/tree/master/src/main/rules/FlowName.ts)_ - 流动的可读性至关重要。 建立命名公约可大大提高可找到性、可搜索性和整体一致性。 至少包含一个域并简要说明流量的动作,例如 `Service_OrderFulfillment`。 。 。 .

### 获取全部记录字段

_[获取所有字段](https://github.com/corekraft/flow-linter-core/tree/master/src/main/rules/GetRecordAllFields.ts)_ - 遵循最低特权原则(POLP),避免使用 **获取记录** “自动存储所有字段”,除非有必要.

### 硬码 Id

_[硬码](https://github.com/corekraft/flow-linter-core/tree/master/src/main/rules/HardcodedId.ts)_ - 避免硬编码ID,因为它们是Org特定的。 相反,在流量开始时将它们传递到变量中——通过合并 域 URL参数或 a **获取记录** 键.

### 硬码 Url

_[硬码Url](https://github.com/corekraft/flow-linter-core/tree/master/src/main/rules/HardcodedUrl.ts)_ - 避免硬编码URL,因为它们是环境特有的。 使用一个 `$API` 公式(首选)或特定环境来源,如自定义标签、元数据或设置.

### 非活动流量

_[不活动花](https://github.com/corekraft/flow-linter-core/tree/master/src/main/rules/InactiveFlow.ts)_ - 就像清理出你的衣柜:删除未使用的流动至关重要。 非活性流仍然可能造成麻烦——例如测试时不慎删除记录,或者作为分流被激活.

### 缺少错误路径

_[缺少错误](https://github.com/corekraft/flow-linter-core/tree/master/src/main/rules/MissingFaultPath.ts)_ - 流动可能无法按预期执行行动。 默认情况下,流会向用户显示出错误并电子邮件给创建者. 通过包含错误路径来自定义此行为 .

### 缺少流量描述

_[流程描述](https://github.com/corekraft/flow-linter-core/tree/master/src/main/rules/FlowDescription.ts)_ - 描述在文件编制方面起关键作用。 我们强烈建议列入使用流动地点及其预期目的的细节.

### 缺少 Null 处理器

_[失踪的纽尔·汉德勒](https://github.com/corekraft/flow-linter-core/tree/master/src/main/rules/MissingNullHandler.ts)_ - 当一个 **获取记录** 操作找不到数据, 它返回 `null`通过“决定”元素验证数据,以检查非“null”结果.

### 进程构建器

_[进程构建器](https://github.com/corekraft/flow-linter-core/tree/master/src/main/rules/ProcessBuilder.ts)_ - 销售力量正在脱离工作流程规则和程序构建器,而倾向于流程。 开始将您的组织的自动化迁移到流程.

### 更新后递归

_[更新后递归](https://github.com/corekraft/flow-linter-core/tree/master/src/main/rules/RecursiveAfterUpdate.ts)_ - 更新后流量用于修改 **其他项目** 记录。 在同一记录上使用它们会导致复发. 考虑 **保护之前** 用于同一记录更新的流程.

### 相同的记录字段更新

_[同为记录的字段更新日期](https://github.com/corekraft/flow-linter-core/tree/master/src/main/rules/SameRecordFieldUpdates.ts)_ - 类似于触发器, **保护之前** 上下文可以通过 `$Record` 而不援引DML.

### SOQL 循环查询

_[SOQL 查询内部](https://github.com/corekraft/flow-linter-core/tree/master/src/main/rules/SOQLQueryInLoop.ts)_ - 为了防止超过最高州长限制,在流动结束时合并所有SOQL查询.

### 触发顺序

_[触发命令](https://github.com/corekraft/flow-linter-core/tree/master/src/main/rules/TriggerOrder.ts)_ - 保证您与 **触发顺序** 22年春天推出的房产.

### 未连接元素

_[未连接元素](https://github.com/corekraft/flow-linter-core/tree/master/src/main/rules/UnconnectedElement.ts)_ - 避免不为流动所利用的未连接元素,以保持流动的效率和可维护性.

### 不安全运行上下文

_[不安全运行背景](https://github.com/corekraft/flow-linter-core/tree/master/src/main/rules/UnsafeRunningContext.ts)_ - 这条流是用来运行的 **不共享的系统模式**,允许所有用户查看并编辑所有数据。 这可能导致数据访问不安全.

### 未使用的变量

_[无用可变](https://github.com/corekraft/flow-linter-core/tree/master/src/main/rules/UnusedVariable.ts)_ - 保持效率和可管理性,避免列入从未提及过的变量.

* * *

## 核心职能

### [`getRules(ruleNames?: string[]): IRuleDefinition[]`](https://github.com/corekraft/flow-linter-core/tree/master/src/main/libs/GetRuleDefinitions.ts)

_检索扫描仪中使用的规则定义._

### [`parse(selectedUris: any): Promise<ParsedFlow[]>`](https://github.com/corekraft/flow-linter-core/tree/master/src/main/libs/ParseFlows.ts)

_分析选定流程文件中的元数据 ._

### [`scan(parsedFlows: ParsedFlow[], ruleOptions?: IRulesConfig): ScanResult[]`](https://github.com/corekraft/flow-linter-core/tree/master/src/main/libs/ScanFlows.ts)

_对照已解析的流量运行规则并返回扫描结果 ._

### [`fix(results: ScanResult[]): ScanResult[]`](https://github.com/corekraft/flow-linter-core/tree/master/src/main/libs/FixFlows.ts)

_试图在可行的情况下适用自动修正._

* * *

## 配置

### 规则配置

高级规则通过允许规则在规则层面故意被禁用来提供颗粒控制,确保在所有流中一致应用. 此外,还引入了压制的概念,使用户能够"白名单"特定组件. 该机制允许界定例外情况,为规则的执行提供灵活性,同时保持总体治理和遵守.

贾森

```json
{
  "rules": {
    "<RuleName>": {
      "path": "local_path_of_your_js_file", // optional: when defined, this configuration will be used for the engine to recognize your custom rule
      "severity": "error",
      "expression": ">=58",
      "disabled": "true", // optional: when true, rule will not be applied to all flows being scanned
      "suppressions": ["LogACall"] // optional: when defined, takes an array of suppressed elements (not based on name but on specific type)
    }
  }
}
```

也门

```yaml
rules:
  MissingFaultPath: # User Defined Rule configuration
    path: "local_path_of_your_js_file" # Optional: when defined, this configuration will be used for the engine to recognize your rule
    severity: error # Optional: User Defined severity, can be `info`, `warn`, `error`
    expression: ">=58" # Optional: User defined expression, only applies if rule is Configurable=true
    disabled: "true" # Optional: when true, rule will not be applied to all flows being scanned
    suppressions: # Optional: when defined, takes an array of elements to be suppressed, keys can be found on suppressionElements on the rule definition
      - LogACall # Optional: when defined, rule engine will look at suppressionElement defined on the rule to match against this list
```

-   **严重性 :**
    
    -   严重程度的可选值为"error","warning"和"note".
    -   如果提供了严重性,则它会覆盖默认严重性,即"过重".
-   **表达式 :**
    
    -   表达式用于覆盖可配置规则中的标准值.
-   **路径 :**
    
    -   如果提供了一条路径,它可以或者用新的规则定义来取代一条现有的规则,或者加载自定义规则.
    -   确保路径中使用的规则名称与规则的导出类名称相匹配.

### 自定义规则接口

要创建使用规则配置的路径属性可以加载的自定义规则,它们需要遵守IRuleInterface. 请参看 _[自定义规则创建指南](https://github.com/corekraft/flow-linter-core/tree/master/docs/customruleguide.md)_ 详细指示.

### 例外配置

规定例外情况可以将特定情形排除在规则执行之外。 例外可以在流量,规则或结果级别上指定,以提供精细的控制. 下面是例外配置的现有属性的细分:

```json
{
  "exceptions": {
    "<FlowName>": {
      "<RuleName>": [
        "<ResultName>",
        "<ResultName>",
        ...
      ]
    },
    ...
  }
}
```

-   **流程Name :**
    
    -   例外适用的流量名称.
-   **规则Name:**
    
    -   定义例外的规则的名称.
-   **结果Name:**
    
    -   规则中规定例外情况的具体结果或条件.

## 开发设置

1.  克隆还原器 :
    
    ```bash
    git clone https://github.com/corekraft/flow-linter-core.git
    ```
    
2.  安装依赖性 :
    
    ```bash
    npm install
    ```
    
3.  构建工程 :
    
    ```bash
    npm run build
    ```
    
4.  运行测试 :
    
    ```bash
    npm run test
    ```
    
5.  (备选) 部署样本流量:
    
    ```bash
    npm run deploy:flows -- -o
    ```

## 常见问题

### @corekraft/flow-linter-core 是什么？

能够对与销售力量流动、过程构建器和工作流动相关的元数据进行静态分析的规则引擎\.注意：该包已被作者标记为弃用——Package deprecated due to licensing issues, please support the new product 'flow-lint' https://github\.com/corekraft/flow-lint this version is of MIT license and completely restarted

### 如何安装 @corekraft/flow-linter-core？

在项目目录运行 npm install @corekraft/flow-linter-core，或使用 pnpm add / yarn add / bun add。

### @corekraft/flow-linter-core 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @corekraft/flow-linter-core 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @corekraft/flow-linter-core 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js ^20 \|\| ^22 \|\| ^24。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @corekraft/flow-linter-core 可以商用吗？

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

### @corekraft/flow-linter-core 的下载量有多少？

根据 npm 官方下载统计，@corekraft/flow-linter-core 在 2026/10/11 – 2026/11/09 这 30 天内被下载 2,073 次，日均约 69 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @corekraft/flow-linter-core 还在维护吗？

最新版本 1\.1\.0 发布于 2025/09/07（1\.2 年前）；至今共发布 5 个版本，其中过去 12 个月发布了 0 个；首次发布于 2025/08/22。作者已将其标记为弃用，新项目建议寻找替代方案。

