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

preview_player
Показать описание


This session will present how to leverage C++'s diverse set of analysis tools with existing Continuous Integration services to increase a project's quality continuously over time. In additional, we will discuss the advantages and disadvantages of using these tools using real world open source examples. Those interested in Continuous Integration or learning new ways to increase the quality of their code will enjoy this presentation.

Continuous Integration (CI) is the act of continuously integrating small changes to a code base. The goal is to identify integration issues prior to making a change, ensuring a project's quality over time. Thanks to virtualization, today we have many services that provide automated continuous integration that support C++ including Travis CI and AppVeyor on Windows, Linux and MacOS. Typically CI is used to compile and sometimes execute automated tests to ensure a change to a project doesn't result in a compilation issue, or regression. C++ is however is a diverse, rich environment with numerous analysis tools available to C++ developers. These tools can be integrated into these CI services to provide automated analysis of any change being made to a project prior to it's acceptance to ensure the highest possible quality of the project.

During this session we will step through an open source project designed to demonstrate how to integrate different C++ analysis tools into your CI services. These tools include static analysis (Clang Tidy, Coverity Scan, Codeacy and CppCheck), dynamic analysis (Valgrind and Google's Sanitizers), source formatting (Astyle and Clang Format), documentation (Doxygen), code coverage (Codecov, Coveralls, and LLVM's Software-based Code Coverage), cross platform tests (Windows, Cygwin, Linux, and macOS), compiler tests (GCC, Clang, and Visual Studio) and finally C++ libraries designed to assist in reliability and automated testing (Catch, Hippomocks and the Guideline Support Library). In addition we will openly discuss the advantages and disadvantages of using various analysis tools, how to integrate these tools into existing projects (both large and small) as well as common problems encountered while using these tools autonomously in a CI environment.

Rian Quinn: AIS, Inc., Senior Engineer

Dr. Rian Quinn is a Senior Principal Investigator in the Trusted Information Systems Group at Assured Information Security, Inc. were he has focused on trusted computing and hypervisor related technologies for nearly 10 years. He holds a Ph.D. in Computer Engineering with specializations in Information Assurance and Computer Architectures from Binghamton University. He is a lead developer and co-founder of the Bareflank Hypervisor, and is an active member of several open source projects including OpenXT. Specialties: computer architectures, virtualization, operating systems, kernel programming, cyber security, and open source.


*-----*
*-----*
Рекомендации по теме
Комментарии
Автор

I almost skipped this cpp con presentation, because of the title. Im glad i forced myself into watching anyway. Great overview talk.

KurtDonkers
Автор

I would love to know about all the tools you looked into and any pro's vs con's charts you came up with on them. I spent quite a while trying to get static and dynamic analysis working from within cmake, and at the end of the day I had to balance what CMake wanted you to do with what Jenkins wanted from me for Data files. Like valgrind output for Jenkins needs to be formatted differently from what cmake/cdash want. Jenkins supports gcovr well, but not lcov, so we support both. We also rely heavily on GTest/GMock, yet run into a lot of challenges when trying to develop code that can be best tested by these tools. Would love to if you ever tested posix calls, like malloc failures as well.

DavidVines