aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-batch-protocol/src/main/protobuf/batch_report.proto
blob: c1b74b7f491c67b10696642c5eab753fb51d4a86 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
/*
    SonarQube, open source software quality management tool.
    Copyright (C) 2008-2015 SonarSource
    mailto:contact AT sonarsource DOT com

    SonarQube is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
    License as published by the Free Software Foundation; either
    version 3 of the License, or (at your option) any later version.

    SonarQube is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public License
    along with this program; if not, write to the Free Software Foundation,
    Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
*/

/*
Notes

  - "required" fields are not used as recommended by Google to keep forward-compatibility:
    https://developers.google.com/protocol-buffers/docs/proto#simple

  - this is beta version of specification. It will evolve during next releases and is
    not forward-compatible yet.

  - the related Java files are not generated during build. Indeed the existing protoc maven
    plugins require protobuf to be installed on boxes. That means that generated Java files
    are updated and committed for each change (see src/main/gen-java).
*/


import "constants.proto";

option java_package = "org.sonar.batch.protocol.output";

option optimize_for = SPEED;

message Metadata {
  optional int64 analysis_date = 1;
  optional string project_key = 2;
  optional string branch = 6;
  optional int32 root_component_ref = 3;

  // temporary fields used during development of computation stack
  optional int64 snapshot_id = 4;
  optional int32 deleted_components_count = 5;
}

message ComponentLink {
  optional ComponentLinkType type = 1;
  optional string href = 2;
}

// temporary message during development of computation stack
message Event {
  optional int32 component_ref = 1;
  optional string name = 2;
  optional string description = 3;
  optional EventCategory category = 4;
  optional string event_data = 5;
}

message Component {
  optional int32 ref = 1;
  optional string path = 2;
  optional string name = 3;
  optional ComponentType type = 4;
  optional bool is_test = 5;
  optional string language = 6;
  repeated int32 child_ref = 7 [packed=true];
  repeated ComponentLink link = 10;
  // Only available on PROJECT and MODULE type
  optional string version = 12;
  // Only available on PROJECT and MODULE type
  optional string key = 14;

  // temporary fields during development of computation stack
  optional int64 id = 13;
  optional int64 snapshot_id = 8;
  optional string uuid = 9;
  repeated Event event = 11;
}

message Measure {
  optional MeasureValueType value_type = 1;
  // all values may be unset for "new_xxx" measures (only variations are populated)
  optional bool boolean_value = 2;
  optional int32 int_value = 3;
  optional int64 long_value = 4;
  optional double double_value = 5;
  optional string string_value = 6;
  optional string metric_key = 7;

  // temporary fields during development of computation stack
  optional string description = 9;
  optional string rule_key = 10;
  optional Severity severity = 11;
  optional string alert_status = 12;
  optional string alert_text = 13;
  optional double variation_value_1 = 14;
  optional double variation_value_2 = 15;
  optional double variation_value_3 = 16;
  optional double variation_value_4 = 17;
  optional double variation_value_5 = 18;
  optional int32 tendency = 19;
  optional int32 characteric_id = 20;
  optional int32 person_id = 21;
}

message Measures {
  optional int32 component_ref = 1;
  repeated Measure measure = 2;
}

message Issue {
    optional string rule_repository = 1;
    optional string rule_key = 2;
    optional int32 line = 3;
    optional string msg = 4;
    optional Severity severity = 5;
    repeated string tag = 6;

    // temporary fields during development of computation stack
    optional double effort_to_fix = 7;
    optional bool is_new = 8;
    optional string uuid = 9;
    optional int64 debt_in_minutes = 10;
    optional string resolution = 11;
    optional string status = 12;
    optional string checksum = 13;
    optional bool manual_severity = 14;
    optional string reporter = 15;
    optional string assignee = 16;
    optional string action_plan_key = 17;
    optional string attributes = 18;
    optional string author_login = 19;
    optional int64 creation_date = 20;
    optional int64 close_date = 21;
    optional int64 update_date = 22;
    optional int64 selected_at = 23;
    optional string diff_fields = 24;
    optional bool is_changed = 25;
    optional bool must_send_notification = 26;
}

message Issues {
    optional int32 component_ref = 1;
    repeated Issue issue = 2;
    
    // Temporary field for issues on deleted components
    optional string component_uuid = 3;
}

message DuplicationBlock {
  // Will be null on original blocks or when duplications are on the same file
  optional int32 other_component_ref = 1;
  optional int32 start_line = 2;
  optional int32 end_line = 3;

  // temporary field during development of computation stack for cross project duplications
  optional string component_key = 4;
}

message Duplication {
  optional DuplicationBlock origin_block = 1;
  repeated DuplicationBlock duplicated_by = 2;
}

message Duplications {
  optional int32 component_ref = 1;
  repeated Duplication duplication = 2;
}