Konfigurieren von Warnungen in Visual Basic

Der Visual Basic-Compiler enthält eine Reihe von Warnungen zu Code, der möglicherweise Laufzeitfehler verursacht. Mithilfe dieser Informationen können Sie saubereren, schnelleren und besseren Code mit weniger Fehlern schreiben. So gibt der Compiler z.B. eine Warnung aus, wenn der Benutzer versucht, einen Member einer nicht zugewiesenen Objektvariablen aufzurufen, eine Funktion ohne Angabe eines Rückgabewerts zu beenden oder einen Try-Block auszuführen, der Programmfehler im Code für das Abfangen von Ausnahmen enthält.

In einigen Fällen stellt der Compiler auch zusätzliche Funktionen bereit, die es dem Benutzer ermöglichen, sich auf die konkrete Aufgabe zu konzentrieren, statt sich um möglicherweise auftretende Fehler zu kümmern. In früheren Versionen von Visual Basic wurde Option Strict verwendet, um die zusätzliche Logik einzuschränken, die der Visual Basic-Compiler bereitstellt. Durch die Konfiguration von Warnungen können Sie diese Funktionalität auf der Ebene der einzelnen Warnungen und somit wesentlich genauer kontrollieren.

So können Sie Projekte an Ihre Anforderungen anpassen und einzelne Warnungen deaktivieren, die für Ihre Anwendung nicht relevant sind, oder bestimmte Warnungen in Fehlermeldungen umwandeln. Auf dieser Seite wird das Aktivieren und Deaktivieren einzelner Warnungen erläutert.

Aktivieren und Deaktivieren von Warnungen

Sie können Warnungen auf zwei Arten konfigurieren: Mit dem Projekt-Designer oder mit den Compileroptionen /warnaserror und /nowarn.

Im Projekt-Designer können Sie Warnungen auf der Registerkarte Kompilieren aktivieren und deaktivieren. Wenn Sie alle Warnungen deaktivieren möchten, aktivieren Sie das Kontrollkästchen Alle Warnungen deaktivieren. Wenn alle Warnungen als Fehler behandelt werden sollen, aktivieren Sie das Kontrollkästchen Alle Warnungen als Fehler behandeln. Einige Warnungen können in der angezeigten Tabelle je nach Bedarf als Fehler oder als Warnungen konfiguriert werden.

Wenn Option Strict auf Off festgelegt ist, können Warnungen im Zusammenhang mit Option Strict nicht unabhängig voneinander behandelt werden. Wenn Option Strict auf On festgelegt ist, werden die zugeordneten Warnungen unabhängig von deren Status als Fehler behandelt. Wenn Option Strict durch Angabe von /optionstrict:custom im Befehlszeilencompiler auf Custom festgelegt ist, können Option Strict-Warnungen unabhängig voneinander aktiviert bzw. deaktiviert werden.

Mithilfe der Befehlszeilenoption /warnaserror des Compilers kann ebenfalls festgelegt werden, ob Warnungen als Fehler behandelt werden. Sie können bei dieser Option mit den Zeichen + bzw. - in einer durch Trennzeichen getrennten Liste angeben, welche Warnungen als Fehler behandelt werden sollen. In der folgenden Tabelle werden die möglichen Optionen aufgeführt.

Befehlszeilenoption Bedeutung
/warnaserror+ Alle Warnungen als Fehler behandeln.
/warnsaserror- Warnungen nicht als Fehler behandeln. Dies ist die Standardeinstellung.
/warnaserror+:<warning list > Bestimmte Warnungen, die mit ihrer Fehler-ID in einer durch Trennzeichen getrennten Liste angegeben werden, als Fehler behandeln.
/warnaserror-:<warning list> Bestimmte Warnungen, die mit ihrer Fehler-ID in einer durch Trennzeichen getrennten Liste angegeben werden, nicht als Fehler behandeln.
/nowarn Keine Warnungen ausgeben.
/nowarn:<warning list> Bestimmte Warnungen, die mit ihrer Fehler-ID in einer durch Trennzeichen getrennten Liste angegeben werden, nicht ausgeben.

Die Liste mit Warnungen enthält die Fehler-IDs der Warnungen, die als Fehler behandelt werden sollen. Auf diese Weise können bestimmte Warnungen mithilfe von Befehlszeilenoptionen aktiviert bzw. deaktiviert werden. Wenn die Liste der Warnungen eine ungültige ID enthält, wird ein Fehler ausgegeben.

Beispiele

In dieser Tabelle mit Beispielen für Befehlszeilenargumente wird die Bedeutung der einzelnen Argumente beschrieben.

Argument BESCHREIBUNG
vbc /warnaserror Gibt an, dass alle Warnungen als Fehler behandelt werden sollen.
vbc /warnaserror:42024 Gibt an, dass die Warnung 42024 als Fehler behandelt werden soll.
vbc /warnaserror:42024,42025 Gibt an, dass die Warnungen 42024 und 42025 als Fehler behandelt werden sollen.
vbc /nowarn Gibt an, dass keine Warnungen ausgegeben werden sollen.
vbc /nowarn:42024 Gibt an, dass die Warnung 42024 nicht ausgegeben werden soll.
vbc /nowarn:42024,42025 Gibt an, dass die Warnungen 42024 und 42025 nicht ausgegeben werden sollen.

Arten von Warnungen

Im Folgenden wird eine Liste von Warnungen aufgeführt, die als Fehler behandelt werden können.

Implizite Konvertierung

Wird bei impliziten Konvertierungen generiert. Hierzu zählen keine impliziten Konvertierungen aus einem systeminternen numerischen Typ in eine Zeichenfolge bei Verwendung des Operators &. Für neue Projekte standardmäßig deaktiviert.

ID: 42016

Aufruf spät gebundener Methoden und Warnungen zur Überladungsauflösung

Wird bei später Bindung generiert. Für neue Projekte standardmäßig deaktiviert.

ID: 42017

Warnungen zum Operanden vom Typ „Object“

Wird generiert, wenn Operanden vom Typ Object vorkommen, die bei Verwendung von Option Strict On einen Fehler verursachen würden. Für neue Projekte standardmäßig aktiviert.

ID: 42018 und 42019

Für Deklarationen ist eine As-Klausel erforderlich

Wird generiert, wenn eine Variablen-, Funktions- oder Eigenschaftendeklaration ohne As-Klausel bei Verwendung von Option Strict On einen Fehler verursachen würde. Bei Variablen, denen kein Typ zugeordnet ist, wird davon ausgegangen, dass diese vom Typ Object sind. Für neue Projekte standardmäßig aktiviert.

ID: 42020 (Variablendeklaration), 42021 (Funktionsdeklaration) und 42022 (Eigenschaftendeklaration)

Warnungen zu Ausnahmen bei möglichem NULL-Verweis

Wird generiert, wenn eine Variable verwendet wird, bevor dieser ein Wert zugewiesen wurde. Für neue Projekte standardmäßig aktiviert.

ID: 42104, 42030

Warnung zu nicht verwendeten lokalen Variablen

Wird generiert, wenn eine lokale Variable deklariert, aber nie auf diese verwiesen wird. Standardmäßig aktiviert.

ID: 42024

Warnung zum Zugriff auf freigegebenen Member durch Instanzvariable

Wird generiert, wenn beim Zugriff auf einen freigegebenen Member durch eine Instanz Nebeneffekte auftreten könnten oder wenn der Zugriff auf einen freigegebenen Member durch eine Instanzvariable nicht auf der rechten Seite eines Ausdrucks erfolgt oder als Parameter übergeben wird. Für neue Projekte standardmäßig aktiviert.

ID: 42025

Warnungen zum rekursiven Zugriff auf Operator oder Eigenschaft

Wird generiert, wenn im Rumpf einer Routine derselbe Operator oder dieselbe Eigenschaft verwendet wird, in dem oder der die Routine definiert ist. Für neue Projekte standardmäßig aktiviert.

ID: 42004 (Operator), 42026 (Eigenschaft)

Warnung zu Funktion oder Operator ohne Rückgabewert

Wird generiert, wenn für eine Funktion oder einen Operator kein Rückgabewert angegeben wurde. Dazu zählt auch das Auslassen von Set für die implizite lokale Variable, die denselben Namen wie die Funktion hat. Für neue Projekte standardmäßig aktiviert.

ID: 42105 (Funktion), 42016 (Operator)

Warnung zur Verwendung eines Overloads-Modifizierers in einem Modul

Wird generiert, wenn Overloads in einem Module verwendet wird. Für neue Projekte standardmäßig aktiviert.

ID: 42028

Warnung zu doppelten oder sich überschneidenden catch-Blöcken

Wird generiert, wenn ein Catch-Block durch dessen Beziehung zu anderen definierten Catch-Blöcken nie erreicht wird. Für neue Projekte standardmäßig aktiviert.

ID: 42029, 42031