| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187 | syntax = "proto3";message Metadata {    // this format is versioned    int32 version = 1;    // git hash of the revision from which Hercules is built    string hash = 2;    // repository's name    string repository = 3;    // UNIX timestamp of the first analysed commit    int64 begin_unix_time = 4;    // UNIX timestamp of the last analysed commit    int64 end_unix_time = 5;    // number of processed commits    int32 commits = 6;    // duration of the analysis in milliseconds    int64 run_time = 7;    // time taken by each pipeline item in seconds    map<string, double> run_time_per_item = 8;}message BurndownSparseMatrixRow {    // the first `len(column)` elements are stored,    // the rest `number_of_columns - len(column)` values are zeros    repeated uint32 columns = 1;}message BurndownSparseMatrix {    string name = 1;    int32 number_of_rows = 2;    int32 number_of_columns = 3;    // `len(row)` matches `number_of_rows`    repeated BurndownSparseMatrixRow rows = 4;}message FilesOwnership {    // The sum always equals to the total number of lines in the file.    map<int32, int32> value = 1;}message BurndownAnalysisResults {    // how many ticks are in each band [burndown_project, burndown_file, burndown_developer]    int32 granularity = 1;    // how frequently we measure the state of each band [burndown_project, burndown_file, burndown_developer]    int32 sampling = 2;    // always exists    BurndownSparseMatrix project = 3;    // this is included if `--burndown-files` was specified    repeated BurndownSparseMatrix files = 4;    // these two are included if `--burndown-people` was specified    repeated BurndownSparseMatrix people = 5;    // rows and cols order correspond to `burndown_developer`    CompressedSparseRowMatrix people_interaction = 6;    // How many lines belong to relevant developers for each file. The order is the same as in `files`.    repeated FilesOwnership files_ownership = 7;    // how long each tick is, as an int64 nanosecond count (Go's time.Duration)    int64 tick_size = 8;}message CompressedSparseRowMatrix {    int32 number_of_rows = 1;    int32 number_of_columns = 2;    // https://en.wikipedia.org/wiki/Sparse_matrix#Compressed_sparse_row_.28CSR.2C_CRS_or_Yale_format.29    repeated int64 data = 3;    repeated int32 indices = 4;    repeated int64 indptr = 5;}message Couples {    // name of each `matrix`'s row and column    repeated string index = 1;    // is always square    CompressedSparseRowMatrix matrix = 2;}message TouchedFiles {    repeated int32 files = 1;  // values correspond to `file_couples::index`}message CouplesAnalysisResults {    Couples file_couples = 6;    Couples people_couples = 7;    // order corresponds to `people_couples::index`    repeated TouchedFiles people_files = 8;    // order corresponds to `file_couples::index`    repeated int32 files_lines = 9;}message UASTChange {    string file_name = 1;    string src_before = 2;	string src_after = 3;	string uast_before = 4;	string uast_after = 5;}message UASTChangesSaverResults {    repeated UASTChange changes = 1;}message ShotnessRecord {    string type = 1;    string name = 2;    string file = 3;    map<int32, int32> counters = 4;}message ShotnessAnalysisResults {    repeated ShotnessRecord records = 1;}message FileHistory {    repeated string commits = 1;    map<int32, LineStats> changes_by_developer = 2;}message FileHistoryResultMessage {    map<string, FileHistory> files = 1;}message LineStats {    int32 added = 1;    int32 removed = 2;    int32 changed = 3;}message DevTick {    int32 commits = 1;    LineStats stats = 2;    map<string, LineStats> languages = 3;}message TickDevs {    map<int32, DevTick> devs = 1;}message DevsAnalysisResults {    map<int32, TickDevs> ticks = 1;    repeated string dev_index = 2;}message Sentiment {    float value = 1;    repeated string comments = 2;    repeated string commits = 3;}message CommentSentimentResults {    map<int32, Sentiment> sentiment_by_tick = 1;}message CommitFile {    string name = 1;    string language = 3;    LineStats stats = 4;}message Commit {    string hash = 1;    int64 when_unix_time = 2;    int32 author = 3;    repeated CommitFile files = 4;}message CommitsAnalysisResults {    repeated Commit commits = 1;    repeated string author_index = 2;}message Typo {    string wrong = 1;    string correct = 2;    string commit = 3;    string file = 4;    int32 line = 5;}message TyposDataset {    repeated Typo typos = 1;}message AnalysisResults {    Metadata header = 1;    // the mapped values are dynamic messages which require the second parsing pass.    map<string, bytes> contents = 2;}
 |