0

私はVS2010、Windows 7ビット、FxCop 10.0を持っています

Process.Start を使用して Fxcopcmd.exe を実行すると、513 の"exitcode" (エラー コード) 値が返されます。

以下の参考文献のトッド・キングは次のように述べています。

この場合、終了コード 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 を 16 進文字列に表示し、Enum.Parse は文字列のキャストに失敗します)

exitcode (513 , 0x201) 値のみを使用してプログラムでエラー (解析エラー (0x01) およびアセンブリ参照エラー (0x200)) を知るにはどうすればよいですか?

FxCopCmd とコード分析のエラー コードの詳細:

4

1 に答える 1

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;
        }
    }
}
于 2012-12-12T12:51:56.160 に答える