Skip to content

This is a test project to improve the quality of code and product at all

License

Notifications You must be signed in to change notification settings

SlavaMelanko/PocoHttpWebServer

Repository files navigation

PocoHttpWebServer

GitHub version Build Status: Linux, OSX Build Status: Windows codecov Coverage Status Coverity Scan Build Status Codacy Badge CodeFactor

pipecat

This is a test project to find and check tools/packages/services which improve the quality, readability of code and reliable of the future product at all.

CppCon 2017: Rian Quinn “A Test a Day Keeps Your Manager Away!”

Main Concepts

  • Make Simple Tasks Simple!
  • The Evils of Duplication - do not repeat yourself (DRY)
  • Orthogonality - make modules less cohesion
  • Reversibility
  • Respect all people who are or will be involved into project
  • Documentation is important

Major Technologies

Integrated Development Environments (IDE)

  • Visual Studio Community 2017
  • CLion
  • Xcode
  • Qt Creator

Continuous Integration Services

  • Travis CI is a hosted, distributed continuous integration service used to build and test software projects hosted at GitHub.
  • AppVeyor is a hosted, distributed continuous integration service used to build and test projects hosted on GitHub on a Microsoft Windows virtual machine.

Code Coverage Tools

  • Code Coverage is a measurement used to express which lines of code were executed by a test suite.
  • Coveralls is a web service to help you track your code coverage over time, and ensure that all your new code is fully covered.

C++ Code Formatter

  • ClangFormat is a tool to automatically format C++ code.
find modules -name '*.h' -or -name '*.cpp' | xargs -I {} sh -c 'echo {}; clang-format -style=file -i {};'

C++ Analysis Tools

  • Codacy is an automated code review platform.
  • CodeFactor seamlessly integrates with GitHub, instantly performs Code Review with every GitHub Commit or PR.
  • Coverity is a brand of software development products from Synopsys, consisting primarily of static code analysis and dynamic code analysis tools.
  • CppCheck is an analysis tool for C/C++ code. It detects the types of bugs that the compilers normally fail to detect.
  • Clang-Tidy is a clang-based C++ “linter” tool. Its purpose is to provide an extensible framework for diagnosing and fixing typical programming errors, like style violations, interface misuse, or bugs that can be deduced via static analysis.
TODO: Move to wiki
sudo apt-rm-repository "deb http://apt.llvm.org/artful/ llvm-toolchain-artful-6.0 main"
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add -
sudo apt-get install clang-6.0 lldb-6.0 clang-tools-6.0
  • Valgrind is a programming tool for memory debugging, memory leak detection, and profiling.
  • Google Sanitizers is another analysis tool for C/C++ code which is based on:
    • AddressSanitizer
    • MemorySanitizer
    • ThreadSanitizer

Continuous Delivery Tools

  • Docker is a tool designed to make it easier to create, deploy, and run applications by using containers.

Documentation

  • Doxygen is a source code documentation and analysis tool.

Specification

  • OpenAPI + Swagger (tools for implementing the specification)

Others

  • draw.io is a diagramming tool which helps to create flowcharts, process diagrams, org charts, UML, ER diagrams, network diagrams and much more.