Code forensics
0.1
Generate historical information about code changes
|
#include <cassert>
#include <sqlite_orm/sqlite_orm.h>
#include <concepts>
#include <iostream>
#include <filesystem>
#include <unordered_map>
#include "common.hpp"
#include "dod_base.hpp"
Go to the source code of this file.
Classes | |
struct | sqlite_orm::type_printer< T > |
struct | sqlite_orm::statement_binder< T > |
struct | sqlite_orm::field_printer< T > |
struct | sqlite_orm::row_extractor< T > |
struct | dod::id_type< Str > |
struct | ir::FilePath |
file path with associated parent directory information More... | |
struct | ir::EditedFile |
struct | ir::RenamedFile |
struct | ir::Commit |
single commit by author, taken at some point in time More... | |
struct | ir::File |
single version of the file that appeared in some commit More... | |
struct | ir::Directory |
Full directory path and it's parent ID. More... | |
struct | ir::String |
Table of interned stirngs for different purposes. More... | |
struct | ir::Author |
Author - name and email found during the source code analysis. More... | |
struct | ir::LineData |
Unique combination of author+time+content for some line in database. More... | |
struct | ir::content_manager |
Main store for repository analysis. More... | |
struct | ir::orm_file |
ORM wrapper for the file data. More... | |
struct | ir::orm_commit |
ORM wrapper for the commit data. More... | |
struct | ir::orm_dir |
ORM wrapper for the directory data. More... | |
struct | ir::orm_string |
ORM wrapper for the string data. More... | |
struct | ir::orm_author |
ORM wrapper for the author data. More... | |
struct | ir::orm_line |
ORM wrapper for the line data. More... | |
struct | ir::orm_lines_table |
ORM wrapper for the file lines data ir::File::lines. More... | |
struct | ir::orm_edited_files |
struct | ir::orm_renamed_file |
struct | ir::orm_file_path |
Namespaces | |
sqlite_orm | |
ir | |
dod | |
Macros | |
#define | MAKE_HASHABLE(__type, __varname, ...) |
Declare boilerplate type hasing using list of fields. More... | |
Typedefs | |
using | ir::DbConnection = decltype(create_db("")) |
Database connection type alias. More... | |
Functions | |
template<dod::IsIdType T> | |
auto | operator<< (std::ostream &stream, T id) -> std::ostream & |
ir::DECL_ID_TYPE (LineData, LineId, std::size_t) | |
ir::DECL_ID_TYPE (Commit, CommitId, std::size_t) | |
ir::DECL_ID_TYPE (File, FileId, std::size_t) | |
ir::DECL_ID_TYPE (FilePath, FilePathId, std::size_t) | |
ir::DECL_ID_TYPE (Directory, DirectoryId, std::size_t) | |
ir::DECL_ID_TYPE (String, StringId, std::size_t) | |
ir::DECL_ID_TYPE (Author, AuthorId, int) | |
void | hash_combine (std::size_t &seed) |
template<typename T , typename... Rest> | |
void | hash_combine (std::size_t &seed, const T &v, Rest... rest) |
Mix list of hashes. More... | |
MAKE_HASHABLE (ir::Author, it, it.name, it.email) | |
MAKE_HASHABLE (ir::LineData, it, it.author, it.time, it.content) | |
MAKE_HASHABLE (ir::Directory, it, it.name, it.parent) | |
MAKE_HASHABLE (ir::String, it, it.text) | |
MAKE_HASHABLE (ir::FilePath, it, it.path) | |
void | ir::exec (sqlite3 *db, Str query) |
auto | ir::create_db (CR< Str > storagePath) |
Instantiate database connection. More... | |
#define MAKE_HASHABLE | ( | __type, | |
__varname, | |||
... | |||
) |
Declare boilerplate type hasing using list of fields.
|
inline |
|
inline |
Mix list of hashes.
MAKE_HASHABLE | ( | ir::Author | , |
it | , | ||
it. | name, | ||
it. | |||
) |
MAKE_HASHABLE | ( | ir::Directory | , |
it | , | ||
it. | name, | ||
it. | parent | ||
) |
MAKE_HASHABLE | ( | ir::FilePath | , |
it | , | ||
it. | path | ||
) |
MAKE_HASHABLE | ( | ir::LineData | , |
it | , | ||
it. | author, | ||
it. | time, | ||
it. | content | ||
) |
MAKE_HASHABLE | ( | ir::String | , |
it | , | ||
it. | text | ||
) |
auto operator<< | ( | std::ostream & | stream, |
T | id | ||
) | -> std::ostream& |