diff --git a/front/src/views/rule.html b/front/src/views/rule.html
index c8c00fb..f011a2a 100644
--- a/front/src/views/rule.html
+++ b/front/src/views/rule.html
@@ -117,10 +117,6 @@
-
{{offender.property}} {{offender.message}}
@@ -188,6 +184,10 @@
@ {{offender.line}}:{{offender.column}}
+
+ {{offender.rule}} (x{{offender.occurrences}})
+
+
Property {{offender.property}} duplicated in {{offender.rule}} { }
@ {{offender.line}}:{{offender.column}}
diff --git a/lib/metadata/policies.js b/lib/metadata/policies.js
index d00f6e0..0a1df51 100644
--- a/lib/metadata/policies.js
+++ b/lib/metadata/policies.js
@@ -596,24 +596,24 @@ var policies = {
"isAbnormalThreshold": 100,
"hasOffenders": true,
"offendersTransformFn": function(offenders) {
- return {
- count: offenders.length,
- list: offenders.map(function(offender) {
- var parts = /^(.*) \((\d+) times\)$/.exec(offender);
-
- if (!parts) {
- debug('cssDuplicatedSelectors offenders transform function error with "%s"', offender);
- return {
- parseError: offender
- };
- }
+ var parsedOffenders = offenders.map(function(offender) {
+ var parts = /^(.*) \((\d+) times\) ?<(.*)>$/.exec(offender);
+ if (!parts) {
+ debug('cssDuplicatedSelectors offenders transform function error with "%s"', offender);
return {
- rule: parts[1],
- occurrences: parseInt(parts[2], 10)
+ parseError: offender
};
- })
- };
+ }
+
+ return {
+ rule: parts[1],
+ occurrences: parseInt(parts[2], 10),
+ file: parts[3]
+ };
+ });
+
+ return offendersHelpers.orderByFile(parsedOffenders);
}
},
"cssDuplicatedProperties": {
diff --git a/package.json b/package.json
index 23b089b..b8da64a 100644
--- a/package.json
+++ b/package.json
@@ -60,7 +60,7 @@
"meow": "3.7.0",
"minimize": "2.0.0",
"parse-color": "1.0.0",
- "phantomas": "1.18.0",
+ "phantomas": "1.19.0",
"ps-node": "0.1.4",
"q": "1.4.1",
"request": "2.79.0",