Add CSS colors count and a palette as offender

This commit is contained in:
Gaël Métais
2015-01-26 19:29:08 +01:00
parent 61c09a5b49
commit ed4ddc0a43
7 changed files with 154 additions and 10 deletions
+46
View File
@@ -410,6 +410,52 @@ var policies = {
};
}
},
"cssColors": {
"tool": "phantomas",
"label": "Different colors",
"message": "<p>This is the number of different colors defined in CSS.</p><p>Your CSS project will be easier to maintain if you keep a small color set.</p>",
"isOkThreshold": 30,
"isBadThreshold": 150,
"isAbnormalThreshold": 300,
"hasOffenders": true,
"offendersTransformFn": function(offenders, ruleObject) {
var deduplicatedObj = {};
offenders.map(function(offender) {
var parts = /^([^ ]*) \((\d+) times\)$/.exec(offender);
if (!parts) {
debug('cssColors offenders transform function error with "%s"', offender);
return;
}
var color = parts[1];
var count = parseInt(parts[2], 10);
deduplicatedObj[color] = (deduplicatedObj[color] || 0) + count;
});
var deduplicatedTable = [];
for (var color in deduplicatedObj) {
deduplicatedTable.push({
color: color,
occurrences: deduplicatedObj[color]
});
}
deduplicatedTable.sort(function(a, b) {
return b.occurrences - a.occurrences;
});
// Override rules.value
ruleObject.value = deduplicatedTable.length;
return {
count: deduplicatedTable.length,
palette: deduplicatedTable
};
}
},
"cssImports": {
"tool": "phantomas",
"label": "Uses of @import",
+2 -1
View File
@@ -46,7 +46,8 @@
"policies": {
"cssRules": 2,
"cssComplexSelectors": 2,
"cssComplexSelectorsByAttribute": 1.5
"cssComplexSelectorsByAttribute": 1.5,
"cssColors": 0.5
}
},
"badCSS": {
+1 -1
View File
@@ -65,7 +65,7 @@ var RulesChecker = function() {
if (policy.offendersTransformFn) {
try {
offendersObj = policy.offendersTransformFn(offenders);
offendersObj = policy.offendersTransformFn(offenders, rule);
} catch(err) {
debug('Error while transforming offenders for %s', metricName);
debug(err);