Make "edited issues" mean "issues the user created" instead of "issues for features edited by the user"

Only include issues created by the user in the "warnings" changeset tags
Include counts of issues resolved by the user in the changeset tags (close #6459)
Don't include "fixme" issue counts in "warnings" changeset tags since they're not created by the user (close #6658)
Don't cache crossing ways issues at the rule level
This commit is contained in:
Quincy Morgan
2019-10-04 16:50:44 +02:00
parent 51dfc8f96b
commit 7251a2ab90
3 changed files with 151 additions and 151 deletions

View File

@@ -24,7 +24,8 @@ var readOnlyTags = [
/^imagery_used$/,
/^host$/,
/^locale$/,
/^warnings:/
/^warnings:/,
/^resolved:/
];
// treat most punctuation (except -, _, +, &) as hashtag delimiters - #4398
@@ -147,31 +148,37 @@ export function uiCommit(context) {
}
}
// remove existing warning counts
// remove existing issue counts
for (var key in tags) {
if (key.match(/^warnings:/)) {
if (key.match(/(^warnings:)|(^resolved:)/)) {
delete tags[key];
}
}
function addIssueCounts(issues, prefix) {
var issuesByType = utilArrayGroupBy(issues, 'type');
for (var issueType in issuesByType) {
var issuesOfType = issuesByType[issueType];
if (issuesOfType[0].subtype) {
var issuesBySubtype = utilArrayGroupBy(issuesOfType, 'subtype');
for (var issueSubtype in issuesBySubtype) {
var issuesOfSubtype = issuesBySubtype[issueSubtype];
tags[prefix + ':' + issueType + ':' + issueSubtype] = issuesOfSubtype.length.toString().substr(0, 255);
}
} else {
tags[prefix + ':' + issueType] = issuesOfType.length.toString().substr(0, 255);
}
}
}
// add counts of warnings generated by the user's edits
var warnings = context.validator()
.getIssuesBySeverity({ what: 'edited', where: 'all', includeIgnored: true, includeDisabledRules: true }).warning;
addIssueCounts(warnings, 'warnings');
var warningsByType = utilArrayGroupBy(warnings, 'type');
for (var warningType in warningsByType) {
var warningsOfType = warningsByType[warningType];
if (warningsOfType[0].subtype) {
var warningsBySubtype = utilArrayGroupBy(warningsOfType, 'subtype');
for (var warningSubtype in warningsBySubtype) {
var warningsOfSubtype = warningsBySubtype[warningSubtype];
tags['warnings:' + warningType + ':' + warningSubtype] = warningsOfSubtype.length.toString();
}
} else {
tags['warnings:' + warningType] = warningsOfType.length.toString();
}
}
// add counts of issues resolved by the user's edits
var resolvedIssues = context.validator().getResolvedIssues();
addIssueCounts(resolvedIssues, 'resolved');
_changeset = _changeset.update({ tags: tags });