db41258d16
Ersetzt das Geruest (counter/notebook) durch ein echtes Beispiel und teilt es in zwei eigenstaendige Projekte, wie P1204R0 es fuer Bibliothek plus Programm verlangt. libpda: textfile (C, Datei-I/O und Feld-Escaping), calculator (Recursive-Descent-Parser mit std::expected), contact, editor, explorer. Exportiert pda::pda ueber install(EXPORT) und ist per find_package(pda) benutzbar. pda: Shell ohne Ein-/Ausgabe (execute() gibt Text zurueck, deshalb ohne Terminal testbar), REPL und Stapelbetrieb in main.cpp. examples/consumer und tools/check-install.sh pruefen die Export-Kette Ende-zu-Ende: installieren, dann ein fremdes Projekt dagegen bauen. docs/CMAKE.md erklaert das Target-Modell, PUBLIC/PRIVATE/INTERFACE, Generator-Ausdruecke, install/export und Symbolsichtbarkeit an diesem Projekt. 71 Tests gruen unter Homebrew-clang 22, Apple clang und GCC 16, statisch und shared, mit und ohne ASan/UBSan. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
58 lines
2.1 KiB
YAML
58 lines
2.1 KiB
YAML
# House checks. Adopted from PaulDB/tui-framework unchanged EXCEPT
|
|
# HeaderFilterRegex.
|
|
#
|
|
# The original was '.*', which makes clang-tidy analyse every transitively
|
|
# included header -- including the standard library and the vendored 363 KB
|
|
# doctest.h. Running live through clangd, that floods the editor with
|
|
# diagnostics you cannot act on. Scoped to this project's own source tree
|
|
# instead; third_party/ is a sibling directory and so is excluded by construction.
|
|
# Zwei projektspezifische Abschaltungen, begruendet:
|
|
#
|
|
# -misc-no-recursion Ein Recursive-Descent-Parser IST wechselseitig
|
|
# rekursiv (libpda/calculator.cpp). Das ist die
|
|
# Bauform, nicht ein Versehen; die Tiefe ist durch
|
|
# die Klammertiefe der Eingabe begrenzt.
|
|
#
|
|
# -performance-enum-size Schlaegt bei JEDEM enum an und will std::uint8_t
|
|
# als Basistyp. Gewinn: drei Byte in einem
|
|
# Rueckgabewert. Preis: eine ABI-Festlegung und
|
|
# Laerm in jeder Datei.
|
|
#
|
|
# ACHTUNG: Diese Kommentare stehen hier und NICHT im Checks-Block darunter.
|
|
# 'Checks: >' ist ein YAML-Folded-Scalar -- darin ist '#' gewoehnlicher Text
|
|
# und wuerde als Checkname in die Liste wandern.
|
|
Checks: >
|
|
bugprone-*,
|
|
cert-*,
|
|
clang-analyzer-*,
|
|
misc-*,
|
|
performance-*,
|
|
portability-*,
|
|
readability-*,
|
|
-readability-magic-numbers,
|
|
-readability-identifier-length,
|
|
-readability-function-cognitive-complexity,
|
|
-readability-braces-around-statements,
|
|
-cert-err33-c,
|
|
-misc-include-cleaner,
|
|
-readability-implicit-bool-conversion,
|
|
-misc-no-recursion,
|
|
-performance-enum-size
|
|
|
|
CheckOptions:
|
|
- key: bugprone-easily-swappable-parameters.MinimumLength
|
|
value: 3
|
|
- key: readability-identifier-naming.FunctionCase
|
|
value: lower_case
|
|
- key: readability-identifier-naming.VariableCase
|
|
value: lower_case
|
|
- key: readability-identifier-naming.MacroDefinitionCase
|
|
value: UPPER_CASE
|
|
- key: readability-identifier-naming.TypedefCase
|
|
value: CamelCase
|
|
- key: readability-identifier-naming.StructCase
|
|
value: CamelCase
|
|
|
|
HeaderFilterRegex: '.*/playground/.*'
|
|
FormatStyle: file
|