Classify remaining D&D producer diagnostics
This commit is contained in:
@@ -47,6 +47,33 @@ func Collect(findings []contracts.Warning, disposition contracts.DiagnosticDispo
|
||||
return collector.Diagnostics(), nil
|
||||
}
|
||||
|
||||
// NormalizationDiagnostics classifies deterministic normalization findings as
|
||||
// observations, except for explicitly identified unresolved-quality findings.
|
||||
func NormalizationDiagnostics(findings []contracts.Warning, advisoryReasonCodes ...string) ([]contracts.ProducerDiagnostic, error) {
|
||||
advisoryReasons := make(map[string]struct{}, len(advisoryReasonCodes))
|
||||
for _, reasonCode := range advisoryReasonCodes {
|
||||
advisoryReasons[reasonCode] = struct{}{}
|
||||
}
|
||||
observations := make([]contracts.Warning, 0, len(findings))
|
||||
advisories := make([]contracts.Warning, 0)
|
||||
for _, finding := range findings {
|
||||
if _, advisory := advisoryReasons[finding.ReasonCode]; advisory {
|
||||
advisories = append(advisories, finding)
|
||||
continue
|
||||
}
|
||||
observations = append(observations, finding)
|
||||
}
|
||||
diagnostics, err := Collect(observations, contracts.DiagnosticDispositionObservation, contracts.DiagnosticCategoryNormalization)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
qualityDiagnostics, err := Collect(advisories, contracts.DiagnosticDispositionAdvisory, contracts.DiagnosticCategoryDataQuality)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return append(diagnostics, qualityDiagnostics...), nil
|
||||
}
|
||||
|
||||
func Truncate(value string) string {
|
||||
runes := []rune(value)
|
||||
if len(runes) <= MaxDisplayedRunes {
|
||||
|
||||
Reference in New Issue
Block a user