From 457d6cc54bc76059ada6a99a9f694d88e99ccf69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20M=C3=A9tais?= Date: Mon, 16 Mar 2015 16:54:17 +0100 Subject: [PATCH] Add offenders for document.write calls --- front/src/views/rule.html | 13 +++++++++++ lib/metadata/policies.js | 48 ++++++++++++++++++++++++++++++++++++++- 2 files changed, 60 insertions(+), 1 deletion(-) diff --git a/front/src/views/rule.html b/front/src/views/rule.html index c62e14f..fcc6ae0 100644 --- a/front/src/views/rule.html +++ b/front/src/views/rule.html @@ -62,6 +62,19 @@ +
+ {{offender.writeFn}} + + called from + {{offender.from.functionName}}() + + line {{offender.from.line}} + + + called from (no backtrace available) + +
+
{{offender.error}} diff --git a/lib/metadata/policies.js b/lib/metadata/policies.js index 2406e45..5b284c1 100644 --- a/lib/metadata/policies.js +++ b/lib/metadata/policies.js @@ -242,7 +242,53 @@ var policies = { "isOkThreshold": 0, "isBadThreshold": 10, "isAbnormalThreshold": 20, - "hasOffenders": false + "hasOffenders": true, + "offendersTransformFn": function(offenders) { + return { + count: offenders.length, + list: offenders.map(function(offender) { + var parts = /^document.write(ln)?\(\) used from (.*)$/.exec(offender); + + if (parts) { + + var writeFn = 'document.write' + (parts[1] || ''); + + var methodParts = /^([^\s]+) \((.+):(\d+)\)$/.exec(parts[2]); + if (methodParts) { + return { + writeFn: writeFn, + from: { + functionName: methodParts[1], + file: methodParts[2], + line: methodParts[3] + } + }; + } else { + var noMethodParts = /^(.+):(\d+)$/.exec(parts[2]); + + if (noMethodParts) { + return { + writeFn: writeFn, + from: { + file: noMethodParts[1], + line: noMethodParts[2] + } + }; + } else { + return { + + } + } + } + } + + debug('documentWriteCalls offenders transform function error with "%s"', offender); + return { + parseError: offender + }; + }) + }; + } }, "consoleMessages": { "tool": "phantomas",