3 个不稳定版本
0.3.2 | 2021年5月31日 |
---|---|
0.3.0 | 2021年4月20日 |
0.2.1 | 2021年4月11日 |
#999 in 开发工具
1,627 每月下载量
在 3 crates 中使用
38KB
674 行
fix-getters-rules
此软件包包含用于 fix-getters
工具的规则定义。
有关 fix-getters
的更多信息,请参阅工作空间文档。
规则
rules
适用于
- 文件系统目录条目,以确定是否处理文件或跳过目录分支。这需要
feature
dir-entry
(默认启用)。 - 函数名称。
功能
dir-entry
— 目录条目过滤规则。此功能默认启用。如果您的用例不同,请使用default-features = false
。
函数名称规则
最初的想法是遵守 Rust getter 方法的命名约定
一个用于获取字段当前值的
foo(&self) -> &T
方法。
一般规则
这些规则基于函数名称和返回类型的知识。有关返回确切一个 bool
的 get
函数的详细信息,请参阅下一章。
如果满足以下条件,则认为 get
函数符合移除 get
前缀的条件:
-
函数以
get_
开头。 -
后缀不是 Rust 关键字,否则会导致无效代码。
例如:保留
get_as
、get_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_mut
和 get_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_SUBSTITUTES
在 function.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
。
许可证
此软件包根据您的选择许可以下任一项:
- Apache License,版本2.0,(LICENSE-APACHE 或 http://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
。
依赖关系
49KB