Repo-Init
Repo-Init Documentation

GitHub top language GitHub GitHub Workflow Status Coverage OpenSSF Scorecard

Project

CMake template to create new C++ applications with basic codes/interfaces are already defined. Requires a C++14 supported compiler.

It provides the following features

  • Tracing
    • Generates automatically minidump files using Crashpad for error signals.
  • Logging
    • Spdlog with rotating file, syslog and coloured stdout outputs
    • Sentry and Grafana Loki integration for automatic forwarding of logs to an external HTTP server
    • Prometheus client for track internal metrics like error counts, performance of functions including
      • Incremental counters to track success/fail rates and active processes,
      • Minimum and maximum timings,
      • Quantile based performance metrics to determine bottlenecks
  • User interactivity
    • Embedded Telnet Server
    • ZeroMQ socket

Feel free to ask, use and report any bugs you encountered!

SonarCloud

Contents

CMake

  • CodeCoverage : Detects and enables gcovr
  • CompilerSecurityOption: Enables/Disables secure compiler flags
  • Doxy : Find doxygen package and prepare doc environment
  • GenerateSymbols : Adds a target for generation of symbol files for minidump
  • GitVersion : Get SHA1 hash of current commit
  • GraphViz : Find graphviz and dot executable to create dependency graph

Scripts

All scripts should be executed from top level directory

  • firstName : Script to change placeholder name
  • dump_syms : Dumps symbol files

Dependencies

Developing dependencies not required for runtime,

  • breakpad (It is required for automatically dumping symbols)
  • GoogleTest (For testing)
  • MemPlumber (For testing)
  • [ZLIB]() (It is required by breakpad)

These runtime dependencies should be installed to the system (for example via package managers like apt or dnf),

Full dependency graph can be seen here

Targets

  • all : Prepares all targets
  • coverage : Prepares coverage report
  • docs : Prepares documentation
  • dependency-graph : Prepares graphviz visualization of dependencies
  • package : Prepares default packages
  • test : Prepares gtest target