コード例 #1
0
ファイル: TodoFinder.cs プロジェクト: michalliu/jslint4vs2012
        public static List<JSLintError> FindTodos(string file)
        {
            int lastindex = -1;
            int lastline = 1;
            List<JSLintError> todos = new List<JSLintError>();
            MatchCollection matches = FindTodoRegex.Matches(file);
            foreach(Match match in matches)
            {
                int indexOfTODO = -1;

                while (true)
                {
                    indexOfTODO = match.Captures[0].Value.IndexOf("TODO", indexOfTODO+1, StringComparison.InvariantCultureIgnoreCase);
                    if (indexOfTODO < 0)
                    {
                        break;
                    }

                    char characterBefore = indexOfTODO > 2 ? match.Captures[0].Value[indexOfTODO - 1] : ' ';
                    char characterAfter = indexOfTODO + 4 >= match.Captures[0].Value.Length ? ' ' : match.Captures[0].Value[indexOfTODO + 4];

                    if (char.IsWhiteSpace(characterBefore) && !char.IsLetter(characterAfter))
                    {
                        break;
                    }
                }

                if (indexOfTODO < 0)
                {
                    continue;
                }

                while (true)
                {
                    int i = file.IndexOf('\n', lastindex+1);
                    if (i > match.Index || i <= 0)
                    {
                        break;
                    }
                    lastline++;
                    lastindex = i;
                }

                JSLintError jse = new JSLintError() { Column = match.Index - lastindex, Line = lastline, Message = match.Captures[0].Value.Substring(indexOfTODO).Trim('/', '*').Replace('\n', ' ').Replace('\r', ' ').Trim() };
                todos.Add(jse);
            }
            return todos;
        }
コード例 #2
0
ファイル: JSLinter.cs プロジェクト: michalliu/jslint4vs2012
            public void ProcessData(object data)
            {
                Dictionary<string, object> dataDict = data as Dictionary<string, object>;

                if (dataDict != null)
                {
                    Action<Dictionary<string, object>> processor = (error) =>
                        {
                            JSLintError jsError = new JSLintError();
                            if (error.ContainsKey("line") )
                            {
                                if (error["line"] is int)
                                {
                                    jsError.Line = (int)error["line"];
                                }
                            }

                            if (error.ContainsKey("character"))
                            {
                                if (error["character"] is int)
                                {
                                    jsError.Column = ((int)error["character"]) + 1;
                                }
                            }

                            if (jsError.Column == 0)
                            {
                                jsError.Column = 1;
                            }

                            if (error.ContainsKey("reason"))
                            {
                                if (error["reason"] is string)
                                {
                                    jsError.Message = (string)error["reason"];
                                }
                            }

                            if (error.ContainsKey("evidence"))
                            {
                                if (error["evidence"] is string)
                                {
                                    jsError.Evidence = (string)error["evidence"];
                                }
                            }

                            _errors.Add(jsError);
                        };

                    if (dataDict.ContainsKey("errors"))
                    {
                        ProcessListOfObject(dataDict["errors"], processor);
                    }

                    if (_processUnuseds && dataDict.ContainsKey("unused"))
                    {
                        ProcessListOfObject(dataDict["unused"], (unused) =>
                        {
                            JSLintError jsError = new JSLintError();
                            if (unused.ContainsKey("line"))
                            {
                                jsError.Line = (int)unused["line"];
                            }

                            jsError.Column = 1;

                            if (unused.ContainsKey("name"))
                            {
                                jsError.Message = string.Format("Unused Variable '{0}'.", unused["name"]);
                            }

                            _errors.Add(jsError);
                        });
                    }

                    if (dataDict.ContainsKey("vsdocerr"))
                    {
                        ProcessListOfObject(dataDict["vsdocerr"], processor);
                    }
                }
            }