TextBlockGoogleStyleFormatting
Since Checkstyle 12.3.0
Description
Checks correct format of
Java Text Blocks
as specified in
Google Java Style Guide.
This Check performs two validations:
-
It ensures that the opening and closing text-block quotes (
""") each appear on their own line, with no other item preceding them. - Opening and closing quotes are vertically aligned.
Examples
To configure the check:
<module name="Checker">
<module name="TreeWalker">
<module name="TextBlockGoogleStyleFormatting"/>
</module>
</module>
Example of correct cases:
public class Example1 {
public String testMethod1() {
final String simpleScript =
"""
contents of Text block
""";
final String simpleScript1 =
"""
contents of Text block
""";
String stringFollowedBy =
"""
Hello there
""" + getName();
getData(
"""
Hello,
This is a multi-line message.
""", 0);
return
"""
this is sample text
""";
}
public void getData(String text, int num) {}
public String getName() {
return null;
}
}
Example: Opening quotes are not on new line:
public class Example2 {
public String testMethod1() {
// violation below 'Opening quotes (""") of text-block must be on the new line'
final String simpleScript1Violate = """
contents of the text block
"""; // violation 'Text-block quotes are not vertically aligned'
final String simpleScript1Correct =
"""
contents of the text block
""";
final String simpleScript2Violate = simpleScript1Violate +
// violation below 'quotes (""") of text-block must be on the new line'
simpleScript1Violate + """
this is simple script
"""; // violation 'Text-block quotes are not vertically aligned'
final String simpleScript2Correct = simpleScript1Violate +
simpleScript1Violate +
"""
contents of the text block
""";
getData(
// violation below 'quotes (""") of text-block must be on the new line'
1, """
this is a multi-line message
""");
getData(
1,
"""
this is a multi-line message
""");
// violation below 'Opening quotes (""") of text-block must be on the new line'
return """
this is sample text
"""; // violation 'Text-block quotes are not vertically aligned'
}
public void getData(String text, int num) {}
public void getData(int num, String text) {}
}
Example: Closing quotes are not on new line
public class Example3 {
public String testMethod1() {
final String simpleScript1Violate =
"""
this is simple test""";
// 2 violations above:
// 'Closing quotes (""") of text-block must be on the new line.'
// 'Text-block quotes are not vertically aligned'
final String simpleScript1Correct =
"""
this is simple test
""";
String simpleScript2Violate = simpleScript1Correct
+
"""
very good""".charAt(0);
// 2 violations above:
// 'Closing quotes (""") of text-block must be on the new line.'
// 'Text-block quotes are not vertically aligned'
String simpleScript2Correct = simpleScript1Correct
+
"""
very good
""".charAt(0);
getData(
"""
This is a multi-line message.""");
// 2 violations above:
// 'Closing quotes (""") of text-block must be on the new line.'
// 'Text-block quotes are not vertically aligned'
getData(
"""
This is a multi-line message.
""");
return
"""
THE MULTI-LINE MESSAGE""";
// 2 violations above:
// 'Closing quotes (""") of text-block must be on the new line.'
// 'Text-block quotes are not vertically aligned'
}
public void getData(String text, int num) {}
public void getData(String text) {}
}
Example: Opening and closing quotes are on new lines but not vertically aligned
public class Example4 {
public String testMethod1() {
final String simpleScriptViolate =
"""
s
"""; // violation 'text-block quotes are not vertically aligned'
final String simpleScriptCorrect =
"""
s
""";
getData(
1,
"""
this is a multi-line message
"""); // violation 'Text-block quotes are not vertically aligned'
getData(
1,
"""
this is a multi-line message
""");
return
"""
this is sample text
"""; // violation 'text-block quotes are not vertically aligned'
}
public void getData(int num, String text) {}
}
Example of Usage
Violation Messages
All messages can be customized if the default message doesn't suit you. Please see the documentation to learn how to.
Package
com.puppycrawl.tools.checkstyle.checks.coding






