1个不稳定版本
0.1.0 | 2024年8月2日 |
---|
#13 在 #studio
115 每月下载量
31KB
308 行
Open Checks框架
概述
此框架旨在为工作室工作提供编写检查的系统。这包括验证资产(绑定、几何体、曲面等)、镜头(动画、照明、模拟等)以及工作室需要验证的任何内容。它提供了一个简单的API,具有丰富的结果类型,为用户提供所有信息,让他们知道为什么检查失败以及他们需要做什么来修复它。如果问题可以通过计算机修复,它还支持修复问题。
功能
- Rust、C、C++和Python 3 API
- 自动修复问题
- 标记检查是否可跳过。
- 在用户界面中显示检查结果。
要求
- Rust:1.66或更高版本(这不是保证的最小支持Rust版本)
设计
状态
状态是结果的可读部分。
Pending
:检查尚未运行。这在用户界面中是一个有用的状态,可以让用户知道检查可以运行。Skipped
:由于依赖此检查的先前检查失败而跳过了该检查。Passed
:测试已通过。Warning
:测试发现了可能存在的问题。然而,这仍然可以像Passed
一样处理。Failed
:测试发现了对象的问题。如果结果允许跳过此测试,则可以将其视为Passed
。SystemError
:测试发生了问题。要么它所依赖的功能有错误,要么测试或测试运行器存在问题。假设测试的结果无效,并且永远不允许测试通过。
项目
项目是结果原因的包装器。例如,如果资产必须以某种方式命名,并且资产下的对象命名错误,则结果可以返回违规的对象作为项目。项目包装器仅在用户界面中很重要,因为它强制所有类型可排序和可显示。例如,文件对象可能不知道创建文件对象的文件路径,但项目包装器可以扩展到包括文件路径。项目还包括一个提示,可以告诉用户界面类型表示什么。例如,如果项目中的数据类型是字符串,但字符串表示场景路径,则当检查UI中选择项目时,用户界面可以选择场景对象。
结果
结果类型包含有关检查状态的信息、结果的易读描述、导致结果的项目、结果是否可修复或可跳过,以及针对 SystemError
的错误信息和检查及自动修复的计时信息。
检查
检查是验证的单位。例如,检查可以是验证资产名称是否正确、纹理是否存在、所有参数是否设置为默认值等。建议检查每次只检查一件事情。例如,如果资产需要名称正确,纹理需要存在,参数都是默认值,那么这些应该有三个独立的检查。然而,可能会有一些检查需要执行相同的工作才能完成它们的任务。例如,如果有检查确保纹理具有正确的分辨率,以及其他检查确保纹理类型正确(8位整数、32位浮点数等),那么这两组检查都需要打开文件,因此验证文件是否存在。解决这个问题的方案留给了实施检查的团队。
运行器
检查运行器
运行器接受一个检查并生成结果。它还负责确保检查处于有效状态(如果不在有效状态,则返回系统错误),并为诊断产生关于检查的计时信息。
自动修复运行器
自动修复运行器与检查运行器类似,但它将运行检查的自动修复方法。自动修复运行器应该在检查运行器之后运行,并且只有当检查运行器的结果表示结果支持修复时。在尝试修复问题后,它将再次运行检查,并返回一个结果以验证修复是否真正修复了问题。
安装
Rust
cd /to/your/project
cargo add --git https://github.com/scott-wilson/openchecks.git
Python
用于开发
cd /path/to/checks/bindings/python
make build
C
cd /path/to/checks/bindings/c
make build
C++
用于开发
cd /path/to/checks/bindings/cpp
make build
愿望清单
依赖项
~0.4–0.9MB
~20K SLoC