1个不稳定版本

0.1.0 2024年8月2日

#13#studio

Download history 102/week @ 2024-07-28 13/week @ 2024-08-04

115 每月下载量

MIT/Apache

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

愿望清单

  • 包的独有名称 问题
  • 将Python包的名称与Rust包的名称相同。(目前,Python包称为 pycheck。) 问题
  • 一个C++ API(以C API为基础) 问题
  • 一个调度器来管理运行检查并返回结果。这也可以包括检查之间的依赖关系。 问题
  • 在给定上下文(如项目XYZ的角色动画或动画ABC_010)的情况下进行测试发现,并生成一组检查,以便运行。 问题
  • 一个Qt GUI 问题
  • Blender集成 问题
  • Gaffer集成 问题
  • Natron集成 问题
  • Houdini集成 问题
  • Katana集成 问题
  • Maya集成 问题
  • Nuke集成 问题

依赖项

~0.4–0.9MB
~20K SLoC