我有VS2010,Windows 7位,FxCop 10.0
我使用Process.Start执行Fxcopcmd.exe,得到513 “exitcode”(错误代码)值。
Todd King在下面的参考文献中说:
在这种情况下,退出代码为513表示FxCop有分析错误 (0x01)和程序集引用错误(0x200)
http://social.msdn.microsoft.com/Forums/en-US/vstscode/thread/1191af28-d262-4e4f-95d9-73b682c2044c/
我认为如果它就像
[Flags]
public enum FxCopErrorCodes
{
NoErrors = 0x0,
AnalysisError = 0x1, // -fatalerror
RuleExceptions = 0x2,
ProjectLoadError = 0x4,
AssemblyLoadError = 0x8,
RuleLibraryLoadError = 0x10,
ImportReportLoadError = 0x20,
OutputError = 0x40,
CommandlineSwitchError = 0x80,
InitializationError = 0x100,
AssemblyReferencesError = 0x200,
BuildBreakingMessage = 0x400,
UnknownError = 0x1000000,
}
513整数值为0x201(查看int to hex string和Enum.Parse fails to cast string)
如何仅使用exitcode(513,0x201)值以编程方式知道错误(分析错误(0x01)和程序集引用错误(0x200)?
有关FxCopCmd和代码分析的错误代码的更多信息:
答案 0 :(得分:0)
您可以使用AND按位操作测试枚举的特定值:
FxCopErrorCodes code = (FxCopErrorCodes)0x201;
if ((code & FxCopErrorCodes.InitializationError) == FxCopErrorCodes.InitializationError)
{
Console.WriteLine("InitializationError");
}
您可以使用以下内容获取整个值列表:
private static IEnumerable<FxCopErrorCodes> GetMatchingValues(FxCopErrorCodes enumValue)
{
// Special case for 0, as it always match using the bitwise AND operation
if (enumValue == 0)
{
yield return FxCopErrorCodes.NoErrors;
}
// Gets list of possible values for the enum
var values = Enum.GetValues(typeof(FxCopErrorCodes)).Cast<FxCopErrorCodes>();
// Iterates over values and return those that match
foreach (var value in values)
{
if (value > 0 && (enumValue & value) == value)
{
yield return value;
}
}
}