RuboCop Sorbet 项目教程
1. 项目的目录结构及介绍
RuboCop Sorbet 项目的目录结构如下:
rubocop-sorbet/
├── Gemfile
├── LICENSE.txt
├── README.md
├── Rakefile
├── bin/
│ └── rubocop-sorbet
├── config/
│ └── rbi.yml
├── lib/
│ ├── rubocop/
│ │ ├── cop/
│ │ │ └── sorbet/
│ │ └── sorbet.rb
│ └── rubocop-sorbet.rb
└── spec/
└── rubocop/
└── cop/
└── sorbet/
目录结构介绍
- Gemfile: 定义了项目的依赖关系。
- LICENSE.txt: 项目的许可证文件。
- README.md: 项目的说明文档。
- Rakefile: 用于定义项目的 Rake 任务。
- bin/: 包含项目的可执行文件。
- config/: 包含项目的配置文件,如
rbi.yml
。 - lib/: 包含项目的主要代码,特别是 RuboCop 的扩展代码。
- rubocop/: 包含 RuboCop 的扩展代码。
- cop/: 包含 Sorbet 相关的 RuboCop 规则。
- sorbet.rb: 加载 Sorbet 扩展的主文件。
- rubocop-sorbet.rb: 项目的主入口文件。
- rubocop/: 包含 RuboCop 的扩展代码。
- spec/: 包含项目的测试代码。
2. 项目的启动文件介绍
项目的启动文件是 lib/rubocop-sorbet.rb
。这个文件是 RuboCop Sorbet 扩展的主入口文件,负责加载 Sorbet 相关的 RuboCop 规则。
# lib/rubocop-sorbet.rb
require 'rubocop'
module RuboCop
module Sorbet
PROJECT_ROOT = Pathname.new(__dir__).parent.parent.expand_path.freeze
CONFIG_DEFAULT = PROJECT_ROOT.join('config', 'default.yml').freeze
CONFIG = YAML.safe_load(CONFIG_DEFAULT.read).freeze
private_constant(:CONFIG_DEFAULT, :PROJECT_ROOT)
end
end
require_relative 'rubocop/sorbet'
启动文件介绍
- require 'rubocop': 加载 RuboCop 库。
- RuboCop::Sorbet: 定义了 Sorbet 扩展的命名空间。
- PROJECT_ROOT: 定义了项目的根目录。
- CONFIG_DEFAULT: 定义了默认配置文件的路径。
- CONFIG: 加载并解析默认配置文件。
- require_relative 'rubocop/sorbet': 加载 Sorbet 扩展的具体实现。
3. 项目的配置文件介绍
项目的配置文件主要位于 config/
目录下,其中最重要的是 rbi.yml
文件。
config/rbi.yml
这个文件用于配置 Sorbet 相关的 RuboCop 规则。
# config/rbi.yml
AllCops:
Include:
- "sorbet/rbi/shims/**/*rbi"
Sorbet/FalseSigil:
Exclude:
- "lib/example.rb"
配置文件介绍
- AllCops: 定义了所有 RuboCop 规则的通用配置。
- Include: 指定需要检查的文件路径。
- Sorbet/FalseSigil: 定义了 Sorbet 特定的 RuboCop 规则。
- Exclude: 指定需要排除检查的文件路径。
通过这些配置文件,用户可以自定义 RuboCop Sorbet 的行为,以适应不同的项目需求。