Frage

Ich mag eine Politik der keine Warnungen erzwingen, wenn ich jemand den Code überprüfen. Warnungen, die müssen erscheinen explizit dokumentiert werden, wie manchmal ist es nicht leicht, einige Warnungen zu entfernen oder möglicherweise zu viele Zyklen oder Speicher usw. erfordern.

Aber es gibt eine Kehrseite diese Politik, und das ist Warnung in einer Weise zu entfernen, die potentiell gefährlich sind, das heißt die Methode tatsächlich verbirgt das Problem nicht behebt es.

Der, den ich am meisten bewusst bin von explizit wirft, die einen Fehler verbergen könnte.

Was für andere potentiell gefährliche Weise von Compiler-Warnungen in C zu entfernen (++) gibt es, dass ich achten soll?

War es hilfreich?

Lösung

const Korrektheit kann einige Probleme für Anfänger verursachen:

// following should have been declared as f(const int & x)
void f( int & x ) {
  ...
}

später:

// n is only used to pass the parameter "4"
int n = 4;
// really wanted to say f(4)
f( n );

Edit1: In einer ähnlichen Ader, die Kennzeichnung aller Membervariablen als wandelbar , da der Code oft sie sich ändert, wenn const Korrektheit sagt, es sollte wirklich nicht

Edit2:. Ein weiterer I (möglicherweise von Java-Programmierer) stoßen habe, ist throw () Spezifikationen auf Funktionen heften, ob sie tatsächlich oder nicht werfen konnten

Andere Tipps

Nun, es gibt die offensichtliche Art und Weise - eine spezifische Warnung für Teile des Codes zu deaktivieren:

#pragma warning( disable : 4507 34 )

EDIT: Wie bereits in den Kommentaren darauf hingewiesen, ist es manchmal notwendig, in Fällen zu verwenden, wo Sie wissen, dass die Warnungen in Ordnung sind (wenn es nicht eine nützliche Funktion, gäbe es keinen Grund gewesen sein, es in an erster Stelle). Es ist aber auch eine sehr einfache Art und Weise zu „ignorieren“ Warnungen in Ihrem Code und es immer noch still zu kompilieren bekommen, das ist, was die ursprüngliche Frage war über.

Ich denke, es ist eine heikle Angelegenheit. Meine Ansicht ist, dass Warnungen sorgfältig geprüft werden sollen, um festzustellen, ob der Code korrekt ist / tut, was beabsichtigt ist. Aber oft gibt es richtigen Code, die Warnungen zu produzieren, und versuchen, sie zu beseitigen faltet nur den Code oder erzwingt eine Rewrite in einer weniger natürliche Art und Weise.

Ich erinnere mich, in einer früheren Version ich richtig und soliden Code hatte, die ein paar Warnungen produziert und Mitarbeiter begannen darüber zu beschweren. Der Code war viel sauberer und tat, was es intented wurde. Am Ende ging der Code auf der Produktion, die Warnungen.

Auch werden verschiedene Compiler-Versionen unterschiedliche Warnungen erzeugen, so wird es immer sinnlos eine „keine Warnung“ Politik zu erzwingen, wenn das Ergebnis auf der Stimmung des Compiler-Entwicklers ab.

Ich möchte betonen, wie wichtig ist es, alle Warnungen mindestens einmal zu überprüfen.

Btw entwickle ich in C und C ++ für Embedded-Systeme.

Kommentar (oder noch schlimmer, Löschen), um den Code, der die Warnung generiert. Sicher, geht die Warnung weg, aber Sie sind mehr als nur ein wenig enden wahrscheinlich mit Code, der nicht tut, was Sie möchten.

I erzwingen auch eine Nein-Warnungen Regel, aber Sie haben Recht, dass Sie nicht nur die Warnung ohne sorgfältige Prüfung entfernen. Und um ehrlich zu sein, manchmal habe ich Warnungen links in eine Weile, weil der Code richtig war. Schließlich ich es irgendwie aufzuzuräumen, denn wenn man mehr als ein Dutzend Warnungen in der Build hat, die Aufmerksamkeit auf sie zu bezahlen Menschen stoppen.

Was Sie beschrieben ist kein Problem eindeutig Warnungen. Ich kann Ihnen nicht sagen, wie oft ich jemandes Bug-Fix für Absturz zu sehen sein „ein paar NULL überprüft Ich habe“. Sie müssen, um die Ursache gehen: Wenn diese Variable NULL sein? Wenn nicht, warum es?

Dies ist, warum wir Code-Reviews haben.

Das größte Risiko wäre, dass jemand Stunden Entwicklungszeit verbringen würde eine kleine Warnung zu lösen, die keine Auswirkung auf dem Code. Das wäre eine Verschwendung von Zeit. Manchmal ist es nur einfacher, eine Warnung zu halten und eine Reihe von Kommentar hinzufügen zu erklären, warum die Warnung auftritt. (Bis jemand hat Zeit, um diese trivialen Warnungen zu beheben.)

Nach meiner Erfahrung der Lösung trivial Warnungen fügt oft noch zwei Tage Arbeit für Entwickler. Diese könnten den Unterschied zwischen Veredelung vor und nach Ablauf der Frist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top