/* * Copyright (C) 2024 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ syntax = "proto3"; package cc_analyzer; option go_package = "ide_query/cc_analyzer_proto"; // Indicates the success/failure for analysis. message Status { enum Code { OK = 0; FAILURE = 1; } Code code = 1; // Details about the status, might be displayed to user. optional string message = 2; } // Represents an Android checkout on user's workstation. message RepoState { // Absolute path for the checkout in the workstation. // e.g. /home/user/work/android/ string repo_dir = 1; // Relative to repo_dir. repeated string active_file_path = 2; // Repository relative path to output directory in workstation. string out_dir = 3; // Repository relative path to compile_commands.json in workstation. string comp_db_path = 4; } // Provides all the targets that are pre-requisities for running language // services on active_file_paths. message DepsResponse { // Build dependencies of a source file for providing language services. message Deps { // Relative to repo_dir. string source_file = 1; // Build target to execute for generating dep. repeated string build_target = 2; optional Status status = 3; } repeated Deps deps = 1; optional Status status = 2; } // Returns all the information necessary for providing language services for the // active files. message GeneratedFile { // Path to the file relative to repository root. string path = 1; // The text of the generated file, if not provided contents will be read // from the path above in user's workstation. optional bytes contents = 2; } message SourceFile { // Path to the source file relative to repository root. string path = 1; // Working directory used by the build system. All the relative // paths in compiler_arguments should be relative to this path. // Relative to repository root. string working_dir = 2; // Compiler arguments to compile the source file. If multiple variants // of the module being compiled are possible, the query script will choose // one. repeated string compiler_arguments = 3; // Any generated files that are used in compiling the file. repeated GeneratedFile generated = 4; // Paths to all of the sources, like build files, code generators, // proto files etc. that were used during analysis. Used to figure // out when a set of build artifacts are stale and the query tool // must be re-run. // Relative to repository root. repeated string deps = 5; // Represents analysis status for this particular file. e.g. not part // of the build graph. optional Status status = 6; } message IdeAnalysis { repeated SourceFile sources = 2; // Status representing overall analysis. // Should fail only when no analysis can be performed. optional Status status = 3; reserved 1; }