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 回答