Recommendations for enabling more compiler checks
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Anfängerfreundlichkeit
- 25/100
Rechercherichtung
Beginnen Sie mit der Prüfung der vier Fragen des Issues zu aggressiven Warnungen in clang++ 4.x, einschließlich -Wconversion und -Weverything. Untersuchen Sie, welche Flags allgemein nützlich, szenarioabhängig oder compilatorspezifisch sind, dokumentieren Sie anschließend eine klare Empfehlung und erläutern Sie, wie kleine Projekte sie anwenden könnten; abgeschlossen ist die Aufgabe, wenn die Hinweise zu Warnungen alle vier Fragen beantworten.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Compilers enable by default, a set of warnings they will emit on dodgy or less-than-ideal code. These defaults:
- a. change over time
- b. vary between compiler versions
- c. do not include some of the most valuable warnings that might help prevent bugs
This issue is designed to focus on the problem of c from the perspective of the latest clang++ 4.x versions.
Enabling more warnings than compilers do by default can be an important way of catching bugs early. For example integer truncation bugs can often be detected by enabling -Wconversion, which is not on by default.
Enabling more warnings is very difficult to do after a project is big (e.g. https://github.com/Project-OSRM/osrm-backend/pull/4495 and https://github.com/mapnik/mapnik/issues/2907 and https://github.com/mapnik/mapnik/issues/3204). It is best not to wait and rather to start a project with aggressive warnings from the beginning.
So, the question then becomes: what is a good set of aggressive warnings to enable at the start of a project (or to try to integrate into existing projects)?
In particular:
-
🍇 Which flags we should always enable for all code no matter what?
-
🍊 What additional flags may be very useful in some scenarios/some code bases?
-
🍏 For small projects where it is feasible, can we actually start with
clang++s-Weverything? This, when feasible, might be ideal. How to do it? -
🍎 What compiler specific flags should we recommend (that only currently work for clang++ or g++)?
- Vorherrschende Sprache
- Keine Sprachdaten
- Sterne
- 110
- Forks
- 17
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beitragsleitfaden
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus mapbox/cpp
-
glossary
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 68/100
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 25/100
-
Docs on ABIs Offen
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 30/100
-
clang-tidy v. -Weffc++ Offen
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 30/100
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 35/100
Ähnliche Issues
-
compiler/runtime
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
objectionary/eo#8869 · 1 Kommentar ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
EricSpencer00/Resilient#4824 · 1 Kommentar ·
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
objectionary/jeo-maven-plugin#1758 ·
-
generics
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100