#lint #proposal #ethereum #format #source #default #eipv

app eipw

Ethereum改进提案检查器,比eipv多一个。

3个版本 (破坏性)

0.8.0 2023年10月27日
0.7.0 2023年10月26日
0.6.0 2023年9月29日

#2886 in 神奇豆

MPL-2.0 许可证

240KB
5.5K SLoC

eipw

eipv多一个的EIP验证器。

USAGE:
    eipw [OPTIONS] [SOURCES]...

ARGS:
    <SOURCES>...    Files and/or directories to check

OPTIONS:
        --format <FORMAT>     Output format [default: text] [possible values: text, json]
    -h, --help                Print help information
        --lints <LINTS>       Additional lints to enable
        --list-lints          List all available lints
        --no-default-lints    Do not enable the default lints

演示

示例EIP

---
eip: 2
description: A really short example of an EIP.
title: Sample of an EIP
author: Sam Wilson (@SamWilsn)
discussions-to: https://example.com/
status: Living
type: Meta
created: 2022-06-30
---

## Specification

Implementers of this EIP must...

## Abstract

This is an abstract!

输出

error[markdown-order-section]: section `Specification` must come after `Motivation`
  --> /tmp/demo.md
   |
12 | ## Specification
   |
error[preamble-order]: preamble header `description` must come after `title`
 --> /tmp/demo.md
  |
3 | description: A really short example of an EIP.
  |

检查

id 描述
markdown-html-comments 审查就绪的EIP中没有HTML注释。
markdown-json-cite 所有 csl-json 代码块都遵循正确的模式。
markdown-link-first EIP的第一提及其他必须是链接。
markdown-link-status 文中链接的EIP状态比当前提案更靠后。
markdown-order-section 没有多余的章节,且章节顺序正确。
markdown-re-eip-dash 其他EIP使用EIP-X引用,而不是EIPX或EIP X。
markdown-re-erc-dash 其他ERC使用ERC-X引用,而不是ERCX或ERC X。
markdown-refs ERC使用ERC-X引用,而其他提案使用EIP-X。
markdown-rel-links 页面中的所有URL都是相对的。
markdown-req-section 提案正文中包含所需章节。
preamble-author 作者标题格式正确,至少列出了一个GitHub用户。
preamble-date-created created标题是一个日期。
preamble-date-last-call-deadline last-call-deadline标题是一个日期。
preamble-discussions-to discussions-to标题是一个有效的URL。
preamble-eip eip标题是一个非负整数。
前言-枚举类别 category 标题是一个已认可值。
前言-枚举状态 status 标题是一个已认可值。
前言-枚举类型 type 标题是一个已认可值。
前言-文件名 文件名反映EIP编号。
前言-长度描述 description 标题不太长。
前言-长度标题 title 标题不太长。
前言-长度要求 requires 标题至少有一个条目。
前言-列表作者 author 标题是正确格式的逗号分隔列表。
前言-列表要求 requires 标题是正确格式的逗号分隔列表。
前言-无重复 没有重复的标题。
前言-顺序 前言标题的顺序是正确的。
前言-重新描述 描述不包含“标准”或类似词语。
前言-重新描述冒号 描述不包含任何“:”字符。
前言-重新描述EIP破折号 description标题中引用的EIP使用破折号。
前言-重新描述ERC破折号 description标题中引用的ERC使用破折号。
前言-重新讨论到 discussions-to标题指向以太坊魔法师。
前言-重新标题 标题不包含“标准”或类似词语。
前言-重新标题冒号 标题不包含任何“:”字符。
前言-重新标题EIP破折号 title标题中引用的EIP使用破折号。
前言-重新标题ERC破折号 title标题中引用的ERC使用破折号。
前言-引用描述 description标题中引用的ERC使用ERC-前缀。
前言-引用标题 title标题中引用的ERC使用ERC-前缀。
前言-要求 所有必需的前言标题都存在。
前言-要求类别 当需要时才存在category标题。
前言-要求最后调用截止日期 当需要时才存在last-call-deadline标题。
前言-要求提取原因 当需要时才存在withdrawal-reason标题。
前言-要求引用描述 description标题中提到的提案出现在requires标题中。
前言-要求引用标题 title标题中提到的提案出现在requires标题中。
前言-要求状态 requires中列出的EIP状态比当前提案更靠前。
前言-修剪 前言字段周围没有额外的空白。
前言-无符号整数要求 requires标题是无符号整数的排序列表。

JavaScript / WebAssembly

eipw-lint-js包将eipw作为一个npm包打包,用于JavaScript / TypeScript。

您可以在npm上找到此包

构建和发布

cd eipw-lint-js
wasm-pack test --node
wasm-pack build -t nodejs
wasm-pack publish -t nodejs

依赖关系

~18-28MB
~444K SLoC