
Steuern Sie Ihren C ++ - Code mit dieser kontinuierlichen Integrationsvorlage.
CIT - ist eine Projektvorlage für die Entwicklung von C ++ - Codebasis. Es aggregiert Linter, statische und dynamische Analyse -Tools in Single und bereit, Vorlage zu verwenden.
Erforschen Sie die Funktionen automatischer Tools und deren Auswirkungen auf die Entwicklung
Geben Sie Benutzern von Projekten einheitlicher Zugriff auf Linter und Analyse -Tools
Präsentationstechniken zum Testen verschiedener Eigenschaften von Codebasis
Stellen Sie reproduzierbare Builds und Umgebungen durch Docker und Nix bereit
Fördern Sie eine verantwortungsvolle Einstellung zur Entwicklung von Qualitätssoftware
Dieses Repository bietet dank Docker und NIX eine reproduzierbare Entwicklungs- und Testumgebung mit einer Versionsfestigkeit
Unterstützung von Major C ++ - Compilern, wobei alle Kompilierungszeitprüfungen aktiviert sind
Vertraulicher plattformübergreifender Build-Setup mit CMake und Conan
Laufzeittests mit Doctest und Desinfektionsmittel
Befehlszeilen-Tool zur Vereinfachung der Verwendung der Funktionalität

Viele Linter, Formatter- und statische Analyse -Tools, die für jeden Aspekt des Projekts mit informativen Berichten integriert sind

Sie müssen nicht auf Rohprotokolle von Tools anstarren. Dank Codechecker können Sie zusammenfassende Tabellen, Statistiken für Projekte und Berichte in Ihrem Browser überprüfen 
Auch wenn Sie es nicht lokal ausführen können - das ist kein Problem. Bereit zur Verwendung von Github CI -Setup mit denselben Schecks und Berichten als Artefakte hochgeladen
Anfragen werden nicht erfolgen, wenn Linter einige Probleme gefunden haben

ÜberprüfungDog Kommentare CPP Linters Ausgabe in Pull Anfrage

Linters -Vorschläge und automatische Korrekturen werden auch von ReviewDog als Vorschläge in der Pull -Anfrage angezeigt

Durchziehen Sie Feedback mit den Lining -Ergebnissen als Kommentar: Beispiel. Wenn PR keine Probleme mehr gibt, sehen Sie eine aktualisierte Nachricht von Bot

Codeabdeckung mit Pull Request Codecov Reports

Alle Artefakte mit Protokollen können von CI heruntergeladen werden
Dieses Projekt befindet sich in der Entwicklung, erwarten Sie Änderungen in API, Setup und Tools. Es verwendet eine Meinung von Regeln und Konventionen für das Projekt. Ändern Sie sicher, Konfigurationsdateien zu ändern, um Ihren persönlichen Anforderungen am besten zu entsprechen. Sie können damit eine Gabel geben und spielen. Beiträge zum Quellcode, Probleme und Anfragen sind willkommen.
Sie können diese Vorlage in verschiedenen Integrationsebenen in die Benutzerumgebung verwenden. Von der Verwendung des Texteditors und des Ausführens aller Schecks in CI, bis zur Verwendung vorbereiteter Docker-Image oder Nix-Shell und laufende Überprüfung lokal.
Geben Sie dieses Projekt auf, aktivieren Sie GitHub -Aktionen und bearbeiten Sie es entweder mit dem GitHub -Editor oder mit einem lokalen Texteditor
Projekt verwenden Sie Cmake Ninja und Conan. Wenn Sie sie auf Ihrem System installieren lassen, können Sie Tests wie bei jedem anderen CMake -Projekt erstellen und ausführen. Oder führen Sie dieses Bash -Skript von der Root of Project aus, um Projekt mit GCC zu erstellen:
ci/builders/gcc/build.shUm dieses Projekt lokal auf das volle Potenzial zu nutzen, haben Sie Optionen:
Installieren Sie Docker, als Sie das vorbereitete Docker -Image verwenden können. Rufen Sie dieses Skript vom Root of Project an, um die Bash -Shell im Docker -Bild auszuführen
ci/docker/run_shell.shInstallieren Sie Nix Package Manager oder verwenden Sie Nixos. In diesem Fall rufen Sie Nix-Shell an
nix-shellOkay. Sie haben Ihre Umgebung entweder mit Docker-Bild oder mit Nix-Shell bekommen. Schauen wir uns an, was als nächstes kommt. Um die Nutzung des Projekts zu erleichtern, verwenden wir nur. So können wir es so nennen:
justSie werden verfügbare Rezepte (Aktionen) sehen, die Sie zur Verwendung des Projekts ausführen können:

Lassen Sie uns die Hauptfunktionen erkunden. Sie können ein Projekt mit GCC- oder Klang -Compiler mit Befehlen erstellen:
just build-gcc just build-clangUm alle Linter für Ihre Projektnutzung auszuführen:
just lint-allUm einen spezifischen Linter in Ihrem Projekt auszuführen, verwenden Sie den Befehl Lint-with mit dem Namen des Deskriptors und der Abtreibung, alle Kapitalfall, die von Unterstrichen aufgeteilt werden. Wenn wir also eine Klangliege vom CPP-Deskriptor ausführen wollen, nennen wir:
just lint-with CPP_CLANG_TIDYUnd wir werden einen Bericht über ein einzelner Linter sehen:

Nach dem Linden können Sie den Berichtsordner mit allen Protokollen von Lintern überprüfen.
Aus Nix-Shell oder Docker-Bild können Sie auch das Docker-Image selbst erstellen. Nix wird verwendet, um das Tar -Archiv mit Docker -Bild mit allen Lintern reproduzierbar zu erstellen
just docker-buildSie können überprüfen, ob das produzierte Ergebnis die gleiche Hash -Summe hat wie von CI erzeugte Ergebnisse:
sha256sum resultDocker -Bild als aus Ergebnis geladen:
just docker-loadOder Sie können Docker-update-lokal ausführen, um Bilderstellung, SHA256SUM zu erstellen und den einzelnen Befehl zu laden:
just docker-update-locallyDer Befehl docker-update erstellt Bild und lädt es in Docker-Hub hoch:
just docker-updateUm alle inneren Arbeiten zu sehen, schauen Sie sich in JustFile nach konkreten Bash -Skripten für jede Aktion an. Überprüfen Sie die GitHub -Workflows -Datei für GitHub CI -Setup.
Online -Dienste
Einheitliche Konsolenbefehle
Git
Lizenzen
Dateien und Verzeichnisse
Rechtschreibung
statische CPP -Analyse
Dynamische CPP -Analyse
CPP -Beispiele für die Verwendung der Bibliothek
cmake
Hülse
Nix
MD -Dateien
Yaml
CPP -Werkzeuge
CPP -Compiler
CI -Umgebungen
Beispiele für die Nutzung der Bibliothek
GUI -Tests
Reproduzierbare Builds -Tests
Einheitliche Konsolenbefehle
Genehmigungstests
Mikrobenchmarking
Kompilieren Sie Zeitbenchmarking
Wiki über das Projekt
Logo und Illustrationen
Stabile Versionsversionen und Tags
Roadmap
Vielen Dank an Mitwirkende. Sie können Beiträge in Credits sehen.
CIT -Vorlage, die unter den Bedingungen der MIT -Lizenz veröffentlicht wurde. Weitere Informationen finden Sie unter Lizenz.