Files
codeql/java/ql/test/query-tests/NonExplicitControlAndWhitespaceCharsInLiterals/CharTest.java

185 lines
9.1 KiB
Java
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import java.util.List;
import java.util.ArrayList;
public class CharTest {
public static void main(String[] args) {
CharTest charTest = new CharTest();
NonCompliantStringLiterals nonCompliant = charTest.new NonCompliantStringLiterals();
CompliantStringLiterals compliant = charTest.new CompliantStringLiterals();
CompliantCharLiterals compliantChar = charTest.new CompliantCharLiterals();
List<String> nonCompliantStrings = nonCompliant.getNonCompliantStrings();
List<String> compliantStrings = compliant.getCompliantStrings();
List<Character> compliantChars = compliantChar.getCompliantChars();
System.out.println("");
System.out.println("Non-compliant strings:");
for (String s : nonCompliantStrings) {
System.out.println(s);
System.out.println("");
}
System.out.println("");
System.out.println("Compliant strings:");
for (String s : compliantStrings) {
System.out.println(s);
System.out.println("");
}
System.out.println("");
System.out.println("");
System.out.println("Compliant character literals:");
System.out.println("");
for (Character c : compliantChars) {
System.out.println("\\u" + String.format("%04X", (int) c));
}
System.out.println("");
}
class CompliantCharLiterals {
private List<Character> compliantChars;
public CompliantCharLiterals() {
compliantChars = new ArrayList<>();
compliantChars.add('A'); // COMPLIANT
compliantChars.add('a'); // COMPLIANT
compliantChars.add('\b'); // COMPLIANT
compliantChars.add('\t'); // COMPLIANT
compliantChars.add('\n'); // COMPLIANT
compliantChars.add('\f'); // COMPLIANT
compliantChars.add('\r'); // COMPLIANT
compliantChars.add('\u0000'); // COMPLIANT
compliantChars.add('\u0007'); // COMPLIANT
compliantChars.add('\u001B'); // COMPLIANT
compliantChars.add(' '); // COMPLIANT
compliantChars.add('\u0020'); // COMPLIANT
compliantChars.add('\u200B'); // COMPLIANT
compliantChars.add('\u200C'); // COMPLIANT
compliantChars.add('\u200D'); // COMPLIANT
compliantChars.add('\u2028'); // COMPLIANT
compliantChars.add('\u2029'); // COMPLIANT
compliantChars.add('\u2060'); // COMPLIANT
compliantChars.add('\uFEFF'); // COMPLIANT
}
public List<Character> getCompliantChars() {
return compliantChars;
}
}
class CompliantStringLiterals {
private List<String> compliantStrings;
public CompliantStringLiterals() {
compliantStrings = new ArrayList<>();
compliantStrings.add(""); // COMPLIANT
compliantStrings.add("X__Y"); // COMPLIANT
compliantStrings.add("X_ _Y"); // COMPLIANT
compliantStrings.add("X_\u0020_Y"); // COMPLIANT
compliantStrings.add("X_ _Y"); // COMPLIANT
compliantStrings.add("X_\u0020\u0020_Y"); // COMPLIANT
compliantStrings.add("X_ _Y"); // COMPLIANT
compliantStrings.add("X_ _Y"); // COMPLIANT
compliantStrings.add("X_ _Y"); // COMPLIANT
compliantStrings.add("X_ _Y"); // COMPLIANT
compliantStrings.add("X_\b_Y"); // COMPLIANT
compliantStrings.add("X_\u0000_Y"); // COMPLIANT
compliantStrings.add("X_\u0001_Y"); // COMPLIANT
compliantStrings.add("X_\u0002_Y"); // COMPLIANT
compliantStrings.add("X_\u0003_Y"); // COMPLIANT
compliantStrings.add("X_\u0004_Y"); // COMPLIANT
compliantStrings.add("X_\u0005_Y"); // COMPLIANT
compliantStrings.add("X_\u0006_Y"); // COMPLIANT
compliantStrings.add("X_\u0007_Y"); // COMPLIANT
compliantStrings.add("X_\u0008_Y"); // COMPLIANT
compliantStrings.add("X_\u0009_Y"); // COMPLIANT
compliantStrings.add("X_\u0010_Y"); // COMPLIANT
compliantStrings.add("X_\u0011_Y"); // COMPLIANT
compliantStrings.add("X_\u0012_Y"); // COMPLIANT
compliantStrings.add("X_\u0013_Y"); // COMPLIANT
compliantStrings.add("X_\u0014_Y"); // COMPLIANT
compliantStrings.add("X_\u0015_Y"); // COMPLIANT
compliantStrings.add("X_\u0016_Y"); // COMPLIANT
compliantStrings.add("X_\u0017_Y"); // COMPLIANT
compliantStrings.add("X_\u0018_Y"); // COMPLIANT
compliantStrings.add("X_\u0019_Y"); // COMPLIANT
compliantStrings.add("X_\u001A_Y"); // COMPLIANT
compliantStrings.add("X_\u001B_Y"); // COMPLIANT
compliantStrings.add("X_\u001C_Y"); // COMPLIANT
compliantStrings.add("X_\u001D_Y"); // COMPLIANT
compliantStrings.add("X_\u001E_Y"); // COMPLIANT
compliantStrings.add("X_\u001F_Y"); // COMPLIANT
compliantStrings.add("X_\u007F_Y"); // COMPLIANT
compliantStrings.add("X_\u200B_Y"); // COMPLIANT
compliantStrings.add("X_\u200C_Y"); // COMPLIANT
compliantStrings.add("X_\u200D_Y"); // COMPLIANT
compliantStrings.add("X_\u2028_Y"); // COMPLIANT
compliantStrings.add("X_\u2029_Y"); // COMPLIANT
compliantStrings.add("X_\u2060_Y"); // COMPLIANT
compliantStrings.add("X_\uFEFF_Y"); // COMPLIANT
compliantStrings.add("X_\uFEFF_Y_\u0020_Z"); // COMPLIANT
compliantStrings.add("X_\uFEFF_Y_\uFEFF_Z"); // COMPLIANT
compliantStrings.add("X_\u0020_Y_\uFEFF_Z"); // COMPLIANT
compliantStrings.add("X_\t_Y"); // COMPLIANT
compliantStrings.add("X_\t\t_Y"); // COMPLIANT
compliantStrings.add("X_\\b_Y"); // COMPLIANT
compliantStrings.add("X_\f_Y"); // COMPLIANT
compliantStrings.add("X_\\f_Y"); // COMPLIANT
compliantStrings.add("X_\n_Y"); // COMPLIANT
compliantStrings.add("X_\n\t_Y"); // COMPLIANT
compliantStrings.add("X_\\n_Y"); // COMPLIANT
compliantStrings.add("X_\r_Y"); // COMPLIANT
compliantStrings.add("X_\\r_Y"); // COMPLIANT
compliantStrings.add("X_\t_Y"); // COMPLIANT
compliantStrings.add("X_\\t_Y"); // COMPLIANT
compliantStrings.add("X_\\u0000_Y"); // COMPLIANT
compliantStrings.add("X_\\u0007_Y"); // COMPLIANT
compliantStrings.add("X_\\u001B_Y"); // COMPLIANT
compliantStrings.add("X_\\u200B_Y"); // COMPLIANT
compliantStrings.add("X_\\u200C_Y"); // COMPLIANT
compliantStrings.add("X_\\u200D_Y"); // COMPLIANT
compliantStrings.add("X_\\u2028_Y"); // COMPLIANT
compliantStrings.add("X_\\u2029_Y"); // COMPLIANT
compliantStrings.add("X_\\u2060_Y"); // COMPLIANT
compliantStrings.add("X_\\uFEFF_Y"); // COMPLIANT
compliantStrings.add("lorem ipsum dolor "+"sit amet"); // COMPLIANT
compliantStrings.add("lorem ipsum dolor " + "sit amet"); // COMPLIANT
compliantStrings.add("lorem ipsum dolor sit amet, consectetur adipiscing elit, " + // COMPLIANT
"sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.");
compliantStrings.add("lorem ipsum dolor sit amet, consectetur adipiscing elit, " + // COMPLIANT
"sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad "
+ "minim veniam, quis nostrud exercitation ullamco "+"laboris nisi ut aliquip ex " +
"ea commodo consequat.");
compliantStrings.add("""
lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
"""); // COMPLIANT
}
public List<String> getCompliantStrings() {
return compliantStrings;
}
}
class NonCompliantStringLiterals {
private List<String> nonCompliantStrings;
public NonCompliantStringLiterals() {
nonCompliantStrings = new ArrayList<>();
nonCompliantStrings.add("X__Y"); // NON_COMPLIANT
nonCompliantStrings.add("X__Y__Z"); // NON_COMPLIANT
nonCompliantStrings.add("loremipsum dolor sit amet,consectetur adipiscing elit, " + // NON_COMPLIANT
"sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.");
nonCompliantStrings.add("""
loremipsum dolor sit amet,consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
"""); // NON_COMPLIANT
}
public List<String> getNonCompliantStrings() {
return nonCompliantStrings;
}
}
}