1

すべてのコード ファイルの要件は、各ファイルの先頭に著作権表示を含めることです。これを行うことを覚えておく方法はないので、TFS を利用してこれを行う方法はありますか?

次のような流れを希望します。

  1. チェックイン時に、チェックインするファイルのリストを取得します。
  2. ファイルごとに、ファイル拡張子を確認してファイルの種類を判別します。
  3. コメント形式を決定するファイル拡張子を使用して、各ファイルの最初の行としてコメントを追加します。

これを行う最も簡単な方法は何ですか?

4

1 に答える 1

1

@Mikeこれを達成する方法を、複雑さの昇順でリストアップしています

  1. デフォルトのファイル テンプレートに著作権表示を追加します。この方法では、すべての新しいファイルにデフォルトでこのヘッダーが含まれます。
  2. VS マクロを使用して著作権を追加します - これらはオンラインで見つけることができます
  3. ビルド前のイベント中に著作権を追加する - 以下のサンプル スクリプト
  4. ゲート チェックインがある場合は、シェルブセットがチェックインのキューに入れられたら、ビルド テンプレートを変更して著作権を追加します。スクリプトを再度使用するか、C# コードに変換できます。

アクションが必要かどうかを確認することで、ビルド時間のオーバーヘッドを回避できます

  • 「tf status」を使用して追加されているファイルがあるかどうかを確認します
  • 「追加」がある場合は、著作権が存在するかどうかを確認し、ない場合はヘッダーに追加します

新しい .cs ソース コード ファイルに一括追加するために使用するサンプル .ps1 スクリプト。

$header = "// Copyright (c) My Corp. All rights reserved.`r`n"

function Write-Header ($file)
{
    $content = Get-Content $file

    $containsWord = $content | %{$_ -match "Copyright"}

    if($containsWord -match $true)
    {
        return
    }

    tf edit $file 

    $filename = Split-Path -Leaf $file

    Set-Content $file $header

    Add-Content $file $content
}

// you can modify this condition to apply this logic to new files only
Get-ChildItem "E:\src" -Recurse | ? { $_.Extension -match "[a-zA-Z]*\.cs$" } | % `
{
    Write-Header $_.PSPath.Split(":", 3)[2]
}
于 2013-11-04T16:09:36.367 に答える