Skip to content

Commit

Permalink
mozilla#155 - Enabling parser change in scan.js
Browse files Browse the repository at this point in the history
  • Loading branch information
callicles committed Aug 14, 2014
1 parent ea0be8a commit eb84333
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 7 deletions.
23 changes: 18 additions & 5 deletions common/scan.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,14 @@
mod(this.ScanJS || (this.ScanJS = {})); // Plain browser env
})(function (exports) {

// Default parser, override this object to change*
// needs parser.parse to produce an AST
// and parser.walk the walk.js lib

var parser = {};
if (acorn)
parser = acorn;

var rules = {};
var results = [];
var current_source;
Expand All @@ -22,7 +30,7 @@
});

aw_found_callback(rule, node);
}
};
var aw_found_callback = function () {
};

Expand Down Expand Up @@ -189,7 +197,7 @@
}
},
$_contains: function (node, typestring) {
var foundnode = acorn.walk.findNodeAt(node, null, null, typestring);
var foundnode = parser.walk.findNodeAt(node, null, null, typestring);
return typeof foundnode != 'undefined'
},
ifstatement: {
Expand Down Expand Up @@ -232,7 +240,7 @@

function aw_parseRule(rule) {
try {
var program = acorn.parse(rule.source);
var program = parser.parse(rule.source);
//each rule must contain exactly one javascript statement
if (program.body.length != 1) {
throw ('Rule ' + rule.name + 'contains too many statements, skipping: ' + rule.source);
Expand Down Expand Up @@ -364,7 +372,7 @@
}
var ast;
try {
ast = acorn.parse(source, {
ast = parser.parse(source, {
locations: true
});
} catch (e) {
Expand Down Expand Up @@ -393,7 +401,7 @@
}
];
}
acorn.walk.simple(ast, rules);
parser.walk.simple(ast, rules);

return results;
}
Expand All @@ -402,11 +410,16 @@
aw_found_callback = found_callback;
}

function aw_setParser(parserToSet){
parser = parserToSet;
}

exports.rules = rules;
exports.scan = aw_scan;
exports.loadRulesFile = aw_loadRulesFile;
exports.loadRules = aw_loadRules;
exports.parseRule = aw_parseRule;
exports.setResultCallback = aw_setCallback;
exports.setParser = aw_setParser;

});
7 changes: 5 additions & 2 deletions scanner.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,14 @@
var fs = require('fs');
var path = require('path');
var beautify = require('js-beautify').js_beautify;
global.acorn = require(__dirname + '/client/js/lib/acorn.js');
acorn.walk = require('acorn/util/walk.js');

var parser = require(__dirname + '../client/js/lib/acorn.js');
parser.walk = require(__dirname + '../client/js/lib/walk.js');

var ScanJS = require(__dirname + '/common/scan');
var signatures = JSON.parse(fs.readFileSync(__dirname + "/common/rules.json", "utf8"));

ScanJS.setParser(parser);
ScanJS.loadRules(signatures);

var argv = require('optimist').usage('Usage: $node scan.js -t [path/to/app] -o [resultFile.json]').demand(['t']).argv;
Expand Down

0 comments on commit eb84333

Please sign in to comment.