Add metrics queriesWithoutResults, jQueryCalls, jQueryCallsOnEmptyObject, jQueryNotDelegatedEvent

This commit is contained in:
Gaël Métais
2015-05-11 18:28:11 +02:00
parent cee47f2846
commit a7051ace5d
2 changed files with 23 additions and 7 deletions
@@ -670,8 +670,10 @@
if (node.data.callDetails.context && node.data.callDetails.context.length === 0) {
html += '<h4>Called on 0 jQuery element</h4><p class="advice">Useless function call, as the jQuery object is empty.</p>';
} else if (node.data.type === 'jQuery - bind' && node.data.callDetails.context.length > 5) {
html += '<p class="advice">The .bind() method attaches the event listener to each jQuery element one by one. Using the .on() method is preferable if available (from v1.7).</p>';
} else if (node.data.type === 'jQuery - bind' && node.data.callDetails.context.length > 3) {
html += '<p class="advice">The .bind() method attaches the event listener to each jQuery element one by one. Using the .on() method with event delegation is preferable if available (from v1.7).</p>';
} else if (node.data.type === 'jQuery - on' && node.data.callDetails.context.length > 3) {
html += '<p class="advice">The .on() method used this way attaches the event listener to each jQuery element one by one. Using the event delegation version of the method is preferable if available (from v1.7).</p>';
}
if (node.data.resultsNumber === 0) {
+19 -5
View File
@@ -10,10 +10,11 @@ var jsExecutionTransformer = function() {
var metrics = {
DOMaccesses: 0,
DOMaccessesOnScroll: 0,
queriesWithoutResults: 0,
jQueryCalls: 0,
jQueryCallsOnEmptyObject: 0,
DOMaccessesOnScroll: 0
jQueryNotDelegatedEvent: 0
};
try {
@@ -24,14 +25,27 @@ var jsExecutionTransformer = function() {
if (javascriptExecutionTree.children) {
javascriptExecutionTree.children.forEach(function(node) {
// Mark abnormal things with a warning flag
var contextLenght = (node.data.callDetails && node.data.callDetails.context) ? node.data.callDetails.context.length : null;
if ((node.data.type === 'jQuery - bind' && contextLenght > 5) ||
node.data.resultsNumber === 0 ||
contextLenght === 0) {
if ((node.data.type === 'jQuery - bind' || node.data.type === 'jQuery - on') && contextLenght > 3) {
metrics.jQueryNotDelegatedEvent += contextLenght - 1;
node.warning = true;
}
if (node.data.resultsNumber === 0) {
metrics.queriesWithoutResults ++;
node.warning = true;
}
if (contextLenght === 0) {
metrics.jQueryCallsOnEmptyObject ++;
node.warning = true;
}
if (node.data.type.indexOf('jQuery - ') === 0) {
metrics.jQueryCalls ++;
}
// Mark errors with an error flag
if (node.data.type === 'error' || node.data.type === 'jQuery version change') {
node.error = true;