tslint.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. "use strict";
  2. var utils_1 = require("./language/utils");
  3. var configuration_1 = require("./configuration");
  4. var enableDisableRules_1 = require("./enableDisableRules");
  5. var formatterLoader_1 = require("./formatterLoader");
  6. var ruleLoader_1 = require("./ruleLoader");
  7. var Linter = (function () {
  8. function Linter(fileName, source, options) {
  9. this.fileName = fileName;
  10. this.source = source;
  11. this.options = options;
  12. }
  13. Linter.prototype.lint = function () {
  14. var failures = [];
  15. var sourceFile = utils_1.getSourceFile(this.fileName, this.source);
  16. var rulesWalker = new enableDisableRules_1.EnableDisableRulesWalker(sourceFile, {
  17. disabledIntervals: [],
  18. ruleName: ""
  19. });
  20. rulesWalker.walk(sourceFile);
  21. var enableDisableRuleMap = rulesWalker.enableDisableRuleMap;
  22. var rulesDirectories = this.options.rulesDirectory;
  23. var configuration = this.options.configuration.rules;
  24. var configuredRules = ruleLoader_1.loadRules(configuration, enableDisableRuleMap, rulesDirectories);
  25. var enabledRules = configuredRules.filter(function (r) { return r.isEnabled(); });
  26. for (var _i = 0, enabledRules_1 = enabledRules; _i < enabledRules_1.length; _i++) {
  27. var rule = enabledRules_1[_i];
  28. var ruleFailures = rule.apply(sourceFile);
  29. for (var _a = 0, ruleFailures_1 = ruleFailures; _a < ruleFailures_1.length; _a++) {
  30. var ruleFailure = ruleFailures_1[_a];
  31. if (!this.containsRule(failures, ruleFailure)) {
  32. failures.push(ruleFailure);
  33. }
  34. }
  35. }
  36. var formatter;
  37. var formattersDirectory = configuration_1.getRelativePath(this.options.formattersDirectory);
  38. var Formatter = formatterLoader_1.findFormatter(this.options.formatter, formattersDirectory);
  39. if (Formatter) {
  40. formatter = new Formatter();
  41. }
  42. else {
  43. throw new Error("formatter '" + this.options.formatter + "' not found");
  44. }
  45. var output = formatter.format(failures);
  46. return {
  47. failureCount: failures.length,
  48. failures: failures,
  49. format: this.options.formatter,
  50. output: output
  51. };
  52. };
  53. Linter.prototype.containsRule = function (rules, rule) {
  54. return rules.some(function (r) { return r.equals(rule); });
  55. };
  56. Linter.VERSION = "3.2.1";
  57. Linter.findConfiguration = configuration_1.findConfiguration;
  58. return Linter;
  59. }());
  60. module.exports = Linter;