diff --git a/src/lib/viewers/RuleViewer.ts b/src/lib/viewers/RuleViewer.ts index d8519cae5..9aa2fa6e2 100644 --- a/src/lib/viewers/RuleViewer.ts +++ b/src/lib/viewers/RuleViewer.ts @@ -38,14 +38,31 @@ export class RuleDetailDisplayer extends AbstractRuleDisplayer { const rule = rules[i]; const header = getMessage(BundleName.RuleViewer, 'summary.detail.header', [i + 1, rule.getName()]); const severity = rule.getSeverityLevel(); + const body = { - engine: rule.getEngineName(), severity: `${severity.valueOf()} (${SeverityLevel[severity]})`, - tags: rule.getTags().join(', '), - resources: rule.getResourceUrls().join(', '), - description: rule.getDescription() + engine: rule.getEngineName(), }; - const keys = ['severity', 'engine', 'tags', 'resources', 'description']; + const keys: string[] = ['severity', 'engine']; + + if (rule.getTags().length > 0) { + body['tags'] = rule.getTags().join(', '); + keys.push('tags'); + } + + if (rule.getResourceUrls().length == 1) { + body['resource'] = rule.getResourceUrls()[0]; + keys.push('resource'); + } else if (rule.getResourceUrls().length > 1) { + body['resources'] = rule.getResourceUrls(); + keys.push('resources'); + } + + if (rule.getDescription().length > 0) { + body['description'] = rule.getDescription(); + keys.push('description'); + } + styledRules.push(toStyledHeaderAndBody(header, body, keys)); } this.display.displayLog(styledRules.join('\n\n')); diff --git a/test/fixtures/comparison-files/lib/viewers/RuleViewer.test.ts/one-rule-details.txt b/test/fixtures/comparison-files/lib/viewers/RuleViewer.test.ts/one-rule-details.txt index 1a406a4a4..b3fa7bc4f 100644 --- a/test/fixtures/comparison-files/lib/viewers/RuleViewer.test.ts/one-rule-details.txt +++ b/test/fixtures/comparison-files/lib/viewers/RuleViewer.test.ts/one-rule-details.txt @@ -3,5 +3,5 @@ severity: 2 (High) engine: FakeEngine1 tags: Recommended, Security - resources: www.google.com + resource: www.google.com description: This is the description for a stub rule. Blah blah blah. diff --git a/test/fixtures/comparison-files/lib/viewers/RuleViewer.test.ts/two-rules-details.txt b/test/fixtures/comparison-files/lib/viewers/RuleViewer.test.ts/two-rules-details.txt index 32f56f881..eb1cf8d34 100644 --- a/test/fixtures/comparison-files/lib/viewers/RuleViewer.test.ts/two-rules-details.txt +++ b/test/fixtures/comparison-files/lib/viewers/RuleViewer.test.ts/two-rules-details.txt @@ -3,12 +3,14 @@ severity: 2 (High) engine: FakeEngine1 tags: Recommended, Security - resources: www.google.com + resource: www.google.com description: This is the description for a stub rule. Blah blah blah. === 2. StubRule2 severity: 4 (Low) engine: FakeEngine1 tags: CodeStyle, Performance - resources: www.bing.com, www.salesforce.com + resources: + www.bing.com + www.salesforce.com description: This is the description for a second stub rule. Blah blah blah.