開発サイクルにDOTNETフォーマットを組み込む


告白しなければなりません.私はコードのレビューの間、許容できるより多くの時間を費やしました.そんなばかな仕事だ.私は同僚がコードをフォーマットするのを忘れたか、誰かが異なる規則で異なるエディタを使用しているならば、見ているよりむしろ他のものに集中しなければなりません.
これはVisual StudioでCという音を書くときに、Visual StudioのコードでJSを書いていると比較すると、私が逃したことです.私がファイルを保存するとき、それがきれいな自動フォーマットであるとき、それはとても美しいです.あなたの.editorconfigとBooomでルールを定義する!💥 インデントまたは空白の上でこれ以上の硝酸塩.あなたも、最初のディレクティブを使用してシステムを持つような他のルールを実施することができます.
# .editorconfig Example
# Organize using directives
dotnet_sort_system_directives_first = true
dotnet_separate_import_directive_groups = false
そして今、我々はDotNet形式で同じ経験をもたらすことができます!
CLIはnew command to formatを導入している."dotnet format"は既存のDOTNETツールでした、しかし、現在、.CLIをインストールしてください.

どうやって使うの?
これは、単純なコマンドラインツールですので、あなたのCI/CDツールチェーンに統合することができます.
つの興味深い“dotnetフォーマット”オプションは、変更を--verify-no-changesで実行するかどうかを確認することです.それに加えて、--includeで検証の一部のファイルだけを含めることができます.
dotnet format --verify-no-changes --include src\Infrastructure\CustomerRepository.cs
したがって、これらの2つの引数はCIパイプラインに最適です.
PR(プル要求)が開いているたびに、ビルド時に壊れた書式規則を確認できます.

GitHubアクションを使用したDOTNETフォーマットの生成
TeamCity、Jenkins、Azure devopsなどであるが、ここではGithubアクションを使用する.
プロセスは非常に簡単です.あなたがGitHub Actions Marketplaceに行くならば、あなたはdotnetフォーマットを走らせる若干の拡張を見つけます."xt0rted/dotnet-format"Brian Surowiecを使います.
そこで、ワークフローへのステップを追加しました.
- name: Run dotnet format
      uses: xt0rted/dotnet-format@v1
      with:
        only-changed-files: "true"
ワークフロー:
name: .NET

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2
      - name: Setup .NET
        uses: actions/setup-dotnet@v1
        with:
          dotnet-version: 6.0.x

      - name: Run dotnet format
        uses: xt0rted/dotnet-format@v1
        with:
          only-changed-files: "true"

      - name: Restore dependencies
        run: dotnet restore
      - name: Build
        run: dotnet build --no-restore
      - name: Test
        run: dotnet test --no-build --verbosity normal
今、PRが開いているとき、DOTNETフォーマットは変更されたファイルをチェックするために実行されます.誰かがフォーマットなしでファイルを編集するならば、構築は失敗します.
誰かがファイルをフォーマットするのを忘れたので、それはかなり涼しいです、しかし、私はビルド試みを防ぐのを好みます.

DOTNETフォーマットとgitフック
それで、コードをフォーマットするのを忘れるならば、どのように、私はコミットを防ぐことができますか?
その答えはGit Hooksです.
GitはいくつかのGitの手順でフックする方法を提供します.したがって、事前コミットでコードを実行できます.
あなたは多くの点でそれをすることができます(hereを見ます)、しかし、私は"pre-commit"を使いたいです.プレコミットは、あなたのプロセスを簡素化し、新しいフックを採用する簡単な方法を提供しています.見てください.それはかなりクールです!

プリコミットの設定方法
まず、事前コミットをインストールする必要があります( hereを参照).
インストール後、ルートフォルダにファイル".pre-commit-config.yaml"を作成します.
次のスニペットを追加します.
repos:
  - repo: https://github.com/dotnet/format
    rev: ""
    hooks:
      - id: dotnet-format
        args: [--folder, --include]
さて、Gitフックスクリプトをインストールします.pre-commit installこの後、Dotnet形式242479142たびに実行されます!😍


ラッピング
明らかに、あなたのチームメイトのいずれかが“pre - commit”をインストールすることはできません🤷. そういうわけで、前コミットとしてだけでなく、ビルドの一部としてそれをすることが重要です.一つは、ガードとして、他のフィードバックサイクルの改善として動作します.
それは非常に簡単なプロセスですので、それは価値がある.
私は、これが役に立つことを望みます!このようなヒントを得るには、私に従って、連絡を取り合いましょう!