@@ -368,6 +368,7 @@ type uiBug struct {
368
368
Namespace string
369
369
Title string
370
370
ImpactScore int
371
+ RankTooltip string
371
372
NumCrashes int64
372
373
NumCrashesBad bool
373
374
BisectCause BisectStatus
@@ -398,19 +399,21 @@ type uiBugLabel struct {
398
399
}
399
400
400
401
type uiCrash struct {
401
- Title string
402
- Manager string
403
- Time time.Time
404
- Maintainers string
405
- LogLink string
406
- LogHasStrace bool
407
- ReportLink string
408
- ReproSyzLink string
409
- ReproCLink string
410
- ReproIsRevoked bool
411
- ReproLogLink string
412
- MachineInfoLink string
413
- Assets []* uiAsset
402
+ Title string
403
+ TailTitles []string
404
+ Manager string
405
+ Time time.Time
406
+ Maintainers string
407
+ LogLink string
408
+ LogHasStrace bool
409
+ ReportLink string
410
+ TailReportsLinks []string
411
+ ReproSyzLink string
412
+ ReproCLink string
413
+ ReproIsRevoked bool
414
+ ReproLogLink string
415
+ MachineInfoLink string
416
+ Assets []* uiAsset
414
417
* uiBuild
415
418
}
416
419
@@ -1938,10 +1941,16 @@ func createUIBug(c context.Context, bug *Bug, state *ReportingState, managers []
1938
1941
log .Errorf (c , "failed to generate credit email: %v" , err )
1939
1942
}
1940
1943
}
1944
+
1945
+ titleStat , err := report .TitleStatFromBytes ([]byte (bug .TitleStat ))
1946
+ if err != nil {
1947
+ log .Errorf (c , "report.TitleStatFromBytes: %v" , err )
1948
+ }
1941
1949
uiBug := & uiBug {
1942
1950
Namespace : bug .Namespace ,
1943
1951
Title : bug .displayTitle (),
1944
1952
ImpactScore : report .TitlesToImpact (bug .Title , bug .AltTitles ... ),
1953
+ RankTooltip : report .HigherRankTooltip (bug .Title , titleStat .Explain ()),
1945
1954
BisectCause : bug .BisectCause ,
1946
1955
BisectFix : bug .BisectFix ,
1947
1956
NumCrashes : bug .NumCrashes ,
@@ -2076,20 +2085,26 @@ func makeUIAssets(c context.Context, build *Build, crash *Crash, forReport bool)
2076
2085
}
2077
2086
2078
2087
func makeUICrash (c context.Context , crash * Crash , build * Build ) * uiCrash {
2088
+ var tailReportsLinks []string
2089
+ for _ , tailReportID := range crash .TailReports {
2090
+ tailReportsLinks = append (tailReportsLinks , textLink (textCrashReport , tailReportID ))
2091
+ }
2079
2092
ui := & uiCrash {
2080
- Title : crash .Title ,
2081
- Manager : crash .Manager ,
2082
- Time : crash .Time ,
2083
- Maintainers : strings .Join (crash .Maintainers , ", " ),
2084
- LogLink : textLink (textCrashLog , crash .Log ),
2085
- LogHasStrace : dashapi .CrashFlags (crash .Flags )& dashapi .CrashUnderStrace > 0 ,
2086
- ReportLink : textLink (textCrashReport , crash .Report ),
2087
- ReproSyzLink : textLink (textReproSyz , crash .ReproSyz ),
2088
- ReproCLink : textLink (textReproC , crash .ReproC ),
2089
- ReproLogLink : textLink (textReproLog , crash .ReproLog ),
2090
- ReproIsRevoked : crash .ReproIsRevoked ,
2091
- MachineInfoLink : textLink (textMachineInfo , crash .MachineInfo ),
2092
- Assets : makeUIAssets (c , build , crash , true ),
2093
+ Title : crash .Title ,
2094
+ TailTitles : crash .TailTitles ,
2095
+ Manager : crash .Manager ,
2096
+ Time : crash .Time ,
2097
+ Maintainers : strings .Join (crash .Maintainers , ", " ),
2098
+ LogLink : textLink (textCrashLog , crash .Log ),
2099
+ LogHasStrace : dashapi .CrashFlags (crash .Flags )& dashapi .CrashUnderStrace > 0 ,
2100
+ ReportLink : textLink (textCrashReport , crash .Report ),
2101
+ TailReportsLinks : tailReportsLinks ,
2102
+ ReproSyzLink : textLink (textReproSyz , crash .ReproSyz ),
2103
+ ReproCLink : textLink (textReproC , crash .ReproC ),
2104
+ ReproLogLink : textLink (textReproLog , crash .ReproLog ),
2105
+ ReproIsRevoked : crash .ReproIsRevoked ,
2106
+ MachineInfoLink : textLink (textMachineInfo , crash .MachineInfo ),
2107
+ Assets : makeUIAssets (c , build , crash , true ),
2093
2108
}
2094
2109
if build != nil {
2095
2110
ui .uiBuild = makeUIBuild (c , build , true )
0 commit comments