Udostępnij za pośrednictwem


Konfigurowanie ostrzeżeń w Visual Basic

Kompilator języka Visual Basic zawiera zestaw ostrzeżeń dotyczących kodu, które mogą powodować błędy czasu wykonywania. Możesz użyć tych informacji do pisania czystszego, szybszego i lepszego kodu z mniejszą liczbą usterek. Na przykład kompilator generuje ostrzeżenie, gdy użytkownik próbuje wywołać członka nieprzypisanej zmiennej obiektu, zwraca wartość z funkcji bez jej ustawiania lub wykonać Try blok z błędami w logice przechwytywania wyjątków.

Czasami kompilator udostępnia dodatkową logikę w imieniu użytkownika, dzięki czemu użytkownik może skupić się na zadaniu, a nie na przewidywaniu możliwych błędów. W poprzednich wersjach języka Visual Basic opcja Strict została użyta do ograniczenia dodatkowej logiki zapewnianej przez kompilator języka Visual Basic. Konfigurowanie ostrzeżeń pozwala ograniczyć tę logikę w bardziej szczegółowy sposób na poziomie poszczególnych ostrzeżeń.

Możesz dostosować projekt i wyłączyć niektóre ostrzeżenia, które nie są istotne dla aplikacji, jednocześnie zamieniając inne ostrzeżenia w błędy. Na tej stronie wyjaśniono, jak włączać i wyłączać poszczególne ostrzeżenia.

Wyłączanie i wyłączanie ostrzeżeń

Istnieje kilka różnych sposobów konfigurowania ostrzeżeń: można je skonfigurować z użyciem Project Designer, można użyć opcji kompilatora /warnaserror i /nowarn, lub edytować plik projektu (vbproj) oraz użyć właściwości NoWarn MSBuild. Aby użyć właściwości MSBuild, zobacz Pomijanie określonych ostrzeżeń dla całego projektu Visual Basic.

Środowisko Project Designer różni się w zależności od tego, czy pracujesz z projektem programu .NET Framework, czy projektem .NET Core (lub .NET 5 lub nowszym).

W projektach .NET Core (lub .NET 5 lub nowszych) sekcja Compile w programie Project Designer zawiera ustawienie o nazwie Ważność ostrzeżenia, którego można użyć do wyłączenia wszystkich ostrzeżeń, podwyższyć poziom wszystkich ostrzeżeń do błędów lub wybrać opcję kontrolowania każdej kategorii ostrzeżeń oddzielnie (wartość domyślna). Ustawienia kategorii ostrzeżeń są wyświetlane w tym samym obszarze Project Designer.

W projektach .NET Framework, na karcie Kompilacja w Project Designer, zaznacz pole wyboru Wyłącz wszystkie ostrzeżenia, aby wyłączyć wszystkie ostrzeżenia; wybierz Traktuj wszystkie ostrzeżenia jako błędy, aby traktować wszystkie ostrzeżenia jako błędy. Niektóre ostrzeżenia w wyświetlonej tabeli można przełączać na błąd lub ostrzeżenie według potrzeby.

Karta Compile na stronie Project Designer umożliwia włączanie i wyłączanie ostrzeżeń. Zaznacz pole wyboru Wyłącz wszystkie ostrzeżenia , aby wyłączyć wszystkie ostrzeżenia; wybierz Traktuj wszystkie ostrzeżenia jako błędy, aby traktować wszystkie ostrzeżenia jako błędy. Niektóre ostrzeżenia mogą być przełączane na błąd lub ostrzeżenie według potrzeb w wyświetlonej tabeli.

W przypadku ustawienia opcji ścisłej jest ustawiona wartość Wyłączoneopcja opcja ścisłej nie może być traktowana niezależnie od siebie. Gdy opcja Strict jest ustawiona na On, skojarzone ostrzeżenia są traktowane jako błędy, bez względu na ich stan. Po ustawieniu Opcji Strict na Custom, określając /optionstrict:custom w kompilatorze wiersza polecenia, ostrzeżenia Option Strict mogą być włączane lub wyłączane niezależnie.

Opcja /warnaserror wiersza polecenia kompilatora może również służyć do określenia, czy ostrzeżenia są traktowane jako błędy. Możesz dodać listę rozdzielaną przecinkami do tej opcji, aby określić, które ostrzeżenia powinny być traktowane jako błędy lub ostrzeżenia przy użyciu opcji + lub -. Poniższa tabela zawiera szczegółowe informacje o możliwych opcjach.

Opcja wiersza polecenia Określa
/warnaserror+ lub /warnaserror Traktuj wszystkie ostrzeżenia jako błędy
/warnsaserror- Nie traktuj ostrzeżeń jako błędów. To ustawienie jest domyślne.
/warnaserror+:<warning list > Traktuj określone ostrzeżenia jako błędy wymienione według ich numeru identyfikatora błędu w rozdzielanej przecinkami liście r.
/warnaserror-:<warning list> Nie traktuj określonych ostrzeżeń jako błędów wymienionych według ich numeru identyfikatora błędu na liście rozdzielanej przecinkami.
/nowarn Nie zgłaszaj ostrzeżeń.
/nowarn:<warning list> Nie zgłaszaj określonych ostrzeżeń wymienionych według ich numeru identyfikatora błędu na liście rozdzielanej przecinkami.

Lista ostrzeżeń zawiera numery identyfikatorów błędów ostrzeżeń, które powinny być traktowane jako błędy, które mogą być używane z opcjami wiersza polecenia, aby włączyć lub wyłączyć określone ostrzeżenia. Jeśli lista ostrzeżeń zawiera nieprawidłową liczbę, zgłaszany jest błąd.

Przykłady

W tej tabeli przykładów argumentów wiersza polecenia opisano, co robi każdy argument.

Argument Opis
vbc /warnaserror Określa, że wszystkie ostrzeżenia powinny być traktowane jako błędy.
vbc /warnaserror:42024 Określa, że ostrzeżenie 42024 powinno być traktowane jako błąd.
vbc /warnaserror:42024,42025 Określa, że ostrzeżenia 42024 i 42025 powinny być traktowane jako błędy.
vbc /nowarn Określa, że nie należy zgłaszać żadnych ostrzeżeń.
vbc /nowarn:42024 Określa, że ostrzeżenie 42024 nie powinno być zgłaszane.
vbc /nowarn:42024,42025 Określa, że nie powinny być zgłaszane ostrzeżenia 42024 i 42025.

Typy ostrzeżeń

Poniżej znajduje się lista ostrzeżeń, które mogą być traktowane jako błędy.

Ostrzeżenie o niejawnej konwersji

Generowane dla wystąpień niejawnej konwersji. Nie obejmują one niejawnych konwersji z wewnętrznego typu liczbowego do ciągu podczas korzystania z operatora &. Wartość domyślna dla nowych projektów jest wyłączona.

Identyfikator: 42016

Ostrzeżenie o opóźnionym wywołaniu metody i rozwiązywaniu przeciążenia

Generowane dla przypadków opóźnionego powiązania. Wartość domyślna dla nowych projektów jest wyłączona.

Identyfikator: 42017

Ostrzeżenia dotyczące operandów typu 'Object'

Generowane, gdy wystąpią operandy typu Object, które spowodują błąd przy opcji Strict On. Wartość domyślna dla nowych projektów jest włączona.

Identyfikator: 42018 i 42019

Deklaracje wymagają ostrzeżeń dotyczących klauzuli 'As'

Generowane, gdy zmienna, funkcja lub deklaracja właściwości, która nie ma klauzuli As, spowodowałaby błąd z Option Strict On. Przyjmuje się, że zmienne, które nie mają przypisanego typu, są typem Object. Wartość domyślna dla nowych projektów jest włączona.

IDENTYFIKATOR: 42020 (deklaracja zmiennej), 42021 (deklaracja funkcji) i 42022 (deklaracja właściwości).

Możliwe ostrzeżenia o wyjątku odwołania do wartości null

Generowane, gdy zmienna jest używana przed przypisaniem jej wartości. Wartość domyślna dla nowych projektów jest włączona.

Identyfikator: 42104, 42030

Ostrzeżenie o nieużywanej zmiennej lokalnej

Generowane, gdy zmienna lokalna jest zadeklarowana, ale nigdy się do niej nie odwołano. Wartość domyślna jest włączona.

Identyfikator: 42024

Ostrzeżenie o dostępie do współdzielonego członka przez zmienną instancji

Generowane, gdy uzyskiwanie dostępu do udostępnionego członka poprzez wystąpienie może powodować skutki uboczne lub gdy dostęp do udostępnionego członka przez zmienną wystąpienia nie znajduje się po prawej stronie wyrażenia albo jest przekazywany jako parametr. Wartość domyślna dla nowych projektów jest włączona.

Identyfikator: 42025

Ostrzeżenia dotyczące rekursywnego operatora lub dostępu do właściwości

Generowane, gdy treść procedury używa tego samego operatora lub właściwości, w których jest ona zdefiniowana. Wartość domyślna dla nowych projektów jest włączona.

IDENTYFIKATOR: 42004 (operator), 42026 (właściwość)

Funkcja lub operator bez ostrzeżenia o wartości zwracanej

Generowane, gdy funkcja lub operator nie ma określonej wartości zwracanej. Obejmuje to pominięcie Set niejawnej zmiennej lokalnej o takiej samej nazwie jak funkcja. Wartość domyślna dla nowych projektów jest włączona.

Identyfikator: 42105 (funkcja), 42016 (operator)

Modyfikator przeciążenia używany w ostrzeżeniu modułu

Generowane, gdy Overloads jest używany w Module. Wartość domyślna dla nowych projektów jest włączona.

Identyfikator: 42028

Zduplikowane lub nakładające się ostrzeżenia dotyczące bloków catch

Generowane, gdy blok Catch nigdy nie zostanie osiągnięty ze względu na jego relację z innymi blokami Catch, które zostały zdefiniowane. Wartość domyślna dla nowych projektów jest włączona.

Identyfikator: 42029, 42031