private void Analyze(string fragment, string filename, int lineOffset = 1, int charOffset = 1) { if (String.IsNullOrWhiteSpace(fragment)) { return; } try { int firstLineOfFragment = 0; IncludeFileType fileType = GetFileType(filename, fragment); if (fileType == IncludeFileType.CSS) { if (!fragment.StartsWith("@charset")) { if (lineOffset > 1 || OptionsProviderRegistry.CurrentOptions.FakeCSSCharset) { fragment = "@charset \"UTF-8\";" + "\n" + fragment; firstLineOfFragment = 1; } else { WriteError( "", lineOffset, 1, "CSS Files must begin @charset to be parsed by JS Lint", filename); return; } } } var ignoreErrorHandler = new IgnoreErrorSectionsHandler(fragment); var isJs = fileType == IncludeFileType.JS; var errors = _linter.Lint(fragment, OptionsProviderRegistry.CurrentOptions.JSLintOptions, isJs); foreach (var error in errors) { if (ignoreErrorHandler.IsErrorIgnored(error.Line, error.Column)) { continue; } if (++_errorCount > Threshold) { break; } WriteError( error.Evidence, error.Line + lineOffset - (1 + firstLineOfFragment), error.Line == 1 + firstLineOfFragment ? error.Column + charOffset - 1 : error.Column, error.Message, filename, !isJs); } if (OptionsProviderRegistry.CurrentOptions.TODOEnabled && isJs) { var todos = TodoFinder.FindTodos(fragment); foreach (var error in todos) { WriteToDo( error.Line + lineOffset - (1 + firstLineOfFragment), error.Line == 1 + firstLineOfFragment ? error.Column + charOffset - 1 : error.Column, error.Message, filename); } } } catch (Exception e) { WriteToErrorList(e.Message); } }
public TodoGetController(TodoFinder finder) { Finder = finder; }