#check #rule #conventions #cargo #kit #path #cargo-metadata

cargo-culture-kit

用于编写检查 Rust 项目约定的库

2 个版本 (1 个稳定版本)

使用旧的 Rust 2015

1.0.0 2018 年 7 月 18 日
0.1.0 2018 年 6 月 18 日

#1204开发工具


cargo-culture 中使用

MIT 许可证

130KB
2.5K SLoC

cargo-culture-kit

概述

为 cargo-culture 项目提供核心库,该库为在 Rust 项目仓库上运行直接的检查提供了基本构建块。

这些检查的主要应用是作为包含并强制执行组织需求的最佳实践的命令行工具的一部分。

这些检查的次要应用是集成到 Rust 测试中。这可能对希望快速深度集成、不介意编写一些代码并希望避免使用支持程序的开发商有吸引力。

入门指南

依赖关系

cargo-culture-kit 是一个 Rust 项目,它使用 cargo 来管理依赖关系,它是 Rust 工具链的一部分。

构建

对于本地程序开发,您可以使用以下方式构建 cargo-culture-kit

  • 下载项目仓库
    git clone https://github.com/PolySync/cargo-culture.git
    cd cargo-culture/cargo-culture-kit
    
  • 执行构建
    cargo build
    

安装

您可以通过将 cargo-culture-kit 添加到您的 Cargo.toml 文件中来将其包含在您的 Rust 项目中。

  • 添加到 [dependencies] 或 ``[dev-dependencies]` 部分
    cargo-culture-kit = "0.1"
    

使用方法

check_culture_default 是开始使用的一种简单方法,因为它提供了一个围绕核心 check_culture 函数的薄包装,并结合了 default_rules() 函数提供的 RuleRule 是该包的核心特质。一个 Rule 描述了项目的一个习惯或最佳实践,并提供了一种评估该规则是否得到遵守的方法。

use cargo_culture_kit::{check_culture_default, IsSuccess, OutcomeStats};
use std::path::PathBuf;

let cargo_manifest = PathBuf::from("../cargo-culture/Cargo.toml");
let verbose = false;

let outcomes = check_culture_default(
    cargo_manifest, verbose, &mut std::io::stdout()
    )
    .expect("Unexpected trouble checking culture rules:");

let stats = OutcomeStats::from(outcomes);
assert!(stats.is_success());
assert_eq!(stats.fail_count, 0);
assert_eq!(stats.undetermined_count, 0);

示例

  • 实现您自己的 Rule 的示例
    use cargo_culture_kit::{CargoMetadata, Rule, RuleContext, RuleOutcome}
    #[derive(Clone, Debug, PartialEq)]
    struct IsProjectAtALuckyTime;
    
    impl Rule for IsProjectAtALuckyTime {
        fn description(&self) -> &str {
            "Should be lucky enough to only be tested at specific times."
        }
    
        fn evaluate(&self,
            _context: RuleContext,
        ) -> RuleOutcome {
            use std::time::{SystemTime, UNIX_EPOCH};
            let since_the_epoch = match SystemTime::now().duration_since(UNIX_EPOCH) {
                Ok(t) => t,
                Err(_) => return RuleOutcome::Undetermined,
            };
            if since_the_epoch.as_secs() % 2 == 0 {
                RuleOutcome::Success
            } else {
                RuleOutcome::Failure
            }
        }
    }
    

测试

cargo-culture-kit 测试是通过标准 cargo 集成的 Rust 测试框架管理的,并通过 proptest 属性测试库进行了额外增强。

构建

构建但不运行测试

cargo build --tests

运行

构建并运行测试

cargo test

许可证

© 2018,PolySync Technologies,Inc。

请参阅许可证文件获取更多详细信息

依赖关系

~3–12MB
~134K SLoC