Unverified Commit f30c68b7 authored by Hao Nguyen's avatar Hao Nguyen Committed by GitHub

Merge pull request #6231 from ST-DDT/fix-javadoc-warnings

Fix javadoc warnings in generated files
parents de5a1fab 351a7cdf
...@@ -197,6 +197,9 @@ cmake/cmake-build-debug/ ...@@ -197,6 +197,9 @@ cmake/cmake-build-debug/
# Visual Studio 2017 # Visual Studio 2017
.vs .vs
# Visual Studio Code
/.vscode/
# IntelliJ # IntelliJ
.idea .idea
*.iml *.iml
...@@ -173,13 +173,10 @@ void WriteMessageDocComment(io::Printer* printer, const Descriptor* message) { ...@@ -173,13 +173,10 @@ void WriteMessageDocComment(io::Printer* printer, const Descriptor* message) {
} }
void WriteFieldDocComment(io::Printer* printer, const FieldDescriptor* field) { void WriteFieldDocComment(io::Printer* printer, const FieldDescriptor* field) {
// In theory we should have slightly different comments for setters, getters,
// etc., but in practice everyone already knows the difference between these
// so it's redundant information.
// We start the comment with the main body based on the comments from the // We start the comment with the main body based on the comments from the
// .proto file (if present). We then end with the field declaration, e.g.: // .proto file (if present). We then continue with the field declaration, e.g.:
// optional string foo = 5; // optional string foo = 5;
// And then we end with the javadoc tags if applicable.
// If the field is a group, the debug string might end with {. // If the field is a group, the debug string might end with {.
printer->Print("/**\n"); printer->Print("/**\n");
WriteDocCommentBody(printer, field); WriteDocCommentBody(printer, field);
...@@ -188,6 +185,178 @@ void WriteFieldDocComment(io::Printer* printer, const FieldDescriptor* field) { ...@@ -188,6 +185,178 @@ void WriteFieldDocComment(io::Printer* printer, const FieldDescriptor* field) {
printer->Print(" */\n"); printer->Print(" */\n");
} }
void WriteFieldAccessorDocComment(io::Printer* printer,
const FieldDescriptor* field,
const FieldAccessorType type,
const bool builder) {
printer->Print("/**\n");
WriteDocCommentBody(printer, field);
printer->Print(" * <code>$def$</code>\n", "def",
EscapeJavadoc(FirstLineOf(field->DebugString())));
switch (type) {
case HAZZER:
printer->Print(" * @return Whether the $name$ field is set.\n", "name",
field->camelcase_name());
break;
case GETTER:
printer->Print(" * @return The $name$.\n", "name",
field->camelcase_name());
break;
case SETTER:
printer->Print(" * @param value The $name$ to set.\n", "name",
field->camelcase_name());
break;
case CLEARER:
// Print nothing
break;
// Repeated
case LIST_COUNT:
printer->Print(" * @return The number of $name$(s).\n", "name",
field->camelcase_name());
break;
case LIST_GETTER:
printer->Print(" * @return A list containing the $name$(s).\n", "name",
field->camelcase_name());
break;
case LIST_INDEXED_GETTER:
printer->Print(" * @param index The index of the element to return.\n");
printer->Print(" * @return The $name$(s) at the given index.\n", "name",
field->camelcase_name());
break;
case LIST_INDEXED_SETTER:
printer->Print(" * @param index The index to set the value at.\n");
printer->Print(" * @param value The $name$ to set.\n", "name",
field->camelcase_name());
break;
case LIST_ADDER:
printer->Print(" * @param value The $name$ to add.\n", "name",
field->camelcase_name());
break;
case LIST_MULTI_ADDER:
printer->Print(" * @param values The $name$(s) to add.\n", "name",
field->camelcase_name());
break;
}
if (builder) {
printer->Print(" * @return This builder for chaining.\n");
}
printer->Print(" */\n");
}
void WriteFieldEnumValueAccessorDocComment(io::Printer* printer,
const FieldDescriptor* field,
const FieldAccessorType type,
const bool builder) {
printer->Print("/**\n");
WriteDocCommentBody(printer, field);
printer->Print(" * <code>$def$</code>\n", "def",
EscapeJavadoc(FirstLineOf(field->DebugString())));
switch (type) {
case HAZZER:
// Should never happen
break;
case GETTER:
printer->Print(" * @return The enum value for $name$.\n", "name",
field->camelcase_name());
break;
case SETTER:
printer->Print(" * @param value The enum value for $name$ to set.\n",
"name", field->camelcase_name());
break;
case CLEARER:
// Print nothing
break;
// Repeated
case LIST_COUNT:
// Should never happen
break;
case LIST_GETTER:
printer->Print(" * @return A list containing the enum values for "
"$name$(s).\n", "name", field->camelcase_name());
break;
case LIST_INDEXED_GETTER:
printer->Print(" * @param index The index of the value to return.\n");
printer->Print(" * @return The enum value of the $name$ at the given "
"index.\n", "name", field->camelcase_name());
break;
case LIST_INDEXED_SETTER:
printer->Print(" * @param index The index to set the value at.\n");
printer->Print(" * @param value The enum value of the $name$ to set.\n",
"name", field->camelcase_name());
break;
case LIST_ADDER:
printer->Print(" * @param value The enum value of the $name$ to add.\n",
"name", field->camelcase_name());
break;
case LIST_MULTI_ADDER:
printer->Print(" * @param values The enum values of the $name$(s) to "
"add.\n", "name", field->camelcase_name());
break;
}
if (builder) {
printer->Print(" * @return This builder for chaining.\n");
}
printer->Print(" */\n");
}
void WriteFieldStringBytesAccessorDocComment(io::Printer* printer,
const FieldDescriptor* field,
const FieldAccessorType type,
const bool builder) {
printer->Print("/**\n");
WriteDocCommentBody(printer, field);
printer->Print(" * <code>$def$</code>\n", "def",
EscapeJavadoc(FirstLineOf(field->DebugString())));
switch (type) {
case HAZZER:
// Should never happen
break;
case GETTER:
printer->Print(" * @return The bytes for $name$.\n", "name",
field->camelcase_name());
break;
case SETTER:
printer->Print(" * @param value The bytes for $name$ to set.\n",
"name", field->camelcase_name());
break;
case CLEARER:
// Print nothing
break;
// Repeated
case LIST_COUNT:
// Should never happen
break;
case LIST_GETTER:
printer->Print(" * @return A list containing the bytes for $name$(s).\n",
"name", field->camelcase_name());
break;
case LIST_INDEXED_GETTER:
printer->Print(" * @param index The index of the value to return.\n");
printer->Print(" * @return The bytes of the $name$ at the given index.\n",
"name", field->camelcase_name());
break;
case LIST_INDEXED_SETTER:
printer->Print(" * @param index The index to set the value at.\n");
printer->Print(" * @param value The bytes of the $name$ to set.\n",
"name", field->camelcase_name());
break;
case LIST_ADDER:
printer->Print(" * @param value The bytes of the $name$ to add.\n",
"name", field->camelcase_name());
break;
case LIST_MULTI_ADDER:
printer->Print(" * @param values The bytes of the $name$(s) to add.\n",
"name", field->camelcase_name());
break;
}
if (builder) {
printer->Print(" * @return This builder for chaining.\n");
}
printer->Print(" */\n");
}
// Enum
void WriteEnumDocComment(io::Printer* printer, const EnumDescriptor* enum_) { void WriteEnumDocComment(io::Printer* printer, const EnumDescriptor* enum_) {
printer->Print("/**\n"); printer->Print("/**\n");
WriteDocCommentBody(printer, enum_); WriteDocCommentBody(printer, enum_);
......
...@@ -52,8 +52,36 @@ namespace protobuf { ...@@ -52,8 +52,36 @@ namespace protobuf {
namespace compiler { namespace compiler {
namespace java { namespace java {
enum FieldAccessorType {
HAZZER,
GETTER,
SETTER,
CLEARER,
// Repeated
LIST_COUNT,
LIST_GETTER,
LIST_INDEXED_GETTER,
LIST_INDEXED_SETTER,
LIST_ADDER,
LIST_MULTI_ADDER
};
void WriteMessageDocComment(io::Printer* printer, const Descriptor* message); void WriteMessageDocComment(io::Printer* printer, const Descriptor* message);
void WriteFieldDocComment(io::Printer* printer, const FieldDescriptor* field); void WriteFieldDocComment(io::Printer* printer, const FieldDescriptor* field);
void WriteFieldAccessorDocComment(io::Printer* printer,
const FieldDescriptor* field,
const FieldAccessorType type,
const bool builder = false);
void WriteFieldEnumValueAccessorDocComment(io::Printer* printer,
const FieldDescriptor* field,
const FieldAccessorType type,
const bool builder = false);
void WriteFieldStringBytesAccessorDocComment(io::Printer* printer,
const FieldDescriptor* field,
const FieldAccessorType type,
const bool builder = false);
void WriteEnumDocComment(io::Printer* printer, const EnumDescriptor* enum_); void WriteEnumDocComment(io::Printer* printer, const EnumDescriptor* enum_);
void WriteEnumValueDocComment(io::Printer* printer, void WriteEnumValueDocComment(io::Printer* printer,
const EnumValueDescriptor* value); const EnumValueDescriptor* value);
......
...@@ -175,6 +175,8 @@ void EnumGenerator::Generate(io::Printer* printer) { ...@@ -175,6 +175,8 @@ void EnumGenerator::Generate(io::Printer* printer) {
"}\n" "}\n"
"\n" "\n"
"/**\n" "/**\n"
" * @param value The number of the enum to look for.\n"
" * @return The enum associated with the given number.\n"
" * @deprecated Use {@link #forNumber(int)} instead.\n" " * @deprecated Use {@link #forNumber(int)} instead.\n"
" */\n" " */\n"
"@java.lang.Deprecated\n" "@java.lang.Deprecated\n"
......
...@@ -150,6 +150,8 @@ void EnumLiteGenerator::Generate(io::Printer* printer) { ...@@ -150,6 +150,8 @@ void EnumLiteGenerator::Generate(io::Printer* printer) {
"}\n" "}\n"
"\n" "\n"
"/**\n" "/**\n"
" * @param value The number of the enum to look for.\n"
" * @return The enum associated with the given number.\n"
" * @deprecated Use {@link #forNumber(int)} instead.\n" " * @deprecated Use {@link #forNumber(int)} instead.\n"
" */\n" " */\n"
"@java.lang.Deprecated\n" "@java.lang.Deprecated\n"
......
...@@ -439,6 +439,8 @@ void ImmutableMessageGenerator::Generate(io::Printer* printer) { ...@@ -439,6 +439,8 @@ void ImmutableMessageGenerator::Generate(io::Printer* printer) {
printer->Print( printer->Print(
vars, vars,
"/**\n" "/**\n"
" * @param value The number of the enum to look for.\n"
" * @return The enum associated with the given number.\n"
" * @deprecated Use {@link #forNumber(int)} instead.\n" " * @deprecated Use {@link #forNumber(int)} instead.\n"
" */\n" " */\n"
"@java.lang.Deprecated\n" "@java.lang.Deprecated\n"
......
...@@ -144,9 +144,9 @@ void ImmutableMessageFieldGenerator::GenerateInterfaceMembers( ...@@ -144,9 +144,9 @@ void ImmutableMessageFieldGenerator::GenerateInterfaceMembers(
// interface so that builders can choose dynamically to either return a // interface so that builders can choose dynamically to either return a
// message or a nested builder, so that asking for the interface doesn't // message or a nested builder, so that asking for the interface doesn't
// cause a message to ever be built. // cause a message to ever be built.
WriteFieldDocComment(printer, descriptor_); WriteFieldAccessorDocComment(printer, descriptor_, HAZZER);
printer->Print(variables_, "$deprecation$boolean has$capitalized_name$();\n"); printer->Print(variables_, "$deprecation$boolean has$capitalized_name$();\n");
WriteFieldDocComment(printer, descriptor_); WriteFieldAccessorDocComment(printer, descriptor_, GETTER);
printer->Print(variables_, "$deprecation$$type$ get$capitalized_name$();\n"); printer->Print(variables_, "$deprecation$$type$ get$capitalized_name$();\n");
WriteFieldDocComment(printer, descriptor_); WriteFieldDocComment(printer, descriptor_);
...@@ -161,14 +161,14 @@ void ImmutableMessageFieldGenerator::GenerateMembers( ...@@ -161,14 +161,14 @@ void ImmutableMessageFieldGenerator::GenerateMembers(
PrintExtraFieldInfo(variables_, printer); PrintExtraFieldInfo(variables_, printer);
if (SupportFieldPresence(descriptor_->file())) { if (SupportFieldPresence(descriptor_->file())) {
WriteFieldDocComment(printer, descriptor_); WriteFieldAccessorDocComment(printer, descriptor_, HAZZER);
printer->Print( printer->Print(
variables_, variables_,
"$deprecation$public boolean ${$has$capitalized_name$$}$() {\n" "$deprecation$public boolean ${$has$capitalized_name$$}$() {\n"
" return $get_has_field_bit_message$;\n" " return $get_has_field_bit_message$;\n"
"}\n"); "}\n");
printer->Annotate("{", "}", descriptor_); printer->Annotate("{", "}", descriptor_);
WriteFieldDocComment(printer, descriptor_); WriteFieldAccessorDocComment(printer, descriptor_, GETTER);
printer->Print( printer->Print(
variables_, variables_,
"$deprecation$public $type$ ${$get$capitalized_name$$}$() {\n" "$deprecation$public $type$ ${$get$capitalized_name$$}$() {\n"
...@@ -185,14 +185,14 @@ void ImmutableMessageFieldGenerator::GenerateMembers( ...@@ -185,14 +185,14 @@ void ImmutableMessageFieldGenerator::GenerateMembers(
"}\n"); "}\n");
printer->Annotate("{", "}", descriptor_); printer->Annotate("{", "}", descriptor_);
} else { } else {
WriteFieldDocComment(printer, descriptor_); WriteFieldAccessorDocComment(printer, descriptor_, HAZZER);
printer->Print( printer->Print(
variables_, variables_,
"$deprecation$public boolean ${$has$capitalized_name$$}$() {\n" "$deprecation$public boolean ${$has$capitalized_name$$}$() {\n"
" return $name$_ != null;\n" " return $name$_ != null;\n"
"}\n"); "}\n");
printer->Annotate("{", "}", descriptor_); printer->Annotate("{", "}", descriptor_);
WriteFieldDocComment(printer, descriptor_); WriteFieldAccessorDocComment(printer, descriptor_, GETTER);
printer->Print( printer->Print(
variables_, variables_,
"$deprecation$public $type$ ${$get$capitalized_name$$}$() {\n" "$deprecation$public $type$ ${$get$capitalized_name$$}$() {\n"
...@@ -261,7 +261,7 @@ void ImmutableMessageFieldGenerator::GenerateBuilderMembers( ...@@ -261,7 +261,7 @@ void ImmutableMessageFieldGenerator::GenerateBuilderMembers(
// field of type "Field" called "Field". // field of type "Field" called "Field".
// boolean hasField() // boolean hasField()
WriteFieldDocComment(printer, descriptor_); WriteFieldAccessorDocComment(printer, descriptor_, HAZZER);
if (support_field_presence) { if (support_field_presence) {
printer->Print( printer->Print(
variables_, variables_,
...@@ -279,7 +279,7 @@ void ImmutableMessageFieldGenerator::GenerateBuilderMembers( ...@@ -279,7 +279,7 @@ void ImmutableMessageFieldGenerator::GenerateBuilderMembers(
} }
// Field getField() // Field getField()
WriteFieldDocComment(printer, descriptor_); WriteFieldAccessorDocComment(printer, descriptor_, GETTER);
PrintNestedBuilderFunction( PrintNestedBuilderFunction(
printer, "$deprecation$public $type$ ${$get$capitalized_name$$}$()", printer, "$deprecation$public $type$ ${$get$capitalized_name$$}$()",
"return $name$_ == null ? $type$.getDefaultInstance() : $name$_;\n", "return $name$_ == null ? $type$.getDefaultInstance() : $name$_;\n",
...@@ -535,13 +535,13 @@ ImmutableMessageOneofFieldGenerator::~ImmutableMessageOneofFieldGenerator() {} ...@@ -535,13 +535,13 @@ ImmutableMessageOneofFieldGenerator::~ImmutableMessageOneofFieldGenerator() {}
void ImmutableMessageOneofFieldGenerator::GenerateMembers( void ImmutableMessageOneofFieldGenerator::GenerateMembers(
io::Printer* printer) const { io::Printer* printer) const {
PrintExtraFieldInfo(variables_, printer); PrintExtraFieldInfo(variables_, printer);
WriteFieldDocComment(printer, descriptor_); WriteFieldAccessorDocComment(printer, descriptor_, HAZZER);
printer->Print(variables_, printer->Print(variables_,
"$deprecation$public boolean ${$has$capitalized_name$$}$() {\n" "$deprecation$public boolean ${$has$capitalized_name$$}$() {\n"
" return $has_oneof_case_message$;\n" " return $has_oneof_case_message$;\n"
"}\n"); "}\n");
printer->Annotate("{", "}", descriptor_); printer->Annotate("{", "}", descriptor_);
WriteFieldDocComment(printer, descriptor_); WriteFieldAccessorDocComment(printer, descriptor_, GETTER);
printer->Print(variables_, printer->Print(variables_,
"$deprecation$public $type$ ${$get$capitalized_name$$}$() {\n" "$deprecation$public $type$ ${$get$capitalized_name$$}$() {\n"
" if ($has_oneof_case_message$) {\n" " if ($has_oneof_case_message$) {\n"
...@@ -579,7 +579,7 @@ void ImmutableMessageOneofFieldGenerator::GenerateBuilderMembers( ...@@ -579,7 +579,7 @@ void ImmutableMessageOneofFieldGenerator::GenerateBuilderMembers(
// field of type "Field" called "Field". // field of type "Field" called "Field".
// boolean hasField() // boolean hasField()
WriteFieldDocComment(printer, descriptor_); WriteFieldAccessorDocComment(printer, descriptor_, HAZZER);
printer->Print(variables_, printer->Print(variables_,
"$deprecation$public boolean ${$has$capitalized_name$$}$() {\n" "$deprecation$public boolean ${$has$capitalized_name$$}$() {\n"
" return $has_oneof_case_message$;\n" " return $has_oneof_case_message$;\n"
...@@ -587,7 +587,7 @@ void ImmutableMessageOneofFieldGenerator::GenerateBuilderMembers( ...@@ -587,7 +587,7 @@ void ImmutableMessageOneofFieldGenerator::GenerateBuilderMembers(
printer->Annotate("{", "}", descriptor_); printer->Annotate("{", "}", descriptor_);
// Field getField() // Field getField()
WriteFieldDocComment(printer, descriptor_); WriteFieldAccessorDocComment(printer, descriptor_, GETTER);
PrintNestedBuilderFunction( PrintNestedBuilderFunction(
printer, "$deprecation$public $type$ ${$get$capitalized_name$$}$()", printer, "$deprecation$public $type$ ${$get$capitalized_name$$}$()",
......
...@@ -121,9 +121,9 @@ int ImmutableMessageFieldLiteGenerator::GetNumBitsForMessage() const { ...@@ -121,9 +121,9 @@ int ImmutableMessageFieldLiteGenerator::GetNumBitsForMessage() const {
void ImmutableMessageFieldLiteGenerator::GenerateInterfaceMembers( void ImmutableMessageFieldLiteGenerator::GenerateInterfaceMembers(
io::Printer* printer) const { io::Printer* printer) const {
WriteFieldDocComment(printer, descriptor_); WriteFieldAccessorDocComment(printer, descriptor_, HAZZER);
printer->Print(variables_, "$deprecation$boolean has$capitalized_name$();\n"); printer->Print(variables_, "$deprecation$boolean has$capitalized_name$();\n");
WriteFieldDocComment(printer, descriptor_); WriteFieldAccessorDocComment(printer, descriptor_, GETTER);
printer->Print(variables_, "$deprecation$$type$ get$capitalized_name$();\n"); printer->Print(variables_, "$deprecation$$type$ get$capitalized_name$();\n");
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment