From aa34f60ce954ae2df1254b5978474eb4694682e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20M=C3=A9tais?= Date: Tue, 11 Nov 2014 23:29:54 +0100 Subject: [PATCH] Merge phantomas 1.7.0 new functionnalities --- app/node_views/results.html | 4 ++-- app/public/scripts/resultsCtrl.js | 14 +------------- phantomas_custom/modules/domQYLT/domQYLT.js | 17 ++++++++++------- 3 files changed, 13 insertions(+), 22 deletions(-) diff --git a/app/node_views/results.html b/app/node_views/results.html index 0b5e1b0..52aafed 100644 --- a/app/node_views/results.html +++ b/app/node_views/results.html @@ -132,10 +132,10 @@ -
+
Avoidable queries
- {{duplicatedQueriesCountAll}} + {{phantomasResults.metrics.DOMqueriesAvoidable}}
diff --git a/app/public/scripts/resultsCtrl.js b/app/public/scripts/resultsCtrl.js index 63e756d..e51e99b 100644 --- a/app/public/scripts/resultsCtrl.js +++ b/app/public/scripts/resultsCtrl.js @@ -64,18 +64,6 @@ app.controller('ResultsCtrl', function ($scope) { } }); - // Read all the duplicated queries and calculate a more appropriated score - $scope.duplicatedQueriesCountAll = 0; - if ($scope.phantomasResults.offenders.DOMqueriesDuplicated) { - var regex = /\): *(\d+) queries$/; - $scope.phantomasResults.offenders.DOMqueriesDuplicated.forEach(function(query) { - var regexResult = regex.exec(query); - if (regexResult) { - $scope.duplicatedQueriesCountAll += parseInt(regexResult[1], 10) - 1; - } - }); - } - // Grab the notes $scope.notations = { domComplexity: getDomComplexityScore(), @@ -192,7 +180,7 @@ app.controller('ResultsCtrl', function ($scope) { var note = 'A'; var score = $scope.phantomasResults.metrics.DOMinserts * 2 + $scope.phantomasResults.metrics.DOMqueries + - $scope.duplicatedQueriesCountAll * 2 + + $scope.phantomasResults.metrics.DOMqueriesAvoidable * 2 + $scope.phantomasResults.metrics.eventsBound; if (score > 300) { note = 'B'; diff --git a/phantomas_custom/modules/domQYLT/domQYLT.js b/phantomas_custom/modules/domQYLT/domQYLT.js index 362e6c6..8f0e4c9 100644 --- a/phantomas_custom/modules/domQYLT/domQYLT.js +++ b/phantomas_custom/modules/domQYLT/domQYLT.js @@ -3,7 +3,7 @@ */ /* global Element: true, Document: true, Node: true, window: true */ -exports.version = '0.7.a'; +exports.version = '0.9.a'; exports.module = function(phantomas) { 'use strict'; @@ -14,7 +14,8 @@ exports.module = function(phantomas) { phantomas.setMetric('DOMqueriesByTagName'); // @desc number of document.getElementsByTagName calls phantomas.setMetric('DOMqueriesByQuerySelectorAll'); // @desc number of document.querySelector(All) calls phantomas.setMetric('DOMinserts'); // @desc number of DOM nodes inserts - phantomas.setMetric('DOMqueriesDuplicated'); // @desc number of duplicated DOM queries + phantomas.setMetric('DOMqueriesDuplicated'); // @desc number of DOM queries called more than once + phantomas.setMetric('DOMqueriesAvoidable'); // @desc number of repeated uses of a duplicated query // fake native DOM functions phantomas.once('init', function() { @@ -26,6 +27,7 @@ exports.module = function(phantomas) { phantomas.spy(Document.prototype, 'getElementById', function(id) { phantomas.incrMetric('DOMqueriesById'); + phantomas.addOffender('DOMqueriesById', '#%s (in %s)', id, '#document'); querySpy('id', '#' + id, 'getElementById', '#document'); phantomas.enterContext({ @@ -53,7 +55,7 @@ exports.module = function(phantomas) { var context = phantomas.getDOMPath(this); phantomas.incrMetric('DOMqueriesByClassName'); - phantomas.addOffender('DOMqueriesByClassName', '.' + className); + phantomas.addOffender('DOMqueriesByClassName', '.%s (in %s)', className, context); querySpy('class', '.' + className, 'getElementsByClassName', context); phantomas.enterContext({ @@ -85,7 +87,7 @@ exports.module = function(phantomas) { var context = phantomas.getDOMPath(this); phantomas.incrMetric('DOMqueriesByTagName'); - phantomas.addOffender('DOMqueriesByTagName', tagName); + phantomas.addOffender('DOMqueriesByTagName', '%s (in %s)', tagName, context); querySpy('tag name', tagName.toLowerCase(), 'getElementsByTagName', context); phantomas.enterContext({ @@ -113,8 +115,8 @@ exports.module = function(phantomas) { // selector queries function selectorQuerySpy(selector, context) { phantomas.incrMetric('DOMqueriesByQuerySelectorAll'); - phantomas.addOffender('DOMqueriesByQuerySelectorAll', selector); - querySpy('selector', selector, 'querySelectorAll'); + phantomas.addOffender('DOMqueriesByQuerySelectorAll', '%s (in %s)', selector, context); + querySpy('selector', selector, 'querySelectorAll', context); } function selectorQuerySpyBefore(selector) { @@ -248,7 +250,7 @@ exports.module = function(phantomas) { DOMqueries = new Collection(); phantomas.on('domQuery', function(type, query, fnName, context) { - //phantomas.log('DOM query: by %s - "%s" (using %s on context %s)', type, query, fnName, context); + phantomas.log('DOM query: by %s - "%s" (using %s) in %s', type, query, fnName, context); phantomas.incrMetric('DOMqueries'); if (context && context.indexOf('DocumentFragment') === -1) { @@ -260,6 +262,7 @@ exports.module = function(phantomas) { DOMqueries.sort().forEach(function(query, cnt) { if (cnt > 1) { phantomas.incrMetric('DOMqueriesDuplicated'); + phantomas.incrMetric('DOMqueriesAvoidable', cnt - 1); phantomas.addOffender('DOMqueriesDuplicated', '%s: %d queries', query, cnt); } });