我正在尝试编写自己的检查策略。我想查看是否有任何 .cs 文件包含一些代码。所以我的问题是,是否可以从覆盖的 Initialize-Method 和/或 Evaluate-Method(来自 PolicyBase)中的变更集中获取每个文件的内容。
问问题
582 次
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 回答