音乐会 Linter 默认规则
一套综合规则,旨在对照行业最佳做法和一致的命名公约验证协奏会模式。 这个默认规则集有助于在整个项目中保持高质量,可读性和可维护的协奏曲模型. 它完全可配置 - 您可以扩展它, 添加新规则, 禁用已有规则, 或者创建全新的规则, 而无需扩展此规则 .
这个子包是.. @accordproject/concerto-linter 软件包。 读取 协奏曲 linter 读取 如果你想知道如何使用 规则与协奏曲模型.
目录
主要惠益
- 一致的代码样式: 在整个协奏曲模式中执行统一的命名惯例
- 错误预防: 发现常见的建模错误后再出问题
- 最佳做法: 自动应用行业标准建模做法
- 可自定义: 方便地扩展或修改规则,以符合项目的具体需要
- 整合准备: 与协奏曲 Linter 和您的开发工作流程无缝工作
现行规则
下表概述了默认规则集中可用的林入规则:
| 规则一d | 说明 |
|---|---|
| 名称空间版本 | 确保模型中的命名空间声明包含一个版本编号. 这个规则在命名空间中执行语义化的版本,促进清晰度和相容性管理. |
| 无保留关键词 | 强制规定用于在协奏曲模型中声明、属性和装饰者的名称不使用保留的关键词。 保留的关键词是语言特定术语,如果作为标识符使用,可能导致冲突或出乎意料的行为. |
| 帕斯卡尔案件申报 | 确保声明名称(scalar, enum, 概念, 资产, 参与者, 交易, 事件)遵循PascalCase命名惯例(例如"我的声明"). 这促进了各种示范宣言的一致性和可读性. |
| 骆驼案件财产 | 保证类型字符串, Double, Integer, Long, DateTime, 和 Boolean 的属性使用 CameCase 命名 。 这促进了整个模型中财产命名公约的一致性和可读性. |
| 上斯纳克- 大小写- enum- constants | 强制要求所有 enum 常数名称遵循 UPPER SNAKE CASE 公约 。 此规则检查每个 enum 属性名称, 并报告一个与所需的模式不符的错误 。 确保整个模型的注名的一致性和可读性. |
| 帕斯卡尔个案解码器 | 确保装饰者名称遵循PascalCase命名惯例(如"MyDecator"). 这促进了模型装饰器的一致性和可读性. |
| 字符串长度验证器 | 确保数据模型中的所有字符串属性都应用了长度验证符,这有助于防止数据长度不一致,并确保适当的存储. |
| 无空声明 | 检测并报告任何模拟申报为空. 这一规则有助于维持模型的完整性,确保所有宣言包含有意义的内容,防止将未使用或占位声明纳入模型. |
| 抽象必须子分类 | 确保模型中的每一个抽象声明至少有一个混凝土子类. 这有助于防止被使用或被孤的抽象类型,执行更好的模型设计. |
安装
首先,将软件包安装为开发依赖:
npm install --save-dev @accordproject/concerto-linter-default-ruleset
使用量
一旦安装, 当未指定自定义规则时, 默认规则器会自动被 Concesso Linter 使用 :
import { lintModel } from '@accordproject/concerto-linter';
// The default ruleset will be used automatically
const results = await lintModel(modelText);
console.log(results);
要明确规定默认规则 :
const results = await lintModel(modelText, { ruleset: 'default' });
自定义
要创建适合您项目需要的自有规则, 您可以扩展默认规则, 或者从头创建全新的规则 .
您的规则集应该用其中一种文件格式定义 : .spectral.yaml, (中文(简体) ), .spectral.yml, (中文(简体) ), .spectral.json,或 .spectral.js。协奏曲 Linter 将自动检测和使用这些文件,也可以使用 ruleset 属性 : ruleset: "./path/to/my-ruleset.yaml"。 。 。 .
扩展默认规则
您可以以多种格式扩展默认规则集:
YAML (. specture.yaml) (英语)
extends: '@accordproject/concerto-linter-default-ruleset'
JSON (. spect.json) (英语)
{
"extends": "@accordproject/concerto-linter-default-ruleset"
}
JavaScript (. s光谱.js) (英语)
const rules = require('@accordproject/concerto-linter-default-ruleset');
module.exports = {
extends: rules
};
使具体规则失效
通过设置与项目要求不匹配的特定规则可禁用 'off'中定义规则标识符 ruleset-main.ts 文件位于 concerto/packages/concerto-linter/default-ruleset/src。 。 。 .
可用规则ID
以下是所有可以禁用的规则ID:
| 规则ID | 说明 |
|---|---|
namespace-version | 确保命名空间包含版本编号 |
no-reserved-keywords | 防止使用保留关键词 |
pascal-case-declarations | 执行 PascalCase 声明 |
camel-case-properties | 强制骆驼 Case 属性 |
upper-snake-case-enum-constants | 对 enum 常数执行 UPPER SNAKE CASE |
pascal-case-decorators | 为装饰者执行PascalCase |
string-length-validator | 需要字符串长度验证符 |
no-empty-declarations | 防止空声明 |
abstract-must-subclassed | 确保抽象类有混凝土子类 |
YAML (. specture.yaml) (英语)
extends: '@accordproject/concerto-linter-default-ruleset'
rules:
pascal-case-declarations: 'off'
camel-case-properties: 'off'
JSON (. spect.json) (英语)
{
"extends": "@accordproject/concerto-linter-default-ruleset",
"rules": {
"pascal-case-declarations": "off",
"camel-case-properties": "off"
}
}
JavaScript (. s光谱.js) (英语)
const rules = require('@accordproject/concerto-linter-default-ruleset');
module.exports = {
extends: rules,
rules: {
'pascal-case-declarations': off,
'namespace-version': off
}
};
授权具体规则
你可以有选择地从一切开始 并且只允许特定的规则:
YAML (. specture.yaml) (英语)
extends: [['@accordproject/concerto-linter-default-ruleset', 'off']]
rules:
pascal-case-declarations: true
namespace-version: true
JSON (. spect.json) (英语)
{
"extends": [["@accordproject/concerto-linter-default-ruleset", "off"]],
"rules": {
"pascal-case-declarations": true,
"namespace-version": true
}
}
JavaScript (. s光谱.js) (英语)
const rules = require('@accordproject/concerto-linter-default-ruleset');
module.exports = {
extends: [[rules, 'off']],
rules: {
'pascal-case-declarations': true,
'namespace-version': true
}
};
调整规则严重性
您可以自定义每项规则的严厉程度,以控制如何报告违规行为.
- 0 个 = 错误(必须固定)
- 1个 = 警告(应处理)
- 2个 =信息(有用信息)
- 3个 = 提示(可选建议)
YAML (. specture.yaml) (英语)
extends: '@accordproject/concerto-linter-default-ruleset'
rules:
pascal-case-declarations: 'warn' # Change from error to warning
camel-case-properties: 'info' # Change to informational
JSON (. spect.json) (英语)
{
"extends": "@accordproject/concerto-linter-default-ruleset",
"rules": {
"pascal-case-declarations": "warn",
"camel-case-properties": "info"
}
}
JavaScript (. s光谱.js) (英语)
const rules = require('@accordproject/concerto-linter-default-ruleset');
module.exports = {
extends: rules,
rules: {
'pascal-case-declarations': 'warn',
'camel-case-properties': 'info'
}
};
创建自定义规则
无论是在默认规则中添加新规则还是创建全新的规则,都可以遵循Spectral规则格式. 关于综合文件,请参看 光谱规则文档。 。 。 .
以下是一个简单的例子,说明习惯规则是什么样子:
# description (optional): Explains what the ruleset is about.
description: "Declaration names (scalar, enum, concept, asset, participant, transaction, event) should be PascalCase."
# given (required): JSONPath expression that specifies where the rule applies.
given: "$.models[*].declarations[*].name"
# message (required): The error/warning message shown when the rule is violated.
message: "Declaration '{{value}}' should be PascalCase (e.g. 'MyDeclaration')"
# severity (optional): The level of violation.
# 0 = error, 1 = warning, 2 = info, 3 = hint
severity: 0
# then (required): Defines what function to apply and how.
then:
# function (required): The function that validates the rule.
function: casing
# functionOptions (optional): Extra options for the function.
functionOptions:
type: pascal
对于更为复杂的规则,您可以在此之后创建自定义的 JavaScript 函数 光谱规则文档 并导入到您的规则中,类似于内置规则是如何运作的.
许可证
Accord Project源代码文件在位于LICENSE文件的Apache许可证2.0版本(Apache-2.0)下提供. 协议项目文件文件根据创用CC-BY-4.0国际许可证提供.