3

独自のチェックポリシーを作成しようとしています。.csファイルにコードが含まれているかどうかを確認したいと思います。したがって、私の質問は、オーバーライドされたInitialize-Methodおよび/またはEvaluate-Method(PolicyBaseから)の変更セットからすべてのファイルのコンテンツを取得できるかどうかです。

4

1 に答える 1

4

ファイルから直接コンテンツを取得することはできません。自分で開く必要があります。チェックインしEvaluateたメソッドごとに、 PendingCheckin.PendingChanges.CheckedPendingChanges(チェックインされる保留中の変更のみに制限されるようにするため)を確認する必要があります。それぞれPendingChangeに、LocalItem開いてスキャンできるがあります。

例えば:

public override PolicyFailure[] Evaluate()
{
    List<PolicyFailure> failures = new List<PolicyFailure>();

    foreach(PendingChange pc in PendingCheckin.PendingChanges.CheckedPendingChanges)
    {
        if(pc.LocalItem == null)
        {
            continue;
        }

        /* Open the file */
        using(FileStream fs = new FileStream(pc.LocalItem, ...))
        {
            if(/* File contains your prohibited code */)
            {
                failures.Add(new PolicyFailure(/* Explain the problem */));
            }

            fs.Close();
        }
    }

    return failures.ToArray();
}
于 2012-01-11T15:38:51.807 に答える