private static object[] BuildDefaultTestCase(FailureLevel level, ResultKind kind = ResultKind.Fail) { string lineLabel = level != FailureLevel.None ? level.ToString().ToLowerInvariant() : kind.ToString().ToLowerInvariant(); if (kind == ResultKind.Informational) { // Console reporting historically abbreviates this term lineLabel = "info"; } if (level == FailureLevel.None && kind == ResultKind.None) { // No good information? Mark it as informational. lineLabel = "info"; } return(new object[] { level, kind, MultiLineTestRegion, $"{TestData.TestAnalysisTarget}(2,4,3,5): {lineLabel} {TestData.TestRuleId}: First: 42, Second: 54", TestData.TestAnalysisTarget }); }
private static string GetMessageText( string toolName, Uri uri, Region region, string ruleId, string message, ResultKind kind, FailureLevel level) { string path = ConstructPathFromUri(uri); string issueType = null; switch (level) { case FailureLevel.Note: issueType = "note"; break; case FailureLevel.Error: issueType = "error"; break; case FailureLevel.Warning: issueType = "warning"; break; case FailureLevel.None: issueType = kind.ToString().ToLowerInvariant(); // Shorten to 'info' for compatibility with previous behavior. if (issueType == "informational") { issueType = "info"; } break; default: throw new InvalidOperationException("Unknown message level:" + level.ToString()); } string detailedDiagnosis = NormalizeMessage(message, enquote: false); string location = ""; if (region != null) { // TODO: FormatForVisualStudio doesn't handle // binary and char offsets only. location = region.FormatForVisualStudio(); } return((path != null ? (path + location) : toolName) + $": {issueType} " + (!string.IsNullOrEmpty(ruleId) ? (ruleId + ": ") : "") + detailedDiagnosis); }
private static string GetMessageText( Uri uri, Region region, string ruleId, string message, ResultKind kind, FailureLevel level) { string path = null; ValidateKindAndLevel(kind, level); if (uri != null) { // If a path refers to a URI of form file://blah, we will convert to the local path if (uri.IsAbsoluteUri && uri.Scheme == Uri.UriSchemeFile) { path = uri.LocalPath; } else { path = uri.ToString(); } } string issueType = null; switch (level) { case FailureLevel.Note: issueType = "info"; break; case FailureLevel.Error: issueType = "error"; break; case FailureLevel.Warning: issueType = "warning"; break; case FailureLevel.None: issueType = kind.ToString().ToLowerInvariant(); break; default: throw new InvalidOperationException("Unknown message kind:" + level.ToString()); } string detailedDiagnosis = NormalizeMessage(message, enquote: false); string location = ""; if (region != null) { // TODO if (region.CharOffset > 0 || region.ByteOffset > 0 || region.StartColumn == 0) { return(string.Empty); } if (region.StartLine == 0) { throw new InvalidOperationException(); } location = region.FormatForVisualStudio(); } string result = (path != null ? (path + location + ": ") : "") + issueType + (!string.IsNullOrEmpty(ruleId) ? " " : "") + (!string.IsNullOrEmpty(ruleId) ? (ruleId + ": ") : "") + detailedDiagnosis; return(result); }
private static string GetMessageText( string toolName, Uri uri, Region region, string ruleId, string message, ResultKind kind, FailureLevel level) { string path = null; ValidateKindAndLevel(kind, level); path = ConstructPathFromUri(uri); string issueType = null; switch (level) { case FailureLevel.Note: issueType = "note"; break; case FailureLevel.Error: issueType = "error"; break; case FailureLevel.Warning: issueType = "warning"; break; case FailureLevel.None: issueType = kind.ToString().ToLowerInvariant(); // Shorten to 'info' for compat reasons with previous behaviors. if (issueType == "informational") { issueType = "info"; } ; break; default: throw new InvalidOperationException("Unknown message level:" + level.ToString()); } string detailedDiagnosis = NormalizeMessage(message, enquote: false); string location = ""; if (region != null) { // TODO if (region.CharOffset > 0 || region.ByteOffset > 0 || region.StartColumn == 0) { return(string.Empty); } if (region.StartLine == 0) { throw new InvalidOperationException(); } location = region.FormatForVisualStudio(); } string messageText = (path != null ? (path + location) : toolName) + ": " + issueType + (!string.IsNullOrEmpty(ruleId) ? " " : "") + (!string.IsNullOrEmpty(ruleId) ? (ruleId + ": ") : "") + detailedDiagnosis; return(messageText); }
public static string GetMessageText( Uri uri, Region region, string ruleId, string message, ResultKind messageKind) { string path = null; if (uri != null) { // If a path refers to a URI of form file://blah, we will convert to the local path if (uri.IsAbsoluteUri && uri.Scheme == Uri.UriSchemeFile) { path = uri.LocalPath; } else { path = uri.ToString(); } } string issueType = null; switch (messageKind) { case ResultKind.ConfigurationError: case ResultKind.InternalError: case ResultKind.Error: { issueType = "error"; break; } case ResultKind.Warning: { issueType = "warning"; break; } case ResultKind.NotApplicable: case ResultKind.Note: case ResultKind.Pass: { issueType = "info"; break; } default: { throw new InvalidOperationException("Unknown message kind:" + messageKind.ToString()); } } string detailedDiagnosis = NormalizeMessage(message, enquote: false); string location = ""; if (region != null) { // TODO if (region.Offset > 0 || region.StartColumn == 0) { throw new NotImplementedException(); } if (region.StartLine == 0) { throw new InvalidOperationException(); } location = region.FormatForVisualStudio(); } string result = (path != null ? (path + location + ": ") : "") + issueType + (!string.IsNullOrEmpty(ruleId) ? " " : "") + (messageKind != ResultKind.Note ? ruleId : "") + ": " + detailedDiagnosis; return(result); }
public static string GetMessageText( Uri uri, Region region, string ruleId, string message, ResultKind messageKind) { string path = null; if (uri != null) { // If a path refers to a URI of form file://blah, we will convert to the local path if (uri.IsAbsoluteUri && uri.Scheme == Uri.UriSchemeFile) { path = uri.LocalPath; } else { path = uri.ToString(); } } string issueType = null; switch (messageKind) { case ResultKind.ConfigurationError: case ResultKind.InternalError: case ResultKind.Error: { issueType = "error"; break; } case ResultKind.Warning: { issueType = "warning"; break; } case ResultKind.NotApplicable: case ResultKind.Note: { issueType = "note"; break; } default: { throw new InvalidOperationException("Unknown message kind:" + messageKind.ToString()); } } string detailedDiagnosis = NormalizeMessage(message, enquote: false); string location = ""; if (region != null) { // TODO if (region.CharOffset > 0 || region.ByteOffset > 0 || region.StartColumn == 0) { throw new NotImplementedException(); } if (region.StartLine == 0) { throw new InvalidOperationException(); } // VS supports the following formatting options: // (startLine) // (startLine-endLine) // (startLine,startColumn) // (startLine,startColumn-endColumn) // (startLine,startColumn,endLine,endColumn // // For expedience, we'll convert everything to the most fully qualified format string start = region.StartLine.ToString() + "," + (region.StartColumn > 0 ? region.StartColumn.ToString() : "1"); string end = (region.EndLine > region.StartLine ? region.EndLine.ToString() : region.StartLine.ToString()) + "," + (region.EndColumn > 0 ? region.EndColumn.ToString() : region.StartColumn.ToString()); location = "(" + start + (end != start ? "," + end : "") + ")"; } return((path != null ? (path + location + ": ") : "") + issueType + (!string.IsNullOrEmpty(ruleId) ? " " : "") + (messageKind != ResultKind.Note ? ruleId : "") + ": " + detailedDiagnosis); }
public static string GetMessageText( IAnalysisContext context, string message, ResultKind messageKind, Region region = null) { string path = null; Uri uri = context.TargetUri; if (uri != null) { // If a path refers to a URI of form file://blah, we will convert to the local path if (uri.IsAbsoluteUri && uri.Scheme == Uri.UriSchemeFile) { path = uri.LocalPath; } else { path = uri.ToString(); } } string issueType = null; switch (messageKind) { case ResultKind.ConfigurationError: { issueType = "CONFIGURATION ERROR"; break; } case ResultKind.InternalError: { issueType = "INTERNAL ERROR"; break; } case ResultKind.Error: { issueType = "error"; break; } case ResultKind.Warning: { issueType = "warning"; break; } case ResultKind.NotApplicable: case ResultKind.Note: { issueType = "note"; break; } default: { throw new InvalidOperationException("Unknown message kind:" + messageKind.ToString()); } } string detailedDiagnosis = NormalizeMessage(message, enquote: false); string location = ""; if (region != null) { // TODO if (region.Offset > 0 || region.StartColumn == 0) { throw new NotImplementedException(); } if (region.StartLine == 0) { throw new InvalidOperationException(); } // VS supports the following formatting options: // (startLine) // (startLine-endLine) // (startLine,startColumn) // (startLine,startColumn-endColumn) // (startLine,startColumn,endLine,endColumn // // For expedience, we'll convert everything to the most fully qualified format string start = region.StartLine.ToString() + "," + (region.StartColumn > 0 ? region.StartColumn.ToString() : "1"); string end = (region.EndLine > region.StartLine ? region.EndLine.ToString() : region.StartLine.ToString()) + "," + (region.EndColumn > 0 ? region.EndColumn.ToString() : region.StartColumn.ToString()); location = "(" + start + (end != start ? "," + end : "") + ")"; } return (path != null ? (path + location + ": ") : "") + issueType + " " + context.Rule.Id + ": " + detailedDiagnosis; }