runner.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. var Q = require('q');
  2. var debug = require('debug')('ylt:runner');
  3. var phantomasWrapper = require('./tools/phantomas/phantomasWrapper');
  4. var jsExecutionTransformer = require('./tools/jsExecutionTransformer');
  5. var rulesChecker = require('./rulesChecker');
  6. var scoreCalculator = require('./scoreCalculator');
  7. var Runner = function(params) {
  8. 'use strict';
  9. var deferred = Q.defer();
  10. // The pivot format
  11. var data = {
  12. params: params,
  13. toolsResults: {}
  14. };
  15. // Execute Phantomas first
  16. phantomasWrapper.execute(data).then(function(phantomasResults) {
  17. data.toolsResults.phantomas = phantomasResults;
  18. // Treat the JS Execution Tree from offenders
  19. data.javascriptExecutionTree = jsExecutionTransformer.transform(data);
  20. // Other tools go here
  21. // Rules checker
  22. var policies = require('./metadata/policies');
  23. data.rules = rulesChecker.check(data, policies);
  24. // Scores calculator
  25. var scoreProfileGeneric = require('./metadata/scoreProfileGeneric.json');
  26. data.scoreProfiles = {
  27. generic : scoreCalculator.calculate(data, scoreProfileGeneric)
  28. };
  29. delete data.toolsResults.phantomas.metrics.javascriptExecutionTree;
  30. delete data.toolsResults.phantomas.offenders.javascriptExecutionTree;
  31. return data;
  32. }).then(function(data) {
  33. // Finished!
  34. deferred.resolve(data);
  35. }).fail(function(err) {
  36. debug('Run failed');
  37. debug(err);
  38. deferred.reject(err);
  39. });
  40. return deferred.promise;
  41. };
  42. module.exports = Runner;