#getter #migration #programming #code #rust

fix-getters-rules

通过移除适用时的get前缀来修复获取函数的名称

3 个不稳定版本

0.3.2 2021年5月31日
0.3.0 2021年4月20日
0.2.1 2021年4月11日

#999 in 开发工具

Download history 246/week @ 2024-04-11 228/week @ 2024-04-18 445/week @ 2024-04-25 185/week @ 2024-05-02 430/week @ 2024-05-09 294/week @ 2024-05-16 269/week @ 2024-05-23 558/week @ 2024-05-30 467/week @ 2024-06-06 589/week @ 2024-06-13 397/week @ 2024-06-20 502/week @ 2024-06-27 670/week @ 2024-07-04 419/week @ 2024-07-11 329/week @ 2024-07-18 134/week @ 2024-07-25

1,627 每月下载量
3 crates 中使用

MIT/Apache

38KB
674

fix-getters-rules

此软件包包含用于 fix-getters 工具的规则定义。

有关 fix-getters 的更多信息,请参阅工作空间文档

规则

rules 适用于

  • 文件系统目录条目,以确定是否处理文件或跳过目录分支。这需要 feature dir-entry(默认启用)。
  • 函数名称。

功能

  • dir-entry — 目录条目过滤规则。此功能默认启用。如果您的用例不同,请使用 default-features = false

函数名称规则

最初的想法是遵守 Rust getter 方法的命名约定

一个用于获取字段当前值的 foo(&self) -> &T 方法。

一般规则

这些规则基于函数名称和返回类型的知识。有关返回确切一个 boolget 函数的详细信息,请参阅下一章。

如果满足以下条件,则认为 get 函数符合移除 get 前缀的条件:

  • 函数以 get_ 开头。

  • 后缀不是 Rust 关键字,否则会导致无效代码。

    例如:保留 get_asget_false 等不变。

  • 该方法会导致与其他类似方法不一致。

    例如:一个具有 struct Value 的结构体,并包含一个 get_mut 方法来获取底层值作为可变引用,get_optional 方法用于获取底层值,其形式为 Option<T>,以及 get_some 方法用于获取底层值,其值始终被定义。

    请参阅 RESERVED,详见 function.rs

  • 后缀不是替换列表的一部分。这包括一些Rust关键字。

    例如:将 get_type 替换为 type_

    请参阅 EXACT_SUFFIX_SUBSTITUTES,详见 function.rs

另一个规则被应用于统一形式为 get_something_mut 的函数名称。此规则将 get_something_mutget_mut_something 都重命名为 something_mut

fix-getters 工具还根据函数签名应用选择性规则。请参阅 README 中的专用章节。

返回一个确切值 bool 的函数

返回 bool 的获取函数通常应使用 is_suffix 形式,这在用作条件时读起来很自然。例如。

if event.is_serialized() {
  ...
}

实现了以下附加规则。

第一个标记替换

当后缀以动词开头时,通常会进行变形。例如。

  • get_emit_eos -> if element.emits_eos()

BOOL_FIRST_TOKEN_SUBSTITUTESfunction.rs 中列出了动词及其匹配的替换,还包括其他情况,例如

  • get_always_... -> must_always_...
  • get_focus -> gets_focus

特殊第一个标记

情态动词应保持不变,不应使用 is 前缀。例如。

  • get_can_focus -> can_focus
  • get_must_... -> must_...

这同样适用于已经变形的动词。例如。

  • get_has_... -> has_...

请参阅 BOOL_FIRST_TOKEN_NO_PREFIX,详见 function.rs

精确后缀替换

在某些情况下,语义要求只有当整个后缀与一个值匹配时才进行替换。例如。

  • get_result -> result. 既不应该是if a.is_result(),也不应该是if a.results()
  • get_visibility -> is_visible 既不应该是if a.is_visibility(),也不应该是if a.visibility()

请参见function.rs中的BOOL_EXACT_SUBSTITUTES

get_is 前缀

最后,如果已经存在,则不应重复使用is前缀

  • get_is_active -> is_active

检测返回精确一个bool的函数

Rust函数的返回类型通常不是显式的。在重命名get函数调用点(见fix-getters-calls)时,必须推断返回类型。在可能的情况下,前一章中描述的规则将被反转,并使用额外的启发式方法:当get函数后缀的第一个标记以able结尾时,该函数被认为返回一个bool。例如。

  • get_seekable -> is_seekable

许可证

此软件包根据您的选择许可以下任一项:

依赖关系

49KB