Add CSS colors count and a palette as offender
This commit is contained in:
@@ -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",
|
||||
|
||||
@@ -46,7 +46,8 @@
|
||||
"policies": {
|
||||
"cssRules": 2,
|
||||
"cssComplexSelectors": 2,
|
||||
"cssComplexSelectorsByAttribute": 1.5
|
||||
"cssComplexSelectorsByAttribute": 1.5,
|
||||
"cssColors": 0.5
|
||||
}
|
||||
},
|
||||
"badCSS": {
|
||||
|
||||
+1
-1
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user