52
52
53
53
<div v-if =" !problematicRuns.length" >
54
54
<v-row align =" center" >
55
- <v-col cols =" 3 " >
55
+ <v-col cols =" 6 " >
56
56
<v-select
57
57
v-model =" selectedGuidelineIndexes"
58
58
:items =" guidelineOptions"
59
59
item-text =" name"
60
60
label =" Select guidelines"
61
61
outlined
62
62
multiple
63
- dense
64
- />
63
+ density =" comfortable"
64
+ >
65
+ <template v-slot :selection =" { item } " >
66
+ <div class =" selection-item" >
67
+ {{ item.name }}
68
+ </div >
69
+ </template >
70
+ </v-select >
65
71
</v-col >
66
72
</v-row >
67
73
<guideline-statistics-table
@@ -282,6 +288,7 @@ export default {
282
288
const value = [
283
289
stat .guidelineName ,
284
290
stat .guidelineRule ,
291
+ stat .guidelineRuleTitle ,
285
292
checker .name ,
286
293
this .severityFromCodeToString (checker .severity ),
287
294
checker .enabledInAllRuns
@@ -297,7 +304,7 @@ export default {
297
304
298
305
const data = [
299
306
[
300
- " Guideline Name" , " Rule Name" , " Related Checker(s)" ,
307
+ " Guideline Name" , " Rule Name" , " Rule Title " , " Related Checker(s)" ,
301
308
" Checker Severity" , " Checker Status" , " Closed Reports" ,
302
309
" Outstanding Reports"
303
310
],
@@ -313,45 +320,53 @@ export default {
313
320
this .selectedGuidelines ,
314
321
handleThriftError (async guidelines => {
315
322
for (const [ guideline , rules ] of Object .entries (guidelines)) {
316
- guidelines[guideline] = await Promise .all (
317
- rules .map (async rule => {
318
- const checkers = await Promise .all (
319
- rule .checkers .map (async checker => {
320
- const severity = await new Promise (resolve => {
321
- ccService .getClient ().getCheckerLabels (
322
- [
323
- new Checker ({
324
- analyzerName: null ,
325
- checkerId: checker
326
- })
327
- ],
328
- handleThriftError (labels => {
329
- const severityLabels = labels[0 ].filter (param =>
330
- param .startsWith (" severity" )
331
- );
332
- const severity = severityLabels .length
333
- ? severityLabels[0 ].split (" severity:" )[1 ]
334
- : null ;
335
- resolve (severity);
336
- })
323
+ const all_checkers = [];
324
+ rules .forEach (rule => {
325
+ rule .checkers .map (checker => {
326
+ const chk = new Checker ({
327
+ analyzerName: null ,
328
+ checkerId: checker
329
+ });
330
+
331
+ if (! all_checkers .some (
332
+ c => c .checkerId === chk .checkerId )) {
333
+ all_checkers .push (chk);
334
+ }
335
+ });
336
+ });
337
+
338
+ const checkers_with_severity = await new Promise (resolve => {
339
+ ccService .getClient ().getCheckerLabels (
340
+ all_checkers, handleThriftError (labels => {
341
+ resolve (
342
+ labels .map ((label , i ) => {
343
+ const severityLabels = label .filter (param =>
344
+ param .startsWith (" severity" )
337
345
);
338
- });
339
-
340
- return {
341
- checkerName: checker,
342
- severity: severity
343
- };
344
- })
345
- );
346
-
347
- return {
348
- ruleId: rule .ruleId ,
349
- title: rule .title ,
350
- url: rule .url ,
351
- checkers: checkers
352
- };
353
- })
354
- );
346
+ return severityLabels .length
347
+ ? {
348
+ checkerName: all_checkers[i].checkerId ,
349
+ severity: severityLabels[0 ].split (" severity:" )[1 ]
350
+ }
351
+ : {
352
+ checkerName: all_checkers[i].checkerId ,
353
+ severity: null
354
+ };
355
+ })
356
+ );
357
+ })
358
+ );
359
+ });
360
+
361
+ guidelines[guideline] = rules .map (rule => {
362
+ return {
363
+ ruleId: rule .ruleId ,
364
+ title: rule .title ,
365
+ url: rule .url ,
366
+ checkers: checkers_with_severity .filter (
367
+ cws => rule .checkers .includes (cws .checkerName ))
368
+ };
369
+ });
355
370
}
356
371
357
372
resolve (guidelines);
@@ -491,3 +506,10 @@ export default {
491
506
}
492
507
};
493
508
</script >
509
+
510
+ <style scoped>
511
+ .selection-item {
512
+ display : block ;
513
+ width : 100% ;
514
+ }
515
+ </style >
0 commit comments