网站资料 · 技术情报 · 相似站点

docs.grit.io

暂未发现付费内容
访问网站
站内浏览 1 次 访问跳转 1 次 正常
Grit - Declarative Code Search and Transformation 首页完整截图

快速了解

分类
编程开发
语言
未知
付费内容信号
暂未发现付费内容已观察
注册年份
未知
主机
Fastly推测
HTTPS 证书信任
通过已观察
最后更新

AI 生成的网站测评

AI 生成

本测评由 AI 根据公开资料生成,未经逐项人工核实;域名、证书等事实以本页采集数据为准。

Grit是什么网站?

Grit 是一个用声明式查询语言 GritQL 搜索和批量改写源代码的网站,核心用途是把“找代码、改代码”写成可复用、可执行的规则,而不是靠人工逐处替换。

它的功能用途

  • 代码搜索与自动修复:用代码片段本身当查询,反引号包住要匹配的代码,$变量 代表可变部分。例如 `console.log($msg)` => `winston.log($msg)` 表示把所有 console.log 调用替换成 winston.log。
  • 自定义 lint 规则:把模式保存成团队级 lint,用 where 条件排除特殊情况,比如跳过测试文件中的 console.log。
  • 大规模迁移:资料称可借助 Rust 和查询优化处理 1000 万行以上的仓库,适合 API 迁移、框架升级、依赖升级等场景。
  • 多语言覆盖:支持 JavaScript/TypeScript、Python、JSON、Java、Terraform、Solidity、CSS、Markdown、YAML、Rust、Go、SQL。
  • 模式复用:内置模块系统,可访问 200 多个标准模式,也能分享自己写的模式。

谁在什么情况下用它

  • 团队要统一代码规范,但现成 lint 规则表达不了自己的特殊约束。
  • 做框架或 API 升级,需要在上百万行代码里批量改调用方式。
  • 想系统性地清理某类写法,并让修复规则可以重复执行、进 CI。

选择时的注意点

Grit 的侧重点是“声明式改写 + 自动修复”,适合把迁移和规范沉淀成规则。如果只是临时搜几处代码,普通编辑器搜索更直接;如果要做跨仓库、可复用的批量改造,GritQL 的表达能力和模块复用更合适。下一步可从它的 CLI Quickstart 和交互式教程入手,先写一条替换规则在小型仓库验证。

GritQL 如何用反引号写一个简单的搜索替换查询?

在 GritQL 里,最简单的搜索替换就是把“原代码片段”和“目标代码片段”各用一对反引号包起来,中间用 => 连接,再交给 grit apply 执行。代码片段里想匹配任意内容时,用 $变量名 这样的元变量占位。

基本写法

grit apply '`console.log($msg)` => `winston.log($msg)`'

这条查询会找到所有 console.log(...) 调用,把函数名换成 winston.log,括号里的参数原样保留。$msg 是元变量,匹配到的内容在替换结果里会被复用。

加条件收窄范围

如果只想改一部分调用,可以在替换规则后加 where 子句。例如排除测试文件里的调用:

`console.log($msg)` => `winston.log($msg)` where {
  $msg <: not within or { `it($_, $_)`, `test($_, $_)` }
}

where 用来表达“在什么情况下才替换”,适合把批量改写限制在业务代码里,避免误改测试。

使用要点

  • 反引号里的代码片段本身就是合法查询,不需要先学 AST 结构;想匹配更复杂的结构时再逐步加 where、模式修饰符等。
  • 元变量 $msg 在搜索侧和替换侧同名,替换时自动带入匹配内容;$_ 表示不关心该位置的具体内容。
  • 这类查询可以保存为自定义 lint 规则,配合自动修复在团队里持续执行,而不只是一次性脚本。
  • 同一套写法覆盖 JavaScript/TypeScript、Python、Java、Go、Rust、SQL、Terraform、CSS、Markdown、YAML 等语言,跨语言迁移时不必换工具。

适合谁用

需要在几十万到上百万行代码里做 API 迁移、依赖升级或统一代码风格的团队,可以直接从一条反引号查询开始,再逐步加条件;个人项目里做一次性批量替换也同样适用。

如何把 GritQL 模式保存为自定义 lint 并排除特定代码场景?

在 GritQL 里,把模式保存为自定义 lint 的核心做法是:写一条“匹配 → 改写”的规则,把需要排除的场景放进 where 子句,然后用 CLI 应用或保存为可复用的模式。

基本写法

以资料中的示例为例,把 console.log 改写为 winston.log,并排除测试文件里的调用:

`console.log($msg)` => `winston.log($msg)` where {
  $msg <: not within or { `it($_, $_)`, `test($_, $_)` }
}
  • 反引号里的代码片段就是匹配模式,$msg 是元变量,能捕获任意参数。
  • => 后面是自动修复后的目标代码,所以这条规则既是 lint 也是 auto-fix。
  • where 子句用来加条件,not within or { ... } 表示“不位于 it(...) 或 test(...) 调用内部”,从而排除测试场景。

保存与复用

资料提到 Grit 有内置模块系统,可访问 200+ 标准模式,也能分享自己的模式。实际做法是把规则写入模式文件(如 .grit/patterns/ 下的 .grit 文件),之后通过 grit apply 或 CI 集成重复使用;需要团队共享时,按模块方式引入或发布。

排除场景的常见写法

需求 写法思路
排除测试代码 not within or { \it($, $)`, `test($, $)` }`
排除特定文件或目录 在模式配置中限定目标路径,而不是写进匹配表达式
排除某类调用上下文 用 within / not within 组合嵌套条件

下一步

先写最小规则,用 grit apply 在单个文件上验证匹配范围;确认排除条件生效后,再接入 CI 作为持续 lint。资料中的 Interactive Tutorial 和 Pattern Library 可用于对照标准模式的写法。

Grit 支持哪些编程语言的代码搜索与改写?

Grit 的 GritQL 支持以下语言的代码搜索与改写:JavaScript/TypeScript、Python、JSON、Java、Terraform、Solidity、CSS、Markdown、YAML、Rust、Go、SQL。

各语言的使用场景

  • JavaScript/TypeScript、Python、Java、Go、Rust:适合做大规模 API 迁移、框架升级和团队自定义 lint。例如把 console.log($msg) 批量改成 winston.log($msg),并用 where 条件排除测试文件中的调用。
  • JSON、YAML、Terraform:适合配置文件和基础设施代码的批量改写,比如统一字段名、调整资源定义。
  • CSS、Markdown:适合样式和文档的批量整理,例如统一选择器写法或批量替换文档片段。
  • Solidity、SQL:适合合约和查询语句的模式化检查与改写。

选择条件

如果项目以 JavaScript/TypeScript 为主,GritQL 的示例和内置模式覆盖最直接;跨多种语言维护仓库时,可以用同一套声明式写法分别处理,不必为每种语言换工具。需要批量改写并附带自动修复规则时,优先看目标语言是否在上面的列表内。

如何在 VS Code 中使用 Grit 来搜索或修改代码?

Grit 在 VS Code 中通过官方扩展使用:安装扩展后,在编辑器里用 GritQL 模式搜索代码,或直接把匹配到的结构改写成新写法。GritQL 的规则是“任意代码片段即查询”,例如用反引号写 `console.log($msg)` => `winston.log($msg)`,就能把匹配的 console.log 调用替换成 winston.log,变量部分用 $msg 这类元变量保持不变。

在 VS Code 里的典型用法

  • 搜索:写一个代码片段作为模式,扩展会定位所有匹配位置,不需要先理解 AST 结构。
  • 修改:在模式后加 => 和目标写法,预览后应用替换;适合批量改 API 调用、统一日志写法等。
  • 限定范围:用 where 条件排除特定场景,例如官方示例在替换 console.log 时排除 it(...)、test(...) 测试块内的调用。
  • 复用规则:Grit 内置 200 多个标准模式,也可保存自己的模式作为自定义 lint 强制执行。

适合什么场景

需要跨大量文件统一改法时最有用,例如迁移框架/API、升级依赖时处理破坏性变更、落实团队特有的代码规范。GritQL 支持 JavaScript/TypeScript、Python、JSON、Java、Terraform、Solidity、CSS、Markdown、YAML、Rust、Go、SQL 等语言,同一套写法可覆盖多语言仓库。

选择条件

如果只是单文件内简单文本替换,VS Code 自带查找替换更直接;如果要按代码结构匹配、带条件排除、并希望规则能保存复用或在 CI 中执行,GritQL 更合适。建议先在 VS Code 扩展里用小范围文件试跑一条改写规则,确认匹配范围后再扩大应用。

如何把 GritQL 集成到持续集成流程中自动修复代码问题?

GritQL 本身是声明式代码搜索与改写语言,集成到 CI 的关键是把“查询 + 自动修复”变成 CI 里可重复执行的一步:用 Grit CLI 在流水线中运行已保存的模式,命中即改写文件,再让差异检查决定是否阻断合并。文档明确 GritQL 内置 auto-fix 规则,适合“发现问题就顺手改掉”的流水线场景。

在 CI 中落地的典型流程

  1. 把规则存成可复用模式:在仓库里维护 GritQL 模式文件(例如把 console.log($msg) 改为 winston.log($msg)),并用 where 子句排除测试文件等误报场景。文档示例用 not within 排除 it(...)、test(...) 上下文,这类条件适合直接放进 CI 规则。
  2. CI 中执行 CLI:在流水线里安装并运行 Grit CLI,对目标目录执行已保存模式;GritQL 支持 JavaScript/TypeScript、Python、Java、Go、Rust、SQL、Terraform、YAML、Markdown 等多种语言,可按仓库技术栈选择。
  3. 用差异决定结果:运行后检查工作区是否有改动。有改动说明存在可自动修复的问题,可让 CI 失败并提示提交修复,或把改动作为补丁产物输出;无改动则通过。
  4. 把“不可自动修复”的情况留给 lint 报告:GritQL 也用于自定义 lint,团队特定规范可以先以报告形式上线,稳定后再加 auto-fix 规则。

适合谁、什么情况下用

  • 大规模迁移:API 或框架升级涉及几十万到百万行代码时,用 GritQL 在 CI 中批量改写,比人工逐文件修改更一致。文档称其可扩展到 1000 万行以上仓库。
  • 团队规范 enforcement:把“禁止在测试里用 console.log”这类团队约定写成模式,CI 每次检查并自动修复。
  • 依赖升级处理 breaking change:升级依赖后,用模式统一替换旧调用方式。

选择条件

需求 建议
只想报告问题、不自动改 先用 GritQL 做自定义 lint,暂不启用 auto-fix
希望 CI 自动提交修复 在 CI 中运行 CLI 后检测 diff,由流水线决定失败或产出补丁
规则误报多 在模式里加 where 条件缩小匹配范围,再进 CI
多语言仓库 按语言分别维护模式,GritQL 覆盖主流语言

下一步动作

先在本地用 CLI 跑通一条模式,确认改写结果符合预期;再把该模式加入 CI 脚本,并设置“有 diff 即失败”的门槛。规则稳定后,逐步把团队 lint 规则迁移为带 auto-fix 的 GritQL 模式。

在 docs.grit.io 上从哪里开始学习 GritQL

想系统学 GritQL,最省力的路径是:先看 Overview 建立概念,再跟着 Interactive Tutorial 动手,然后用 CLI Quickstart 把 Grit 装到本地跑通第一条查询,遇到语法细节再查 Language Reference。这套顺序适合第一次接触 GritQL、想尽快把“搜索并改写代码”跑起来的人;如果你只想查某个语法点,直接跳到 Language Reference 即可。

各入口分别解决什么问题

docs.grit.io 的文档导航里,与入门直接相关的有四个入口,职责并不重叠:

入口 作用 适合什么时候看
Getting Started / Overview 说明 GritQL 是什么、为什么用它 第一次接触,想判断是否值得投入
Interactive Tutorial 分步教程,边学边练 已经决定要学,需要动手路径
CLI Quickstart 安装并使用 Grit CLI 想在本机或仓库里实际执行查询
Language Reference 完整的 GritQL 语言文档 写模式时查语法、条件、修饰符

此外导航中还有 Pattern Library、Config、Testing、Guides(如 Continuous Integration、Authoring GritQL、Imports、VS Code、Sharing Patterns)等页面,属于进阶内容,建议在跑通第一条查询之后再看。

先理解 GritQL 的核心机制

GritQL 是一种声明式的代码搜索与改写语言。它的关键设计是:任何代码片段本身就是一条合法的 GritQL 查询,不需要先掌握 AST 细节。配合反引号和元变量(如 $msg),就能表达“找到什么、改成什么”。

官方 Quick Example 给出的写法是:

grit apply '`console.log($msg)` => `winston.log($msg)`'

这条查询的含义是:匹配所有 console.log(...) 调用,把日志函数替换为 winston.log(...),括号内的参数通过元变量 $msg 原样保留。左边是匹配模式,=> 右边是改写结果。

同一页面还展示了如何把模式保存为自定义 lint,并用 where 子句排除特定情况:

`console.log($msg)` => `winston.log($msg)` where {
  $msg <: not within or { `it($_, $_)`, `test($_, $_)` }
}

这里的 where 表示附加约束:当 $msg 出现在 it(...) 或 test(...) 调用内部时不改写。这正是 GritQL 从“简单替换”走向“可控重构”的地方——先写匹配和替换,再用条件收窄范围。

按目标选择学习路线

目标一:先判断要不要用

看 Overview 的 “Why GritQL?” 部分。文档给出的定位包括:无需学习 AST 细节即可上手;借助 Rust 和查询优化可扩展到千万行级仓库;通过内置模块系统复用 200+ 标准模式或分享自己的模式;支持 JavaScript/TypeScript、Python、JSON、Java、Terraform、Solidity、CSS、Markdown、YAML、Rust、Go、SQL 等多种语言;内置 auto-fix,便于快速修复。

文档列出的典型场景是:大规模迁移(跨百万行迁移 API、框架或重构代码库)、自定义 lint(落实团队规范)、代码质量改进、依赖升级时处理破坏性变更。对照你的任务属于哪一类,就能判断投入是否划算。

目标二:动手学会写模式

进入 Interactive Tutorial 按步骤练习。练习时建议始终围绕一个真实小任务,例如“把项目里的 console.log 换成统一日志库”,这样每学一个语法点都能立刻验证效果。

目标三:在本地或仓库里执行

看 CLI Quickstart,按文档安装并使用 Grit CLI,然后运行上面那条 grit apply 查询。验证方法是:在测试仓库里放一个含 console.log 的文件,执行后确认输出被替换;再把它放进 it(...) 内部,确认 where 条件生效、未被改写。常见卡点是模式里的反引号和元变量书写不正确,以及改写范围超出预期——先用小范围文件试跑,再扩大。

目标四:查语法细节

写模式过程中遇到条件、模式修饰符、作用域(Bubble and Scoping)、函数、常见惯用法等问题,查 Language Reference 下对应的 Pattern、Conditions、Pattern Modifiers、Functions、Common Idioms 等页面。Testing GritQL 页面则适合在把模式沉淀为团队规范前做验证。

入门之后可以看什么

跑通基本查询后,Config 用于配置,Pattern Library 用于查找可复用模式,Sharing Patterns 与 Imports 涉及模式共享和导入,VS Code 页面介绍编辑器集成,Guides 下的 Continuous Integration 则说明如何把检查接入流水线。这些都属于“已经会用”之后的效率提升,不必在第一天全部读完。

网站信息概览

从当前可见信息判断,当前搜索与社交信号不够完整,网站可能难以稳定控制用户在点击前看到的信息,从而影响识别度和点击意愿。

域名与注册信息

未知

DNS 与邮件配置

综合当前可观察字段,名称服务器由 Cloudflare 提供,使用专业 DNS 托管。综合当前可观察字段,邮件交换服务器可识别为 Google Workspace。DNS 中没有 CNAME 记录,这是常见的直接解析方式。可见邮件策略包含 SPF 和 DMARC,DKIM 是否启用尚待进一步确认。从当前可见信息判断,第三方验证记录涉及 Google。

TLS 与证书

TLS 使用现代椭圆曲线公钥 EC。服务器返回了完整证书链。证书未包含组织名称,按现有字段归为 DV 域名验证证书。结合现有公开信息推测,HTTPS 证书由 Google Trust Services 托管体系提供。该证书有效期约 90 天,剩余 63 天。

HTTP 响应

6 项常用安全响应配置均未出现。CORS 允许任意来源读取该响应。响应已省略 X-Powered-By 标头。依据当前可见线索,检测到 cf-ray、x-cache、x-served-by、via,前端存在代理或边缘网络。未在响应头中发现明显的内部地址或调试信息。

技术栈分析

从公开技术信号来看,已识别的搭建技术包括 Next.js、Tailwind CSS、Cloudflare、Fastly,但版本保持隐藏。这样的配置能降低被快速匹配已知版本问题的便利性,但不能替代及时更新。

SEO 与社交分享

首页描述:未知。当前元数据缺少 Canonical。社交分享时平台需要自行提取页面内容。页面标题长度为 49 个字符,处于常用展示范围。当前首页面向常规搜索抓取开放。

主机和电子邮件

DNSCloudflare
主机Fastly
电子邮件Google Workspace
IP 地理位置(推测,CDN 或代理可能与源站不同) 位置未知 推测 104.21.29.97

域名登记事实

RDAP / WHOIS

未知

DNS 记录

DNS

类型名称值TTL优先级
Adocs.grit.io104.21.29.97300—
Adocs.grit.io172.67.148.188300—
AAAAdocs.grit.io2606:4700:3033::ac43:94bc300—
AAAAdocs.grit.io2606:4700:3034::6815:1d61300—
MXgrit.ioaspmx.l.google.com3001
MXgrit.ioalt1.aspmx.l.google.com3005
MXgrit.ioalt2.aspmx.l.google.com3005
MXgrit.ioalt3.aspmx.l.google.com30010
MXgrit.ioalt4.aspmx.l.google.com30010
NSgrit.ioconnie.ns.cloudflare.com86400—
NSgrit.iojulian.ns.cloudflare.com86400—
TXTgrit.iogoogle-gws-recovery-domain-verification=42080962300—
TXTgrit.iogoogle-site-verification=fPwQ0CoefWprwJm9qM5rkYCXI2Ng6wJjBaOnWE5ofBg300—
TXTgrit.iov=spf1 include:_spf.google.com ~all300—
TXTgrit.iovc-domain-verify=grit.io,9522270d39b9249c2042300—
DSgrit.io2371 13 2 a8bc69cb9ef1d5f8d7291ade4d5cefd9093ddcc1283227f07c23e8cfd0a288c63600—
DMARC_dmarc.grit.iov=DMARC1; p=none; rua=mailto:[email protected]300—

TLS 与证书

TLS / SSL

定性结果配置正常
支持协议TLSv1.2、TLSv1.3
协商协议TLSv1.3
证书主题grit.io
颁发者Google Trust Services
有效期至2026-12-26T17:01 · 记录时剩余 63 天
验证事实证书信任:通过 · 域名匹配:通过

HTTP 响应标头

HTTP

标头值
content-typetext/html; charset=utf-8
cache-controlmax-age=600
servercloudflare
access-control-allow-origin*

已识别技术

Next.jsTailwind CSSCloudflareFastly

页面、搜索与分享信息

页面描述未检测到
规范链接未检测到
语言未知(默认)
Twitter Card未检测到

未知

未发现具体规则

用户评价(0)

  • 暂无评价。