Code forensics  0.1
Generate historical information about code changes
program_state.hpp File Reference

Main code analysis state and configuration classes. More...

#include <unordered_set>
#include <algorithm>
#include <chrono>
#include <boost/log/trivial.hpp>
#include <boost/date_time/gregorian/gregorian.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
#include <boost/describe.hpp>
#include <boost/mp11.hpp>
#include "common.hpp"
#include "git_interface.hpp"
#include "git_ir.hpp"
Include dependency graph for program_state.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  fmt::formatter< T, char, std::enable_if_t< boost::describe::has_describe_bases< T >::value &&boost::describe::has_describe_members< T >::value &&!std::is_union< T >::value > >
 
struct  fmt::formatter< T, char, std::enable_if_t< boost::describe::has_describe_enumerators< T >::value > >
 templated formatter for all classes that were 'described' using boost/describe macros. More...
 
struct  fmt::formatter< Date >
 formatter specialization for gregorian dates More...
 
struct  fmt::formatter< PTime >
 formatter specification for posix time More...
 
struct  walker_config
 runtime configuration state object More...
 
struct  walker_state
 Mutable state passed around walker configurations. More...
 

Typedefs

using Logger = boost::log::sources::severity_logger< boost::log::trivial::severity_level >
 
using Date = boost::gregorian::date
 
using PTime = boost::posix_time::ptime
 
using TimeDuration = boost::posix_time::time_duration
 
using TimePoint = stime::time_point< stime::system_clock >
 stdlib time point alias More...
 

Enumerations

enum  Analytics { Analytics::BlameBurndown, Analytics::CommitDiffInfo, Analytics::Commits }
 Different modes of repository analytics enabled in the application. Mapped to the --analytics command line option. More...
 

Functions

 BOOST_DESCRIBE_ENUM (Analytics, BlameBurndown, Commits, CommitDiffInfo)
 

Variables

template<typename E >
concept IsDescribedEnum = bd::has_describe_enumerators<E>::value
 Convenience concept for interfacing with 'described' enumeration types. More...
 

Detailed Description

Main code analysis state and configuration classes.

Typedef Documentation

◆ Date

using Date = boost::gregorian::date

◆ Logger

using Logger = boost::log::sources::severity_logger< boost::log::trivial::severity_level>

◆ PTime

using PTime = boost::posix_time::ptime

◆ TimeDuration

using TimeDuration = boost::posix_time::time_duration

◆ TimePoint

using TimePoint = stime::time_point<stime::system_clock>

stdlib time point alias

Enumeration Type Documentation

◆ Analytics

enum Analytics
strong

Different modes of repository analytics enabled in the application. Mapped to the --analytics command line option.

Enumerator
BlameBurndown 
CommitDiffInfo 

Use git blame for commits allowed by the filter script

Commits 

Only information about commits.

Which files where touched in each commit, how many lines were edited

Function Documentation

◆ BOOST_DESCRIBE_ENUM()

BOOST_DESCRIBE_ENUM ( Analytics  ,
BlameBurndown  ,
Commits  ,
CommitDiffInfo   
)

Variable Documentation

◆ IsDescribedEnum

template<typename E >
concept IsDescribedEnum = bd::has_describe_enumerators<E>::value

Convenience concept for interfacing with 'described' enumeration types.