Files
build/tools/ide_query/ide_query_proto/ide_query.proto
Michael Merg 86cca7484c Update ide_query script to new format
This includes using a separate (but backward compatible) proto for the cc_analyzer since some of the fields/messages were removed in the new ide_query format.

Tested the ide_query.go with the old and the new cc_analyzer to ensure backward compatibility.

Change-Id: If149f5f9dd88a8f50c184274e8b258dfce117498
2024-06-12 13:07:35 +00:00

127 lines
4.3 KiB
Protocol Buffer

/*
* 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 ide_query;
option go_package = "ide_query/ide_query_proto";
message GeneratedFile {
// Path to the file relative to build_out_dir.
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 IdeAnalysis {
// Directory that contains build outputs generated by the build system.
// Relative to repository root.
string build_out_dir = 1;
// Working directory used by the build system.
// Relative to repository root.
string working_dir = 4;
// Only set if the whole query failed.
optional AnalysisError error = 5;
// List of results, one per queried file.
repeated AnalysisResult results = 6;
// List of buildable units directly or indirectly references by the results.
repeated BuildableUnit units = 7;
reserved 2, 3;
}
message AnalysisError {
// Human readable error message.
string error_message = 1;
}
message AnalysisResult {
// Path to the source file that was queried, relative to repository root.
string source_file_path = 1;
// Indicates the success/failure for the query.
message Status {
enum Code {
CODE_UNSPECIFIED = 0;
CODE_OK = 1;
CODE_NOT_FOUND = 2; // no target or module found for the source file.
CODE_BUILD_FAILED = 3;
}
Code code = 1;
// Details about the status, might be displayed to user.
optional string status_message = 2;
}
// Represents status for this result. e.g. not part of the build graph.
Status status = 2;
// ID of buildable unit that contains the source file.
// The ide_query script can choose the most relevant unit from multiple
// options.
string unit_id = 3;
// Invalidation rule to check if the result is still valid.
Invalidation invalidation = 4;
}
enum Language {
LANGUAGE_UNSPECIFIED = 0;
LANGUAGE_JAVA = 1; // also includes Kotlin
LANGUAGE_CPP = 2;
}
message BuildableUnit {
// Unique identifier of the buildable unit.
//
// Examples:
// - Java: module or target name, e.g. "framework-bluetooth" or
// "//third_party/hamcrest:hamcrest_java"
// - C++: source file, e.g. "path/to/file.cc"
string id = 1;
// Language of the unit.
// Required for buildable units directly referenced by the AnalysisResult,
// e.g. the unit associated with the compilation stage for the source file.
Language language = 2;
// Source files that are part of this unit.
// Path to the file relative to working_dir.
repeated string source_file_paths = 3;
// Compiler arguments to compile the source files.
repeated string compiler_arguments = 4;
// List of generated files produced by this unit.
repeated GeneratedFile generated_files = 5;
// List of other BuildableUnits this unit depend on.
repeated string dependency_ids = 6;
}
// Invalidation rule to check if the result is still valid.
// This should contain files/dirs that are not directly part of the build graph
// but still affect the result. For example BUILD files, directory to the
// toolchain or config files etc.
message Invalidation {
// If any of these files change the result may become invalid.
// Path to the file relative to repository root.
repeated string file_paths = 1;
message Wildcard {
// Prefix of the file path (e.g. "path/to/")
optional string prefix = 1;
// Suffix of the file path (e.g. "Android.bp")
optional string suffix = 2;
// If false, the part of the path between the given `prefix` and `suffix`
// should not contain directory separators ('/').
optional bool can_cross_folder = 3;
}
// If any of these rules match a changed file the result may become invalid.
repeated Wildcard wildcards = 4;
}