internal NewOrRemovedRuleReleaseTrackingLine( string ruleId, string category, bool?enabledByDefault, DiagnosticSeverity?defaultSeverity, TextSpan span, SourceText sourceText, string path, bool isShipped, ReleaseTrackingRuleEntryKind kind) : base(ruleId, category, enabledByDefault, defaultSeverity, span, sourceText, path, isShipped, kind) { Debug.Assert(kind == ReleaseTrackingRuleEntryKind.New || kind == ReleaseTrackingRuleEntryKind.Removed); }
internal static ReleaseTrackingLine Create( string ruleId, string category, bool?enabledByDefault, DiagnosticSeverity?defaultSeverity, TextSpan span, SourceText sourceText, string path, bool isShipped, ReleaseTrackingRuleEntryKind kind) { return(new NewOrRemovedRuleReleaseTrackingLine(ruleId, category, enabledByDefault, defaultSeverity, span, sourceText, path, isShipped, kind)); }
protected ReleaseTrackingLine(string ruleId, string category, bool?enabledByDefault, DiagnosticSeverity?defaultSeverity, TextSpan span, SourceText sourceText, string path, bool isShipped, ReleaseTrackingRuleEntryKind kind) { RuleId = ruleId; Category = category; EnabledByDefault = enabledByDefault; DefaultSeverity = defaultSeverity; Span = span; SourceText = sourceText; Path = path; IsShipped = isShipped; Kind = kind; }
static bool IsInvalidEntry(string[] parts, ReleaseTrackingRuleEntryKind currentRuleEntryKind) { // Expected entry for New or Removed rules has 3 or 4 parts: // "Rule ID | Category | Severity | Notes" // // Expected entry for Changed rules has 5 or 6 parts: // "Rule ID | New Category | New Severity | Old Category | Old Severity | Notes" // // NOTE: Last field 'Helplink' is optional for both cases. if (parts.Length < 3 || parts.Length > 6) { return(true); } return(currentRuleEntryKind switch { ReleaseTrackingRuleEntryKind.New => parts.Length > 4, ReleaseTrackingRuleEntryKind.Removed => parts.Length > 4, ReleaseTrackingRuleEntryKind.Changed => parts.Length <= 4, _ => throw new NotImplementedException() });