private void AnalyzeProjectItems(ProjectItems projItems, out bool reachedTreshold) { var currentOptions = OptionsProviderRegistry.CurrentOptions; reachedTreshold = false; for (int i = 1; i <= projItems.Count; i++) { ProjectItem item = projItems.Item(i); var filename = GetFileName(item); IncludeFileType fileType = GetFileType(filename); if (fileType == IncludeFileType.Folder) // folder { AnalyzeProjectItems(item.ProjectItems, out reachedTreshold); } else if ((currentOptions.BuildFileTypes & fileType) > 0 && item.FileCount == 1 && !IsNodeSkipped(item)) { ClearErrors(filename); AnalyzeFile(filename, out reachedTreshold); } if (reachedTreshold) { break; } } }
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); } }