Flutter版本控制钩子插件vcshooks的使用

Flutter版本控制钩子插件vcshooks的使用

vcshooks 是一个用于 Dart 和 Flutter 项目的版本控制系统钩子工具。它可以帮助你在执行代码提交之前自动化代码风格检查、测试结果、分支命名等操作。

概览

vcshooks 是一个命令行工具,可以帮助你为项目设置版本控制系统钩子。它可以自动进行代码风格检查、测试结果验证、分支命名规则验证等,从而在执行代码提交之前确保代码的质量。

安装

全局安装

全局安装 vcshooks 可以让你在任何地方使用该工具:

pub global activate vcshooks

局部安装

如果你只想在当前项目中使用 vcshooks,可以在项目目录中运行以下命令:

pub activate vcshooks

使用方法

使用 vcshooks 的基本命令格式如下:

vcshooks --project-type [项目类型] [本地项目目录]

命令选项

  • --project-type: 指定项目的类型。默认为 dart,可以指定为 flutter
  • --commit-message-rule: 指定提交信息的规则,默认为 "^(?=[\w]).*"
  • --branch-naming-rule: 指定分支命名的规则,默认为 "^(?=[feature/|release/|hotfix/][a-z\d]+[-/_.][a-z\d])(?!.*[@ ]).*)|^(?=(develop|master|main)$).*$"
  • --[no-]code-style-check-enabled: 在预提交时启用或禁用代码风格检查,默认为启用。
  • --[no-]unit-tests-enabled: 在预提交时启用或禁用单元测试,默认为启用。
  • --help: 打印帮助信息。

示例

设置 Dart/Flutter 项目的版本控制系统钩子

vcshooks --project-type dart [项目目录]
vcshooks --project-type flutter [项目目录]

设置不同的提交信息规则

vcshooks --project-type dart --commit-message-rule "^(?=[\@]).*" [项目目录]

设置不同的分支命名规则

vcshooks --project-type dart --branch-naming-rule "^(?=[master,develop,beta,dev]).*" [项目目录]

禁用预提交时的代码风格检查

vcshooks --project-type dart --no-code-style-check-enabled [项目目录]

禁用预提交时的单元测试

vcshooks --project-type dart --no-unit-tests-enabled [项目目录]

示例代码

以下是一个简单的示例代码,展示了如何使用 vcshooks 进行代码风格检查和单元测试。

文件结构

my_flutter_project/
├── lib/
│   └── main.dart
├── .git/
└── .githooks/

示例代码文件 lib/main.dart

/*
 * The Clear BSD License
 *
 * Copyright (c) 2021 Bitsy Darel
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted (subject to the limitations in the disclaimer
 * below) provided that the following conditions are met:
 *
 *      * Redistributions of source code must retain the above copyright notice,
 *      this list of conditions and the following disclaimer.
 *
 *      * Redistributions in binary form must reproduce the above copyright
 *      notice, this list of conditions and the following disclaimer in the
 *      documentation and/or other materials provided with the distribution.
 *
 *      * Neither the name of the copyright holder nor the names of its
 *      contributors may be used to endorse or promote products derived from
 *      this software without specific prior written permission.
 *
 * NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED BY
 * THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
 * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT
 * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
 * OR
 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
 * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 */

void main(List<String> arguments) {
  // should make commit fail because print is not allowed in production code.
  print(arguments.join(', '));
}

// should make commit fail because class is not used.
class NotUsed {}

更多关于Flutter版本控制钩子插件vcshooks的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter版本控制钩子插件vcshooks的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter项目中,使用版本控制钩子(vcshooks)插件可以帮助你在Git操作中自动执行一些脚本或命令,比如代码格式化、静态代码分析、测试等。以下是一个使用Flutter和vcshooks插件的示例,展示如何设置和配置版本控制钩子。

1. 添加依赖

首先,在你的pubspec.yaml文件中添加vcshooks依赖:

dependencies:
  flutter:
    sdk: flutter
  vcshooks: ^x.y.z  # 请替换为最新版本号

然后运行flutter pub get来安装依赖。

2. 配置vcshooks

在项目的根目录下,创建一个名为.git/hooks的目录(如果这个目录不存在的话),并在其中创建一个钩子脚本,例如pre-commit。然而,使用vcshooks插件可以更方便地管理这些钩子。

3. 使用vcshooks插件配置钩子

在项目的根目录下创建一个vcshooks.yaml文件,并配置你想要的钩子。以下是一个示例配置,该配置会在每次提交之前运行dart format来格式化Dart代码:

hooks:
  pre-commit:
    - name: Dart Format
      command: [dart, format, .]
      include: ["**/*.dart"]

这个配置表示在每次git commit之前,会自动运行dart format .命令来格式化项目中的所有.dart文件。

4. 安装钩子

pubspec.yaml中确保已经添加了vcshooks依赖后,运行以下命令来安装钩子:

flutter pub run vcshooks install

这个命令会在.git/hooks目录下生成相应的钩子脚本,并将它们链接到vcshooks提供的处理脚本。

5. 测试钩子

现在,当你尝试提交代码时,Git会触发pre-commit钩子,并运行你在vcshooks.yaml中配置的命令。例如,如果你尝试提交未格式化的Dart文件,提交将被阻止,并提示你需要先格式化代码。

完整示例

假设你的项目结构如下:

my_flutter_app/
├── .git/
│   └── (其他Git文件)
├── lib/
│   └── main.dart
├── pubspec.yaml
└── vcshooks.yaml

pubspec.yaml内容:

name: my_flutter_app
description: A new Flutter project.

version: 1.0.0+1

environment:
  sdk: ">=2.12.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter
  vcshooks: ^x.y.z  # 请替换为最新版本号

dev_dependencies:
  flutter_test:
    sdk: flutter

vcshooks.yaml内容:

hooks:
  pre-commit:
    - name: Dart Format
      command: [dart, format, .]
      include: ["**/*.dart"]

安装钩子:

flutter pub run vcshooks install

现在,当你尝试提交代码时,如果代码未格式化,提交将被阻止,直到你运行dart format .格式化代码为止。

通过这种方式,你可以确保在每次提交代码之前都执行一些必要的检查,从而提高代码质量和一致性。

回到顶部