@corekraft/flow-linter-core

中文文档
1.1.0发布于 2025/09/07MITTypeScriptCommonJS近 30 天下载 2073

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

此软件包已被标记为弃用

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

中文使用文档
文档目录34 节
  1. 默认规则
  2. 循环中的行动呼吁
  3. 过时的 API 版本
  4. 自动布局
  5. 复制 API 名称
  6. 杂交复杂度
  7. 循环中的 DML 语句
  8. 复制 DML 操作
  9. 流程命名公约
  10. 获取全部记录字段
  11. 硬码 Id
  12. 硬码 Url
  13. 非活动流量
  14. 缺少错误路径
  15. 缺少流量描述
  16. 缺少 Null 处理器
  17. 进程构建器
  18. 更新后递归
  19. 相同的记录字段更新
  20. SOQL 循环查询
  21. 触发顺序
  22. 未连接元素
  23. 不安全运行上下文
  24. 未使用的变量
  25. 核心职能
  26. getRules(ruleNames?: string[]): IRuleDefinition[]
  27. parse(selectedUris: any): Promise<ParsedFlow[]>
  28. scan(parsedFlows: ParsedFlow[], ruleOptions?: IRulesConfig)…
  29. fix(results: ScanResult[]): ScanResult[]
  30. 配置
  31. 规则配置
  32. 自定义规则接口
  33. 例外配置
  34. 开发设置

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

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

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


默认规则

循环中的行动呼吁

动作呼叫内环 - 为防止超过最高州长限额,最好利用循环结束时包含一个收集变量的单项行动呼吁,合并和充实最高要求.

过时的 API 版本

APVERSION 计划 - 采用较新的API组件可能导致与更古老的流程版本产生出出乎意料的问题,因为它们可能与基础力学不一致。 从API 50.0版本开始 Api 版本 属性在流动对象上随时可用。 为确保平稳运行并减少API版本之间的差异,强烈建议定期更新并维护.

自动布局

自动拉尤特 - 将 Canvas Mode 设置为 Auto-Layout , 元素被间隔, 连接, 自动对齐, 使您的流程保持整齐有序, 节省时间 .

复制 API 名称

复制APIName - 保持多个名称相似的元素,如 Copy_X_Of_Element,可以降低您的流量的总体可读性。 复制并粘贴这些元素时,请记住更新新创建的复制品的API名称.

杂交复杂度

杂交 - 循环和决定规则的数目,加上决定的数目。 使用1个分流和2个分流的组合,将分流分解为多个简洁的触发--命令分流,以降低单流内部的环形复杂度,确保可维护性和简单性.

循环中的 DML 语句

DML 声明内环 - 为了防止超过顶级州长限制,在流量结束时,合并所有数据库操作——记录创建、更新或删除.

复制 DML 操作

复制DML操作 - 当一流执行两个屏幕之间的数据库更改或动作时,防止用户在屏幕之间向后导航;否则,可以进行重复的数据库操作.

流程命名公约

流程Name - 流动的可读性至关重要。 建立命名公约可大大提高可找到性、可搜索性和整体一致性。 至少包含一个域并简要说明流量的动作,例如 Service_OrderFulfillment。 。 。 .

获取全部记录字段

获取所有字段 - 遵循最低特权原则(POLP),避免使用 获取记录 “自动存储所有字段”,除非有必要.

硬码 Id

硬码 - 避免硬编码ID,因为它们是Org特定的。 相反,在流量开始时将它们传递到变量中——通过合并 域 URL参数或 a 获取记录 键.

硬码 Url

硬码Url - 避免硬编码URL,因为它们是环境特有的。 使用一个 $API 公式(首选)或特定环境来源,如自定义标签、元数据或设置.

非活动流量

不活动花 - 就像清理出你的衣柜:删除未使用的流动至关重要。 非活性流仍然可能造成麻烦——例如测试时不慎删除记录,或者作为分流被激活.

缺少错误路径

缺少错误 - 流动可能无法按预期执行行动。 默认情况下,流会向用户显示出错误并电子邮件给创建者. 通过包含错误路径来自定义此行为 .

缺少流量描述

流程描述 - 描述在文件编制方面起关键作用。 我们强烈建议列入使用流动地点及其预期目的的细节.

缺少 Null 处理器

失踪的纽尔·汉德勒 - 当一个 获取记录 操作找不到数据, 它返回 null通过“决定”元素验证数据,以检查非“null”结果.

进程构建器

进程构建器 - 销售力量正在脱离工作流程规则和程序构建器,而倾向于流程。 开始将您的组织的自动化迁移到流程.

更新后递归

更新后递归 - 更新后流量用于修改 其他项目 记录。 在同一记录上使用它们会导致复发. 考虑 保护之前 用于同一记录更新的流程.

相同的记录字段更新

同为记录的字段更新日期 - 类似于触发器, 保护之前 上下文可以通过 $Record 而不援引DML.

SOQL 循环查询

SOQL 查询内部 - 为了防止超过最高州长限制,在流动结束时合并所有SOQL查询.

触发顺序

触发命令 - 保证您与 触发顺序 22年春天推出的房产.

未连接元素

未连接元素 - 避免不为流动所利用的未连接元素,以保持流动的效率和可维护性.

不安全运行上下文

不安全运行背景 - 这条流是用来运行的 不共享的系统模式,允许所有用户查看并编辑所有数据。 这可能导致数据访问不安全.

未使用的变量

无用可变 - 保持效率和可管理性,避免列入从未提及过的变量.


核心职能

getRules(ruleNames?: string[]): IRuleDefinition[]

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

parse(selectedUris: any): Promise<ParsedFlow[]>

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

scan(parsedFlows: ParsedFlow[], ruleOptions?: IRulesConfig): ScanResult[]

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

fix(results: ScanResult[]): ScanResult[]

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


配置

规则配置

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

贾森

{
  "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)
    }
  }
}

也门

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. 请参看 自定义规则创建指南 详细指示.

例外配置

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

{
  "exceptions": {
    "<FlowName>": {
      "<RuleName>": [
        "<ResultName>",
        "<ResultName>",
        ...
      ]
    },
    ...
  }
}
  • 流程Name :

    • 例外适用的流量名称.
  • 规则Name:

    • 定义例外的规则的名称.
  • 结果Name:

    • 规则中规定例外情况的具体结果或条件.

开发设置

  1. 克隆还原器 :

    git clone https://github.com/corekraft/flow-linter-core.git
    
  2. 安装依赖性 :

    npm install
    
  3. 构建工程 :

    npm run build
    
  4. 运行测试 :

    npm run test
    
  5. (备选) 部署样本流量:

    npm run deploy:flows -- -o
    

版本与发布记录

@corekraft/flow-linter-core 共发布 5 个版本,首次发布于 2025/08/22;过去 12 个月发布了 0 个版本。

版本发布日期距今
1.1.0latest2025/09/071.2 年前
1.0.3beta2025/09/071.2 年前
1.0.22025/09/071.2 年前
1.0.12025/08/221.2 年前
1.0.02025/08/221.2 年前

关于 @corekraft/flow-linter-core 的常见问题

@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。作者已将其标记为弃用,新项目建议寻找替代方案。