Danger项目快速Ruby语法指南
前言
对于使用Danger进行代码审查自动化的开发者来说,掌握基本的Ruby语法是必不可少的。本文将为有一定编程经验的开发者提供一个快速上手的Ruby语法概览,重点介绍在编写Dangerfile时最常用的语言特性。
环境准备
Dangerfile本质上是一个脚本执行环境,在这个环境中你主要需要学会如何操作Danger API暴露的数据。虽然不需要成为Ruby专家,但掌握一些基础语法能让你更高效地编写审查逻辑。
推荐安装pry
作为Ruby的交互式环境(REPL):
gem install pry
pry
基础语法要点
变量与方法
Ruby变量无需关键字声明:
path = "./src/main.swift"
方法调用括号可选,命名参数常见:
warn("潜在问题", file: path, line: 42)
条件语句
Ruby的条件语句形式多样:
# 传统写法
if files_changed > 10
warn("改动文件过多")
end
# 单行写法
warn("改动文件过多") if files_changed > 10
# 否定条件
unless tests_updated
fail("请添加测试用例")
end
字符串操作
双引号字符串支持插值,是更常用的选择:
author = "Orta"
message = "欢迎#{author}的代码提交"
# 常用字符串方法
filename = "Dangerfile"
filename.start_with? "Danger" # true
filename.gsub("file", "File") # "DangerFile"
注意:方法名带!
表示会修改原对象。
集合操作
数组处理
Ruby的集合操作非常强大,常用方法包括each
, map
, select
等:
# 单行块语法
modified_files.map { |f| File.basename(f) }
# 多行块语法
modified_files.each do |file|
next if file.include?(".md")
analyze_code(file)
end
# 简写形式
lowercase_files = modified_files.map(&:downcase)
文件列表
Danger扩展了FileList
类,支持通配符匹配:
files = Danger::FileList.new(["src/main.swift", "tests/test.swift"])
files.include? "src/*.swift" # true
文件与系统命令
文件读取
content = File.read("CHANGELOG.md")
执行命令
三种主要方式:
# 获取命令输出
output = `git diff --name-only`
# 执行命令并检查状态
system("bundle install") || fail("依赖安装失败")
# exec会替换当前进程(Dangerfile中很少使用)
JSON处理
解析JSON数据需要先引入库:
require "json"
config = JSON.parse(File.read("config.json"))
调试技巧
可以在Dangerfile执行环境中启动交互式调试:
require 'pry'
binding.pry # 在此处进入交互式环境
结语
掌握这些Ruby基础知识后,你就能更自如地编写Dangerfile来自动化代码审查流程。记住,Danger的强大之处在于将简单的Ruby脚本与代码审查流程相结合,不必追求复杂的Ruby技巧,保持脚本的清晰可读才是关键。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考