protected override void ParseErrors(string output) { var array = JArray.Parse(output); foreach (JObject obj in array) { string fileName = obj["filePath"]?.Value <string>(); if (string.IsNullOrEmpty(fileName)) { continue; } foreach (JObject error in obj["messages"]) { var le = new LintingError(fileName); le.Message = error["message"]?.Value <string>(); le.LineNumber = error["line"]?.Value <int>() - 1 ?? 0; le.ColumnNumber = error["column"]?.Value <int>() - 1 ?? 0; le.IsError = error["severity"]?.Value <int>() == 2; le.ErrorCode = error["ruleId"]?.Value <string>(); le.HelpLink = GetHelpLink(le.ErrorCode); le.Provider = this; Result.Errors.Add(le); } } }
private void ParseErrors(string output) { JArray array = ParseToJArray(output); HashSet <LintingError> seen = new HashSet <LintingError>(); bool hasVSErrors = false; foreach (JObject obj in array) { string fileName = obj["name"]?.Value <string>().Replace("/", "\\"); if (string.IsNullOrEmpty(fileName)) { continue; } int lineNumber = obj["startPosition"]?["line"]?.Value <int>() ?? 0; int columnNumber = obj["startPosition"]?["character"]?.Value <int>() ?? 0; bool isError = _settings.TSLintShowErrors ? obj["ruleSeverity"]?.Value <string>() == "ERROR" : false; hasVSErrors = hasVSErrors || isError; string errorCode = obj["ruleName"]?.Value <string>(); LintingError le = new LintingError(fileName, lineNumber, columnNumber, isError, errorCode); if (!_result.Errors.Contains(le)) { le.Message = obj["failure"]?.Value <string>(); le.HelpLink = ParseHttpReference(le.Message, "https://goo.gl/") ?? ParseHttpReference(le.Message, "https://angular.io/") ?? $"https://palantir.github.io/tslint/rules/{le.ErrorCode}"; le.Provider = this; _result.Errors.Add(le); seen.Add(le); } } _result.HasVsErrors = hasVSErrors; }
protected override void ParseErrors(string output) { var root = JObject.Parse(output); foreach (JProperty obj in root.Children <JProperty>()) { string fileName = obj.Name; if (string.IsNullOrEmpty(fileName)) { continue; } foreach (JObject error in obj.Value) { if (error["rollup"] != null) { continue; } var le = new LintingError(fileName); le.Message = error["message"]?.Value <string>(); le.LineNumber = error["line"]?.Value <int>() - 1 ?? 0; le.ColumnNumber = error["col"]?.Value <int>() - 1 ?? 0; le.IsError = error["type"]?.Value <string>() == "error"; le.ErrorCode = error["rule"]?["id"]?.Value <string>(); le.HelpLink = $"https://github.com/CSSLint/csslint/wiki/Rules/#{le.ErrorCode}"; le.Provider = this; Result.Errors.Add(le); } } }
protected override void ParseErrors(string output) { var root = JObject.Parse(output); foreach (JProperty obj in root.Children <JProperty>()) { string fileName = obj.Name; if (string.IsNullOrEmpty(fileName)) { continue; } foreach (JObject error in obj.Value) { if (error["name"] == null) // It's a compiler error { continue; } var le = new LintingError(fileName); le.Message = error["message"]?.Value <string>(); le.LineNumber = error["lineNumber"]?.Value <int>() - 1 ?? 0; le.ColumnNumber = 0; le.IsError = error["level"]?.Value <string>() == "error"; le.ErrorCode = error["rule"]?.Value <string>(); le.HelpLink = $"http://www.coffeelint.org/?rule={le.ErrorCode}#options"; le.Provider = this; Result.Errors.Add(le); } } }
private static ErrorTask CreateTask(LintingError error, ErrorListProvider provider) { ErrorTask task = new ErrorTask() { Line = error.LineNumber - 1, Column = error.ColumnNumber, ErrorCategory = error.IsWarning ? TaskErrorCategory.Warning : TaskErrorCategory.Error, Category = TaskCategory.Html, Document = error.FileName, Priority = TaskPriority.Normal, Text = $"({error.Provider}) {error.Message}", }; EnvDTE.ProjectItem item = VSPackage.Dte.Solution.FindProjectItem(error.FileName); if (item != null && item.ContainingProject != null) AddHierarchyItem(task, item.ContainingProject); task.Navigate += (s, e) => { provider.Navigate(task, new Guid(EnvDTE.Constants.vsViewKindPrimary)); if (task.Column > 0) { var doc = (EnvDTE.TextDocument)VSPackage.Dte.ActiveDocument.Object("textdocument"); doc.Selection.MoveToLineAndOffset(task.Line + 1, task.Column, false); } }; return task; }
protected override void ParseErrors(string output) { var root = JObject.Parse(output); foreach (JProperty obj in root.Children<JProperty>()) { string fileName = obj.Name; if (string.IsNullOrEmpty(fileName)) continue; foreach (JObject error in obj.Value) { if (error["name"] == null) // It's a compiler error continue; var le = new LintingError(fileName); le.Message = error["message"]?.Value<string>(); le.LineNumber = error["lineNumber"]?.Value<int>() - 1 ?? 0; le.ColumnNumber = 0; le.IsError = error["level"]?.Value<string>() == "error"; le.ErrorCode = error["rule"]?.Value<string>(); le.HelpLink = $"http://www.coffeelint.org/?rule={le.ErrorCode}#options"; le.Provider = this; Result.Errors.Add(le); } } }
protected override void ParseErrors(string output) { var array = JArray.Parse(output); foreach (JObject obj in array) { string fileName = obj["filePath"]?.Value<string>(); if (string.IsNullOrEmpty(fileName)) continue; foreach (JObject error in obj["messages"]) { var le = new LintingError(fileName); le.Message = error["message"]?.Value<string>(); le.LineNumber = error["line"]?.Value<int>() - 1 ?? 0; le.ColumnNumber = error["column"]?.Value<int>() - 1 ?? 0; le.IsError = error["severity"]?.Value<int>() == 2; le.ErrorCode = error["ruleId"]?.Value<string>(); le.HelpLink = GetHelpLink(le.ErrorCode); le.Provider = this; Result.Errors.Add(le); } } }
protected override void ParseErrors(string output) { var root = JObject.Parse(output); foreach (JProperty obj in root.Children<JProperty>()) { string fileName = obj.Name; if (string.IsNullOrEmpty(fileName)) continue; foreach (JObject error in obj.Value) { if (error["rollup"] != null) continue; var le = new LintingError(fileName); le.Message = error["message"]?.Value<string>(); le.LineNumber = error["line"]?.Value<int>() - 1 ?? 0; le.ColumnNumber = error["col"]?.Value<int>() - 1 ?? 0; le.IsError = error["type"]?.Value<string>() == "error"; le.ErrorCode = error["rule"]?["id"]?.Value<string>(); le.HelpLink = $"https://github.com/CSSLint/csslint/wiki/Rules/#{le.ErrorCode}"; le.Provider = this; Result.Errors.Add(le); } } }
protected override void ParseErrors(string output) { var array = JArray.Parse(output); foreach (JObject obj in array) { string fileName = obj["name"]?.Value <string>().Replace("/", "\\"); if (string.IsNullOrEmpty(fileName)) { continue; } var le = new LintingError(fileName); le.Message = obj["failure"]?.Value <string>(); le.LineNumber = obj["startPosition"]?["line"]?.Value <int>() ?? 0; le.ColumnNumber = obj["startPosition"]?["character"]?.Value <int>() ?? 0; le.EndLineNumber = obj["endPosition"]?["line"]?.Value <int>() ?? 0; le.EndColumnNumber = obj["endPosition"]?["character"]?.Value <int>() ?? 0; le.IsError = Settings.TSLintWarningsAsErrors; le.ErrorCode = obj["ruleName"]?.Value <string>(); le.HelpLink = $"https://palantir.github.io/tslint/rules/{le.ErrorCode}"; le.Provider = this; Result.Errors.Add(le); } }
protected override void ParseErrors(string output) { var root = JObject.Parse(output); foreach (JProperty obj in root.Children <JProperty>()) { string fileName = obj.Name; foreach (JObject error in obj.Value) { if (error["name"] == null) // It's a compiler error { continue; } var le = new LintingError(fileName); le.Message = error["message"].Value <string>(); le.LineNumber = error["lineNumber"].Value <int>() - 1; le.ColumnNumber = 0; le.IsError = error["level"].Value <string>() == "error"; le.ErrorCode = error["rule"].Value <string>(); le.Provider = this; Result.Errors.Add(le); } } }
protected void AddError(FileInfo file, LintingResult result, Match match) { var e = new LintingError(file.FullName, match.Groups["message"].Value); e.LineNumber = int.Parse(match.Groups["line"].Value); e.ColumnNumber = int.Parse(match.Groups["column"].Value); e.Provider = Name; result.Errors.Add(e); }
protected override void ParseErrors(string output) { JArray array; try { array = JArray.Parse(output); } catch (System.Exception ex) { //string message = "Unable to parse output from tslint. List of linting errors is expected.\r\n"; //message += "tslint Output: " + output + "\r\n"; //message += "Parsing Exception: " + ex.Message; string message = $@"Unable to parse output from tslint. List of linting errors is expected. tslint Output: {output} Parsing Exception: {ex.Message}"; throw new System.FormatException(message, ex); } HashSet <LintingError> seen = new HashSet <LintingError>(); bool hasVSErrors = false; foreach (JObject obj in array) { string fileName = obj["name"]?.Value <string>().Replace("/", "\\"); if (string.IsNullOrEmpty(fileName)) { continue; } int lineNumber = obj["startPosition"]?["line"]?.Value <int>() ?? 0; int columnNumber = obj["startPosition"]?["character"]?.Value <int>() ?? 0; bool isError = Settings.TSLintShowErrors ? obj["ruleSeverity"]?.Value <string>() == "ERROR" : false; hasVSErrors = hasVSErrors || isError; string errorCode = obj["ruleName"]?.Value <string>(); LintingError le = new LintingError(fileName, lineNumber, columnNumber, isError, errorCode); if (!Result.Errors.Contains(le)) { le.Message = obj["failure"]?.Value <string>(); le.HelpLink = $"https://palantir.github.io/tslint/rules/{le.ErrorCode}"; le.Provider = this; Result.Errors.Add(le); seen.Add(le); } } Result.HasVsErrors = hasVSErrors; }
protected override void ParseErrors(string output) { var array = JArray.Parse(output); foreach (JObject obj in array) { string fileName = obj["name"].Value<string>().Replace("/", "\\"); var le = new LintingError(fileName); le.Message = obj["failure"].Value<string>(); le.LineNumber = obj["startPosition"]["line"].Value<int>(); le.ColumnNumber = obj["startPosition"]["character"].Value<int>(); le.IsError = false; le.ErrorCode = obj["ruleName"].Value<string>(); le.Provider = this; Result.Errors.Add(le); } }
protected override void ParseErrors(string output) { var array = JArray.Parse(output); foreach (JObject obj in array) { string fileName = obj["name"].Value <string>().Replace("/", "\\"); var le = new LintingError(fileName); le.Message = obj["failure"].Value <string>(); le.LineNumber = obj["startPosition"]["line"].Value <int>(); le.ColumnNumber = obj["startPosition"]["character"].Value <int>(); le.IsError = false; le.ErrorCode = obj["ruleName"].Value <string>(); le.Provider = this; Result.Errors.Add(le); } }
protected override void ParseErrors(string output) { var array = JArray.Parse(output); foreach (JObject obj in array) { string fileName = obj["name"]?.Value<string>().Replace("/", "\\"); if (string.IsNullOrEmpty(fileName)) continue; var le = new LintingError(fileName); le.Message = obj["failure"]?.Value<string>(); le.LineNumber = obj["startPosition"]?["line"]?.Value<int>() ?? 0; le.ColumnNumber = obj["startPosition"]?["character"]?.Value<int>() ?? 0; le.IsError = Settings.TSLintWarningsAsErrors; le.ErrorCode = obj["ruleName"]?.Value<string>(); le.HelpLink = $"https://github.com/palantir/tslint?rule={le.ErrorCode}#supported-rules"; le.Provider = this; Result.Errors.Add(le); } }
protected override void ParseErrors(string output) { XmlDocument doc = new XmlDocument(); doc.LoadXml(output); foreach (XmlNode file in doc.SelectNodes("//file")) { string fileName = file.Attributes["name"].InnerText; foreach (XmlNode issue in file.SelectNodes("issue")) { var le = new LintingError(fileName); le.Message = issue.Attributes["reason"].InnerText; le.LineNumber = int.Parse(issue.Attributes["line"].InnerText) - 1; le.ColumnNumber = int.Parse(issue.Attributes["char"].InnerText) - 1; le.IsError = issue.Attributes["severity"].InnerText == "error"; le.ErrorCode = issue.Attributes["rule"].InnerText; le.Provider = this; Result.Errors.Add(le); } } }
protected override void ParseErrors(string output) { var root = JObject.Parse(output); foreach (JProperty obj in root.Children<JProperty>()) { string fileName = obj.Name; foreach (JObject error in obj.Value) { if (error["rollup"] != null) continue; var le = new LintingError(fileName); le.Message = error["message"].Value<string>(); le.LineNumber = error["line"].Value<int>(); le.ColumnNumber = error["col"].Value<int>(); le.IsError = error["type"].Value<string>() == "error"; le.ErrorCode = error["rule"]?["id"].Value<string>(); le.Provider = this; Result.Errors.Add(le); } } }
protected bool Equals(LintingError other) { return(string.Equals(FileName, other.FileName) && LineNumber == other.LineNumber && ColumnNumber == other.ColumnNumber && IsError == other.IsError && string.Equals(ErrorCode, other.ErrorCode)); }
private void ParseErrors(string output, bool isCalledFromBuild) { JArray array; try { array = JArray.Parse(output); } catch (JsonReaderException) { // In case of error from TSLint, just show error to user. // There is no use in showing exception details or throwing a new exception. LintingError le = new LintingError("TSLint", 0, 0, true, "TSLint") { Message = output, Provider = this }; _result.Errors.Add(le); _result.HasVsErrors = true; return; } bool hasVSErrors = false; foreach (JObject obj in array) { string fileName = obj["name"]?.Value <string>().Replace("/", "\\"); // This is Windows, slashes are backwards if (string.IsNullOrEmpty(fileName)) { continue; } int lineNumber = obj["startPosition"]?["line"]?.Value <int>() ?? 0; int columnNumber = obj["startPosition"]?["character"]?.Value <int>() ?? 0; bool adjustForByteOrderMark = lineNumber == 0 && !_settings.UseTsConfig && HasUTF8ByteOrderMark(fileName); if (lineNumber == 0 && columnNumber > 0 && adjustForByteOrderMark) { columnNumber--; // Fix tslint off by one error } bool isError = _settings.TSLintShowErrors ? obj["ruleSeverity"]?.Value <string>()?.ToUpper() == "ERROR" : false; hasVSErrors = hasVSErrors || isError; string errorCode = obj["ruleName"]?.Value <string>(); LintingError le = new LintingError(fileName, lineNumber, columnNumber, isError, errorCode); if (!_result.Errors.Contains(le)) { le.Message = obj["failure"]?.Value <string>(); le.EndLineNumber = obj["endPosition"]?["line"]?.Value <int>() ?? 0; le.EndColumnNumber = obj["endPosition"]?["character"]?.Value <int>() ?? 0; if (le.EndLineNumber == 0 && le.EndColumnNumber > 0 && adjustForByteOrderMark) { le.EndColumnNumber--; } le.HelpLink = ParseHttpReference(le.Message, "https://goo.gl/") ?? ParseHttpReference(le.Message, "https://angular.io/") ?? $"https://palantir.github.io/tslint/rules/{le.ErrorCode}"; le.Provider = this; le.IsBuildError = isCalledFromBuild; _result.Errors.Add(le); } } _result.HasVsErrors = hasVSErrors; }