1
1
mirror of https://github.com/github/semantic.git synced 2024-12-30 02:14:20 +03:00
semantic/proto/code_analysis.proto

160 lines
3.3 KiB
Protocol Buffer
Raw Normal View History

syntax = "proto3";
2018-07-04 00:21:46 +03:00
package github.semantic;
import "ruby_term.proto";
import "ruby_diff.proto";
import "json_term.proto";
import "typescript_term.proto";
import "typescript_diff.proto";
import "python_term.proto";
import "python_diff.proto";
import "types.proto";
import "error_details.proto";
option java_package = "com.github.semantic.analysis";
option go_package = "github.com/semantic/analysis/;analysis";
2018-07-04 00:21:46 +03:00
2018-06-13 01:29:41 +03:00
// Semantic's CodeAnalysis service provides endpoints for parsing, analyzing, and
// comparing source code.
service CodeAnalysis {
// Parsing
//
2018-06-13 01:29:41 +03:00
// Parse source code blobs and return abstract syntax trees.
2018-07-03 18:33:12 +03:00
rpc ParseTree (ParseTreeRequest) returns (ParseTreeResponse);
// Diffing
//
2018-06-13 01:29:41 +03:00
// Summarize an AST diff of source blobs.
rpc SummarizeDiff (SummarizeDiffRequest) returns (SummarizeDiffResponse);
// Diff the ASTs of source blobs
rpc DiffTree (DiffTreeRequest) returns (DiffTreeResponse);
// Analyzing
//
// Calculate an import graph for a project.
rpc GraphImports (ImportGraphRequest) returns (ImportGraphResponse);
// Calculate a call graph for a project.
rpc GraphCalls (CallGraphRequest) returns (CallGraphResponse);
// Status and Health
//
2018-06-13 01:29:41 +03:00
// Check health & status of the service.
rpc CheckHealth (HealthCheckRequest) returns (HealthCheckResponse);
}
message ParseTreeRequest {
repeated Blob blobs = 1;
}
message ParseTreeResponse {
2018-06-30 00:11:23 +03:00
oneof response_type {
2018-07-02 18:29:44 +03:00
RubyResponse ruby = 1;
JSONResponse json = 2;
TypeScriptResponse typescript = 3;
PythonResponse python = 4;
2018-06-30 00:11:23 +03:00
}
2018-08-24 20:11:38 +03:00
DebugInfo error_info = 5;
2018-06-30 00:11:23 +03:00
}
message RubyResponse {
repeated rubyterm.RubyTerm terms = 1;
repeated DebugInfo errors = 2;
}
2018-07-02 18:29:44 +03:00
message JSONResponse {
repeated jsonterm.JSONTerm terms = 1;
repeated DebugInfo errors = 2;
2018-07-02 18:29:44 +03:00
}
message TypeScriptResponse {
repeated typescriptterm.TypeScriptTerm terms = 1;
repeated DebugInfo errors = 2;
}
message PythonResponse {
repeated pythonterm.PythonTerm terms = 1;
repeated DebugInfo errors = 2;
}
message SummarizeDiffRequest {
repeated BlobPair blobPairs = 1;
}
message SummarizeDiffResponse {
repeated DiffSummary changes = 1;
repeated ParseError errors = 2;
DebugInfo error_info = 3;
}
message DiffTreeRequest {
repeated BlobPair blobPairs = 1;
}
message DiffTreeResponse {
oneof response_type {
RubyDiffResponse ruby = 1;
PythonDiffResponse python = 2;
2018-07-24 01:11:24 +03:00
TypeScriptDiffResponse typescript = 3;
}
2018-08-24 20:11:38 +03:00
DebugInfo error_info = 4;
}
message RubyDiffResponse {
repeated rubydiff.RubyDiff diffs = 1;
}
message PythonDiffResponse {
repeated pythondiff.PythonDiff diffs = 1;
}
2018-07-24 01:11:24 +03:00
message TypeScriptDiffResponse {
repeated typescriptdiff.TypeScriptDiff diffs = 1;
2018-07-24 01:11:24 +03:00
}
message CallGraphRequest {
Project project = 1;
}
message CallGraphResponse {
ControlFlowGraph graph = 1;
DebugInfo error_info = 2;
}
message ImportGraphRequest {
Project project = 1;
}
message ImportGraphResponse {
ControlFlowGraph graph = 1;
DebugInfo error_info = 2;
}
message DiffSummary {
string term = 1;
string name = 2;
Span span = 3;
string change = 4;
}
message ParseError {
string error = 1;
Span span = 2;
string language = 3;
}
message HealthCheckRequest {
string service = 1;
}
message HealthCheckResponse {
enum ServingStatus {
UNKNOWN = 0;
SERVING = 1;
NOT_SERVING = 2;
}
ServingStatus status = 1;
}