LoadTest
Tool zum Draufhauen auf unseren Monopedia Server
Make-File
make
Compiliert alle Dateien aus dem src-Verzeichnis und macht diese mit Hilfe der Main Methode aus der src/main.cpp zu dem ausführbaren Binary bin/loadtest.
make fast
Compiliert alle Dateien aus dem src-Verzeichnis mit FastFlags und macht diese mit Hilfe der Main Methode aus der src/main.cpp zu dem ausführbaren Binary bin/loadtest.
make test
Compiliert alle Dateien aus dem src-Verzeichnis bis auf die main.cpp und alle Testfälle aus dem test-Verzeichnis. Anschließend wird Google Test gestartet und alle Tests durchgeführt. Das Ergebnis wird auf der Kommandozeile ausgegeben.
make valgrind
Führt make test aus, startet die entstehende Testsuide allerdings mit valgrind
make format
Verwendet clang-format um den Code im src- und test-Verzeichnis nach dem Google Code Format einheitlich zu formatieren. Dies sollte vor jedem Commit durchgeführt werden. Achtung: Wenn andere Authoren ihren Code zuvor nicht damit formatiert haben, wird auch Code geändert, den du vielleicht gar nicht selbst geschrieben hast.
make doku
Startet Doxygen und erstellt eine Dokumentation aus dem Quelltext für alle dort dokumentieren Funktionen. Das Ergebnis landet als Webseite im Verzeichnis /doku
make lint
Wendet verschiedene Linting-Werkzeuge auf den Code an und gibt auf der Kommandozeile die Hinweise aus, die bei der Überprüfung gefunden wurden.
make modern
Verwendet clang-modernize um in Code Anweisungen zu ersetzen, die sich durch neue C++11 Konstrukte moderner schreiben lassen. Achtung: Der gesamte Codebasis kann und wird dabei verändert werden. Vor einen Commit sollten die Änderungen nochmal überprüft werden!
make coverage
Startet Testsuite und misst die durch ihre Tests erreichte Code-Coverage. Der Abschlussbericht landet im Verzeichnis /doku/coverage.
Dependencies
pqxx für die PostgreSQL Integration
- Arch: extra/libpqxx
- Debian: libpqxx-dev
- Ubuntu: libpqxx-dev
libconfig für externe Konfiguration
- Arch: extra/libconfig
- Debian/Ubuntu: libconfig++-dev
libncurses5-dev für die Ausgabe
- Arch: TODO
- Debian/Ubuntu: libncurses5-dev; libncursesw5-dev
Optional Dependencies
GoogleTest als Testframework
- Arch: community/gtest
- Debian/Ubuntu: libgtest-dev
- Alternative
valgrind für die dynamische Speicher-Analyse
- Arch: extra/valgrind
- Debian/Ubuntu: valgrind
Doxygen für das Erstellen der Dokumentation
- Arch: extra/doxygen
- Debian/Ubuntu: doxygen
lcov für das Messen der Code-Coverage der Testuite
- Arch: aur/lcov
- Debian/Ubuntu: lcov
clang-format für einheitliche Einrückungen im Code
- Arch: extra/clang-tools-extra
- Debian/Ubuntu: Neue Paketquellen eintragen, clang-format-3.7 installieren und verlinken (sudo ln -s /usr/bin/clang-format-3.7 /usr/local/bin/clang-format)
clang-tidy für Hinweise zu Programmierfehlern
- Arch: extra/clang-tools-extra
- Debian/Ubuntu: Neue Paketquellen eintragen, clang-tidy-3.7 installieren und verlinken (sudo ln -s /usr/bin/clang-tidy-3.7 /usr/local/bin/clang-tidy)
clang-modernize für Code-Konvertierungen zu C++11
- Arch: extra/clang-tools-extra
- Debian/Ubuntu: Neue Paketquellen eintragen, clang-modernize-3.7 installieren und verlinken (sudo ln -s /usr/bin/clang-modernize-3.7 /usr/local/bin/clang-modernize)
cpp-check für statische Code-Analyse
- Arch: community/cppcheck
- Debian/Ubuntu: cppcheck
cpp-lint für das Prüfen auf Abweichungen des Google C++ Styleguides
- Arch: aur/cpplint
- Debian/Ubuntu: python3-pip installieren, sudo pip3 install cpplint