Udostępnij za pośrednictwem


Diagnostyka SYSLIB na potrzeby generowania źródła wyrażeń regularnych

W poniższej tabeli przedstawiono identyfikatory diagnostyczne analizatorów generowania źródła w regex na platformie .NET 7 i nowszych wersjach. SYSLIB1045 automatycznie wysyła alerty do miejsc, w których można użyć generowania źródła w celu wygenerowania implementacji aparatu wyrażeń regularnych w czasie kompilacji. Pozostała diagnostyka ostrzega o błędach związanych z użyciem generatora źródłowego.

Identyfikator diagnostyczny opis
SYSLIB1040 Nieprawidłowe GeneratedRegexAttribute użycie.
SYSLIB1041 Do tej samej metody zastosowano wiele GeneratedRegexAttribute atrybutów, ale tylko jeden z nich jest dozwolony.
SYSLIB1042 Określone wyrażenie regularne jest nieprawidłowe.
SYSLIB1043 GeneratedRegexAttribute Metoda musi być częściowa, bez parametrów, niegeneryczna i nie abstrakcyjna oraz zwracać wartość Regex.
SYSLIB1044 Generator wyrażeń regularnych nie może wygenerować pełnej implementacji źródła dla określonego wyrażenia regularnego z powodu wewnętrznego ograniczenia. Aby uzyskać więcej informacji, zobacz wyjaśnienie wygenerowanego źródła.
SYSLIB1045 Użyj GeneratedRegexAttribute polecenia , aby wygenerować implementację wyrażeń regularnych w czasie kompilacji.

Aby uzyskać więcej informacji na temat generowania źródła dla wyrażeń regularnych, zobacz Generatory źródeł wyrażeń regularnych platformy .NET.

Pomijanie ostrzeżeń

Zaleca się użycie jednego z obejść, jeśli jest to możliwe. Jeśli jednak nie możesz zmienić kodu, możesz pominąć ostrzeżenie za pomocą #pragma dyrektywy lub <NoWarn> ustawienia projektu. Jeśli diagnostyka SYSLIB1XXX generatora źródłowego nie pojawia się jako błąd, możesz pominąć ostrzeżenie w kodzie lub w pliku projektu.

Aby pominąć ostrzeżenia w kodzie:

// Disable the warning.
#pragma warning disable SYSLIB1006

// Code that generates compiler diagnostic.
// ...

// Re-enable the warning.
#pragma warning restore SYSLIB1006

Aby pominąć ostrzeżenia w pliku projektu:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
   <TargetFramework>net6.0</TargetFramework>
   <!-- NoWarn below suppresses SYSLIB1002 project-wide -->
   <NoWarn>$(NoWarn);SYSLIB1002</NoWarn>
   <!-- To suppress multiple warnings, you can use multiple NoWarn elements -->
   <NoWarn>$(NoWarn);SYSLIB1002</NoWarn>
   <NoWarn>$(NoWarn);SYSLIB1006</NoWarn>
   <!-- Alternatively, you can suppress multiple warnings by using a semicolon-delimited list -->
   <NoWarn>$(NoWarn);SYSLIB1002;SYSLIB1006;SYSLIB1007</NoWarn>
  </PropertyGroup>
</Project>

Zobacz też