如何解决如何使用 Rubocop 禁止特定的函数调用?
我有一个 Rails 项目,我们正在迁移到使用图像代理来为我们的 ActiveStorage 图像提供服务。作为此迁移的一部分,我们需要将 url_for()
的所有现有用法更改为 ix_image_url()
。
url_for
将继续存在,但为了防止其他开发者在未来不小心使用错误的功能并意外提供未经代理的图像,我想“禁止”使用 {{1} } 在我们的项目中。
这可能吗?
解决方法
只是调用方法的 Grep
虽然您当然可以write your own cop,但您定义的用例似乎更适合在您的持续集成服务器上完成的简单 grep。例如:
if egrep -Rn '\burl_for' '/path/to/source/tree'; then
echo 'error: use ix_image_url instead of url_for' >&2
exit 1
fi
可以作为 CI 管道中的构建或测试步骤运行。它将打印有问题的行以及文件名和行号,并将您的“如何修复它”自定义消息发送到标准错误以报告构建失败。
请注意,像这样的 shell 命令可以在大多数 CI 实现中运行,但您当然可以将其包含在 cop 中或将其内联到您的管道中(例如,Jenkins 作业的 Groovy 代码),如果这对您更有效。然而,KISS 原则主张让实现尽可能简单,所以我会避免使用 AST 或自定义警察的维护开销的必要性,除非你的成本比描述的用例要多得多在您最初的问题中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。