Beispiel #1
0
        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);
                }
            }
        }
Beispiel #2
0
        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;
        }
Beispiel #3
0
        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);
                }
            }
        }
Beispiel #4
0
        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);
                }
            }
        }
Beispiel #5
0
        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;
        }
Beispiel #6
0
        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);
                }
            }
        }
Beispiel #7
0
        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);
                }
            }
        }
Beispiel #8
0
        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);
            }
        }
Beispiel #10
0
        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);
                }
            }
        }
Beispiel #11
0
 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);
 }
Beispiel #12
0
        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;
        }
Beispiel #13
0
        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);
            }
        }
Beispiel #14
0
        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);
            }
        }
Beispiel #15
0
        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);
            }
        }
Beispiel #16
0
        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);
                }
            }
        }
Beispiel #17
0
        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);
                }
            }
        }
Beispiel #18
0
 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;
        }