diff --git a/cxx-checks/src/main/java/org/sonar/cxx/checks/api/UndocumentedApiCheck.java b/cxx-checks/src/main/java/org/sonar/cxx/checks/api/UndocumentedApiCheck.java index db85aec28b..f910db771e 100644 --- a/cxx-checks/src/main/java/org/sonar/cxx/checks/api/UndocumentedApiCheck.java +++ b/cxx-checks/src/main/java/org/sonar/cxx/checks/api/UndocumentedApiCheck.java @@ -24,8 +24,8 @@ import com.sonar.cxx.sslr.api.Token; import java.util.Arrays; import java.util.List; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.check.Priority; import org.sonar.check.Rule; import org.sonar.cxx.tag.Tag; @@ -71,7 +71,7 @@ @SqaleConstantRemediation("5min") public class UndocumentedApiCheck extends AbstractCxxPublicApiVisitor { - private static final Logger LOG = Loggers.get(UndocumentedApiCheck.class); + private static final Logger LOG = LoggerFactory.getLogger(UndocumentedApiCheck.class); private static final String[] DEFAULT_NAME_SUFFIX = new String[]{".h", ".hh", ".hpp", ".H"}; diff --git a/cxx-checks/src/test/java/org/sonar/cxx/checks/CxxFileTesterHelper.java b/cxx-checks/src/test/java/org/sonar/cxx/checks/CxxFileTesterHelper.java index f1750780f4..5ce1caaf3e 100644 --- a/cxx-checks/src/test/java/org/sonar/cxx/checks/CxxFileTesterHelper.java +++ b/cxx-checks/src/test/java/org/sonar/cxx/checks/CxxFileTesterHelper.java @@ -64,12 +64,17 @@ private static DefaultInputFile createInputFile(String fileName, String basePath } private static String getSourceCode(File filename, Charset defaultCharset) throws IOException { - try (var bomInputStream = new BOMInputStream(new FileInputStream(filename), - ByteOrderMark.UTF_8, - ByteOrderMark.UTF_16LE, - ByteOrderMark.UTF_16BE, - ByteOrderMark.UTF_32LE, - ByteOrderMark.UTF_32BE)) { + try (var bomInputStream = BOMInputStream.builder() + .setInputStream(new FileInputStream(filename)) + .setInclude(false) + .setByteOrderMarks( + ByteOrderMark.UTF_8, + ByteOrderMark.UTF_16LE, + ByteOrderMark.UTF_16BE, + ByteOrderMark.UTF_32LE, + ByteOrderMark.UTF_32BE + ) + .get()) { ByteOrderMark bom = bomInputStream.getBOM(); Charset charset = bom != null ? Charset.forName(bom.getCharsetName()) : defaultCharset; byte[] bytes = bomInputStream.readAllBytes(); diff --git a/cxx-checks/src/test/java/org/sonar/cxx/checks/regex/FileHeaderCheckTest.java b/cxx-checks/src/test/java/org/sonar/cxx/checks/regex/FileHeaderCheckTest.java index d9f3183823..9ba804a576 100644 --- a/cxx-checks/src/test/java/org/sonar/cxx/checks/regex/FileHeaderCheckTest.java +++ b/cxx-checks/src/test/java/org/sonar/cxx/checks/regex/FileHeaderCheckTest.java @@ -163,8 +163,8 @@ void regex() throws UnsupportedEncodingException, IOException { check = new FileHeaderCheck(); check.headerFormat = "//\\s*\\s*" - + "//\\s*Copyright \\(c\\) (AAA BBB|CCC DDD) GmbH. All rights reserved.\\s*" - + "//\\s*\\s*"; + + "//\\s*Copyright \\(c\\) (AAA BBB|CCC DDD) GmbH. All rights reserved.\\s*" + + "//\\s*\\s*"; check.isRegularExpression = true; tester = CxxFileTesterHelper.create("src/test/resources/checks/FileHeaderCheck/Regex7.cc", "."); @@ -179,7 +179,7 @@ void should_fail_with_bad_regular_expression() { check.headerFormat = "["; check.isRegularExpression = true; - IllegalStateException thrown = catchThrowableOfType(check::init, IllegalStateException.class); + IllegalStateException thrown = catchThrowableOfType(IllegalStateException.class, check::init); assertThat(thrown).hasMessage("Unable to compile the regular expression: \"^[\""); } diff --git a/cxx-sensors/src/main/java/org/sonar/cxx/postjobs/FinalReport.java b/cxx-sensors/src/main/java/org/sonar/cxx/postjobs/FinalReport.java index d1073f7104..950e41e803 100644 --- a/cxx-sensors/src/main/java/org/sonar/cxx/postjobs/FinalReport.java +++ b/cxx-sensors/src/main/java/org/sonar/cxx/postjobs/FinalReport.java @@ -22,8 +22,8 @@ import org.sonar.api.batch.postjob.PostJob; import org.sonar.api.batch.postjob.PostJobContext; import org.sonar.api.batch.postjob.PostJobDescriptor; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.cxx.preprocessor.CxxPreprocessor; import org.sonar.cxx.visitors.CxxParseErrorLoggerVisitor; @@ -31,7 +31,7 @@ public class FinalReport implements PostJob { private static final String DEBUG_INFO_MSG = "Turn debug info on to get more details (sonar-scanner -X -Dsonar.verbose=true ...)."; - private static final Logger LOG = Loggers.get(FinalReport.class); + private static final Logger LOG = LoggerFactory.getLogger(FinalReport.class); @Override public void describe(PostJobDescriptor descriptor) { diff --git a/cxx-sensors/src/main/java/org/sonar/cxx/prejobs/XlstSensor.java b/cxx-sensors/src/main/java/org/sonar/cxx/prejobs/XlstSensor.java index 5eae1ece6c..5664552f37 100644 --- a/cxx-sensors/src/main/java/org/sonar/cxx/prejobs/XlstSensor.java +++ b/cxx-sensors/src/main/java/org/sonar/cxx/prejobs/XlstSensor.java @@ -33,8 +33,8 @@ import org.sonar.api.batch.sensor.SensorContext; import org.sonar.api.batch.sensor.SensorDescriptor; import org.sonar.api.scanner.sensor.ProjectSensor; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.cxx.sensors.utils.CxxUtils; @Phase(name = Phase.Name.PRE) @@ -46,7 +46,7 @@ public class XlstSensor implements ProjectSensor { public static final String OUTPUT_KEY = ".outputs"; private static final String MISSING_VALUE = "XLST: '{}' value is not defined."; - private static final Logger LOG = Loggers.get(XlstSensor.class); + private static final Logger LOG = LoggerFactory.getLogger(XlstSensor.class); private static final int MAX_STYLESHEETS = 10; private SensorContext context; diff --git a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/clangsa/CxxClangSASensor.java b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/clangsa/CxxClangSASensor.java index 96366d4dd3..ba4733adec 100644 --- a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/clangsa/CxxClangSASensor.java +++ b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/clangsa/CxxClangSASensor.java @@ -33,8 +33,8 @@ import org.sonar.api.batch.sensor.SensorDescriptor; import org.sonar.api.config.PropertyDefinition; import org.sonar.api.resources.Qualifiers; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.cxx.sensors.utils.CxxIssuesReportSensor; import org.sonar.cxx.sensors.utils.InvalidReportException; import org.sonar.cxx.utils.CxxReportIssue; @@ -47,7 +47,7 @@ public class CxxClangSASensor extends CxxIssuesReportSensor { public static final String REPORT_PATH_KEY = "sonar.cxx.clangsa.reportPaths"; - private static final Logger LOG = Loggers.get(CxxClangSASensor.class); + private static final Logger LOG = LoggerFactory.getLogger(CxxClangSASensor.class); public static List properties() { return Collections.unmodifiableList(Arrays.asList( diff --git a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/clangtidy/ClangTidyParser.java b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/clangtidy/ClangTidyParser.java index 06fe87f7bf..3e188b8a82 100644 --- a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/clangtidy/ClangTidyParser.java +++ b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/clangtidy/ClangTidyParser.java @@ -24,14 +24,14 @@ import java.util.LinkedList; import java.util.Map; import java.util.regex.Pattern; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.cxx.sensors.utils.TextScanner; import org.sonar.cxx.utils.CxxReportIssue; public class ClangTidyParser { - private static final Logger LOG = Loggers.get(ClangTidyParser.class); + private static final Logger LOG = LoggerFactory.getLogger(ClangTidyParser.class); private static final String REGEX = "((?>[a-zA-Z]:[\\\\/])??[^:]++):(\\d{1,5}):(\\d{1,5}): ([^:]++): (.+)"; private static final Pattern PATTERN = Pattern.compile(REGEX); diff --git a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/compiler/CxxCompilerSensor.java b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/compiler/CxxCompilerSensor.java index 35ba42d693..c602d1df83 100644 --- a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/compiler/CxxCompilerSensor.java +++ b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/compiler/CxxCompilerSensor.java @@ -26,8 +26,8 @@ import java.util.regex.Pattern; import javax.annotation.CheckForNull; import javax.annotation.Nullable; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.cxx.sensors.utils.CxxIssuesReportSensor; import org.sonar.cxx.sensors.utils.InvalidReportException; import org.sonar.cxx.sensors.utils.TextScanner; @@ -38,7 +38,7 @@ */ public abstract class CxxCompilerSensor extends CxxIssuesReportSensor { - private static final Logger LOG = Loggers.get(CxxCompilerSensor.class); + private static final Logger LOG = LoggerFactory.getLogger(CxxCompilerSensor.class); private final Set notExistingGroupName = new HashSet<>(); @Override diff --git a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/coverage/CoverageSensor.java b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/coverage/CoverageSensor.java index 6dd616e17a..00404a5255 100644 --- a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/coverage/CoverageSensor.java +++ b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/coverage/CoverageSensor.java @@ -25,8 +25,8 @@ import java.util.Map; import org.sonar.api.batch.sensor.coverage.NewCoverage; import org.sonar.api.utils.PathUtils; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.cxx.sensors.utils.CxxReportSensor; import org.sonar.cxx.sensors.utils.CxxUtils; import org.sonar.cxx.sensors.utils.EmptyReportException; @@ -37,7 +37,7 @@ */ public abstract class CoverageSensor extends CxxReportSensor { - private static final Logger LOG = Loggers.get(CoverageSensor.class); + private static final Logger LOG = LoggerFactory.getLogger(CoverageSensor.class); private final CoverageParser parser; private final String reportPathsKey; diff --git a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/coverage/bullseye/BullseyeParser.java b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/coverage/bullseye/BullseyeParser.java index 936ce39146..bb7d7fc465 100644 --- a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/coverage/bullseye/BullseyeParser.java +++ b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/coverage/bullseye/BullseyeParser.java @@ -30,8 +30,8 @@ import org.codehaus.staxmate.in.SMHierarchicCursor; import org.codehaus.staxmate.in.SMInputCursor; import org.sonar.api.utils.PathUtils; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.cxx.sensors.coverage.CoverageMeasures; import org.sonar.cxx.sensors.coverage.CoverageParser; import org.sonar.cxx.sensors.utils.EmptyReportException; @@ -43,7 +43,7 @@ */ public class BullseyeParser implements CoverageParser { - private static final Logger LOG = Loggers.get(BullseyeParser.class); + private static final Logger LOG = LoggerFactory.getLogger(BullseyeParser.class); private String prevLine; private int totalconditions; diff --git a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/coverage/cobertura/CoberturaParser.java b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/coverage/cobertura/CoberturaParser.java index 77c9c920b9..9a301ed557 100644 --- a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/coverage/cobertura/CoberturaParser.java +++ b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/coverage/cobertura/CoberturaParser.java @@ -27,8 +27,8 @@ import javax.xml.stream.XMLStreamException; import org.codehaus.staxmate.in.SMHierarchicCursor; import org.codehaus.staxmate.in.SMInputCursor; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.cxx.sensors.coverage.CoverageMeasures; import org.sonar.cxx.sensors.coverage.CoverageParser; import org.sonar.cxx.sensors.utils.EmptyReportException; @@ -40,7 +40,7 @@ */ public class CoberturaParser implements CoverageParser { - private static final Logger LOG = Loggers.get(CoberturaParser.class); + private static final Logger LOG = LoggerFactory.getLogger(CoberturaParser.class); private static final Pattern CONDITION_PATTERN = Pattern.compile("\\((.*?)\\)"); private Path baseDir = Path.of("."); diff --git a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/coverage/ctc/TestwellCtcTxtParser.java b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/coverage/ctc/TestwellCtcTxtParser.java index a505b6a484..b4418b45df 100644 --- a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/coverage/ctc/TestwellCtcTxtParser.java +++ b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/coverage/ctc/TestwellCtcTxtParser.java @@ -31,8 +31,8 @@ import java.util.NoSuchElementException; import java.util.regex.Matcher; import org.apache.commons.io.FilenameUtils; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.cxx.sensors.coverage.CoverageMeasures; import org.sonar.cxx.sensors.coverage.CoverageParser; import static org.sonar.cxx.sensors.coverage.ctc.TestwellCtcTxtResult.FILE_HEADER; @@ -47,7 +47,7 @@ */ public class TestwellCtcTxtParser implements CoverageParser { - private static final Logger LOG = Loggers.get(TestwellCtcTxtParser.class); + private static final Logger LOG = LoggerFactory.getLogger(TestwellCtcTxtParser.class); private static final int FROM_START = 0; private static final int CONDS_FALSE = 1; diff --git a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/coverage/vs/VisualStudioParser.java b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/coverage/vs/VisualStudioParser.java index e5dccd97dc..a264570e72 100644 --- a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/coverage/vs/VisualStudioParser.java +++ b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/coverage/vs/VisualStudioParser.java @@ -25,8 +25,8 @@ import javax.xml.stream.XMLStreamException; import org.codehaus.staxmate.in.SMHierarchicCursor; import org.codehaus.staxmate.in.SMInputCursor; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.cxx.sensors.coverage.CoverageMeasures; import org.sonar.cxx.sensors.coverage.CoverageParser; import org.sonar.cxx.sensors.utils.EmptyReportException; @@ -38,7 +38,7 @@ */ public class VisualStudioParser implements CoverageParser { - private static final Logger LOG = Loggers.get(VisualStudioParser.class); + private static final Logger LOG = LoggerFactory.getLogger(VisualStudioParser.class); private static void collectModuleMeasures(SMInputCursor module, Map coverageData) throws XMLStreamException { diff --git a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/cppcheck/CppcheckParser.java b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/cppcheck/CppcheckParser.java index 17f2d666b9..dc51d6dc0e 100644 --- a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/cppcheck/CppcheckParser.java +++ b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/cppcheck/CppcheckParser.java @@ -25,15 +25,15 @@ import javax.xml.stream.XMLStreamException; import org.codehaus.staxmate.in.SMHierarchicCursor; import org.codehaus.staxmate.in.SMInputCursor; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.cxx.sensors.utils.EmptyReportException; import org.sonar.cxx.sensors.utils.StaxParser; import org.sonar.cxx.utils.CxxReportIssue; public class CppcheckParser { - private static final Logger LOG = Loggers.get(CppcheckParser.class); + private static final Logger LOG = LoggerFactory.getLogger(CppcheckParser.class); private final CxxCppCheckSensor sensor; diff --git a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/cppcheck/CxxCppCheckSensor.java b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/cppcheck/CxxCppCheckSensor.java index cd43ede60f..325ff59c9f 100644 --- a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/cppcheck/CxxCppCheckSensor.java +++ b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/cppcheck/CxxCppCheckSensor.java @@ -27,8 +27,8 @@ import org.sonar.api.batch.sensor.SensorDescriptor; import org.sonar.api.config.PropertyDefinition; import org.sonar.api.resources.Qualifiers; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.cxx.sensors.utils.CxxIssuesReportSensor; import org.sonar.cxx.sensors.utils.InvalidReportException; @@ -41,7 +41,7 @@ public class CxxCppCheckSensor extends CxxIssuesReportSensor { public static final String REPORT_PATH_KEY = "sonar.cxx.cppcheck.reportPaths"; - private static final Logger LOG = Loggers.get(CxxCppCheckSensor.class); + private static final Logger LOG = LoggerFactory.getLogger(CxxCppCheckSensor.class); public static List properties() { return Collections.unmodifiableList(Arrays.asList( diff --git a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/drmemory/CxxDrMemorySensor.java b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/drmemory/CxxDrMemorySensor.java index 817a66f027..e0dc9f8030 100644 --- a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/drmemory/CxxDrMemorySensor.java +++ b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/drmemory/CxxDrMemorySensor.java @@ -28,8 +28,8 @@ import org.sonar.api.batch.sensor.SensorDescriptor; import org.sonar.api.config.PropertyDefinition; import org.sonar.api.resources.Qualifiers; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.cxx.sensors.drmemory.DrMemoryParser.DrMemoryError; import org.sonar.cxx.sensors.drmemory.DrMemoryParser.DrMemoryError.Location; import org.sonar.cxx.sensors.utils.CxxIssuesReportSensor; @@ -48,7 +48,7 @@ public class CxxDrMemorySensor extends CxxIssuesReportSensor { public static final String REPORT_PATH_KEY = "sonar.cxx.drmemory.reportPaths"; public static final String REPORT_ENCODING_DEF = "sonar.cxx.drmemory.encoding"; private static final String DEFAULT_ENCODING_DEF = StandardCharsets.UTF_8.name(); - private static final Logger LOG = Loggers.get(CxxDrMemorySensor.class); + private static final Logger LOG = LoggerFactory.getLogger(CxxDrMemorySensor.class); public static List properties() { var category = "CXX External Analyzers"; diff --git a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/drmemory/DrMemoryParser.java b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/drmemory/DrMemoryParser.java index 7525976cdb..613256a0b1 100644 --- a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/drmemory/DrMemoryParser.java +++ b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/drmemory/DrMemoryParser.java @@ -27,14 +27,14 @@ import java.util.Collections; import java.util.List; import java.util.regex.Pattern; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.cxx.sensors.drmemory.DrMemoryParser.DrMemoryError.Location; import org.sonar.cxx.sensors.utils.CxxUtils; public final class DrMemoryParser { - private static final Logger LOG = Loggers.get(DrMemoryParser.class); + private static final Logger LOG = LoggerFactory.getLogger(DrMemoryParser.class); private static final Pattern RX_MESSAGE_FINDER = Pattern.compile("^Error #\\d{1,6}:(.*)"); private static final Pattern RX_FILE_FINDER = Pattern.compile( "\\s*+#[^\\[]++\\[((?>[a-zA-Z]:[\\\\/])??[^:]++):(\\d{1,5})\\]"); diff --git a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/infer/CxxInferSensor.java b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/infer/CxxInferSensor.java index 2de640afe3..4c6a753950 100644 --- a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/infer/CxxInferSensor.java +++ b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/infer/CxxInferSensor.java @@ -24,8 +24,8 @@ import org.sonar.api.batch.sensor.SensorDescriptor; import org.sonar.api.config.PropertyDefinition; import org.sonar.api.resources.Qualifiers; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.cxx.sensors.utils.CxxIssuesReportSensor; /** @@ -36,7 +36,7 @@ public class CxxInferSensor extends CxxIssuesReportSensor { public static final String REPORT_PATH_KEY = "sonar.cxx.infer.reportPaths"; - private static final Logger LOG = Loggers.get(CxxInferSensor.class); + private static final Logger LOG = LoggerFactory.getLogger(CxxInferSensor.class); public static List properties() { return List.of(PropertyDefinition.builder(REPORT_PATH_KEY) diff --git a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/infer/InferParser.java b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/infer/InferParser.java index f9d5f693f0..5ace2cf76a 100644 --- a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/infer/InferParser.java +++ b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/infer/InferParser.java @@ -25,8 +25,8 @@ import java.io.File; import java.io.FileReader; import java.io.IOException; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.cxx.sensors.utils.EmptyReportException; import org.sonar.cxx.sensors.utils.InvalidReportException; import org.sonar.cxx.utils.CxxReportIssue; @@ -38,7 +38,7 @@ */ public class InferParser { - private static final Logger LOG = Loggers.get(InferParser.class); + private static final Logger LOG = LoggerFactory.getLogger(InferParser.class); private final CxxInferSensor sensor; diff --git a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/other/CxxOtherRepository.java b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/other/CxxOtherRepository.java index 8228ea057b..b50537aa56 100644 --- a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/other/CxxOtherRepository.java +++ b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/other/CxxOtherRepository.java @@ -23,8 +23,8 @@ import java.nio.charset.StandardCharsets; import org.sonar.api.config.Configuration; import org.sonar.api.server.rule.RulesDefinition; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.cxx.sensors.utils.RulesDefinitionXmlLoader; /** @@ -35,7 +35,7 @@ public class CxxOtherRepository implements RulesDefinition { public static final String KEY = "other"; private static final String NAME = "Other"; - private static final Logger LOG = Loggers.get(CxxOtherRepository.class); + private static final Logger LOG = LoggerFactory.getLogger(CxxOtherRepository.class); private final RulesDefinitionXmlLoader xmlRuleLoader; private final Configuration config; diff --git a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/other/CxxOtherSensor.java b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/other/CxxOtherSensor.java index 137521d951..df66377263 100644 --- a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/other/CxxOtherSensor.java +++ b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/other/CxxOtherSensor.java @@ -30,8 +30,8 @@ import org.sonar.api.batch.sensor.SensorDescriptor; import org.sonar.api.config.PropertyDefinition; import org.sonar.api.resources.Qualifiers; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.cxx.sensors.utils.CxxIssuesReportSensor; import org.sonar.cxx.sensors.utils.InvalidReportException; import org.sonar.cxx.sensors.utils.StaxParser; @@ -45,7 +45,7 @@ public class CxxOtherSensor extends CxxIssuesReportSensor { public static final String REPORT_PATH_KEY = "sonar.cxx.other.reportPaths"; public static final String RULES_KEY = "sonar.cxx.other.rules"; - private static final Logger LOG = Loggers.get(CxxOtherSensor.class); + private static final Logger LOG = LoggerFactory.getLogger(CxxOtherSensor.class); public static List properties() { var subcategory = "Other Analyser(s)"; diff --git a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/pclint/CxxPCLintSensor.java b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/pclint/CxxPCLintSensor.java index 5a7c9128b8..9db3d309fa 100644 --- a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/pclint/CxxPCLintSensor.java +++ b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/pclint/CxxPCLintSensor.java @@ -32,8 +32,8 @@ import org.sonar.api.batch.sensor.SensorDescriptor; import org.sonar.api.config.PropertyDefinition; import org.sonar.api.resources.Qualifiers; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.cxx.sensors.utils.CxxIssuesReportSensor; import org.sonar.cxx.sensors.utils.CxxUtils; import org.sonar.cxx.sensors.utils.EmptyReportException; @@ -54,7 +54,7 @@ public class CxxPCLintSensor extends CxxIssuesReportSensor { public static final Pattern MISRA_RULE_PATTERN = Pattern.compile( // Rule nn.nn -or- Rule nn-nn-nn "Rule\\x20(\\d{1,2}.\\d{1,2}|\\d{1,2}-\\d{1,2}-\\d{1,2})(,|\\])"); - private static final Logger LOG = Loggers.get(CxxPCLintSensor.class); + private static final Logger LOG = LoggerFactory.getLogger(CxxPCLintSensor.class); private static final String SUPPLEMENTAL_TYPE_ISSUE = "supplemental"; diff --git a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/rats/CxxRatsSensor.java b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/rats/CxxRatsSensor.java index fc0cdaeb94..13af083847 100644 --- a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/rats/CxxRatsSensor.java +++ b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/rats/CxxRatsSensor.java @@ -33,8 +33,8 @@ import org.sonar.api.batch.sensor.SensorDescriptor; import org.sonar.api.config.PropertyDefinition; import org.sonar.api.resources.Qualifiers; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.cxx.sensors.utils.CxxIssuesReportSensor; import org.sonar.cxx.sensors.utils.InvalidReportException; import org.sonar.cxx.utils.CxxReportIssue; @@ -46,7 +46,7 @@ public class CxxRatsSensor extends CxxIssuesReportSensor { public static final String REPORT_PATH_KEY = "sonar.cxx.rats.reportPaths"; - private static final Logger LOG = Loggers.get(CxxRatsSensor.class); + private static final Logger LOG = LoggerFactory.getLogger(CxxRatsSensor.class); private static final String MISSING_RATS_TYPE = "fixed size global buffer"; public static List properties() { diff --git a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/tests/dotnet/CxxUnitTestResultsAggregator.java b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/tests/dotnet/CxxUnitTestResultsAggregator.java index db09ee6141..af90957b80 100644 --- a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/tests/dotnet/CxxUnitTestResultsAggregator.java +++ b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/tests/dotnet/CxxUnitTestResultsAggregator.java @@ -24,8 +24,8 @@ // Copyright (C) 2014-2017 SonarSource SA // mailto:info AT sonarsource DOT com import org.sonar.api.scanner.ScannerSide; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * CxxUnitTestResultsAggregator (from .Net test library) @@ -33,7 +33,7 @@ @ScannerSide public class CxxUnitTestResultsAggregator { - private static final Logger LOG = Loggers.get(CxxUnitTestResultsAggregator.class); + private static final Logger LOG = LoggerFactory.getLogger(CxxUnitTestResultsAggregator.class); private final VisualStudioTestResultsFileParser visualStudioTestResultsFileParser; private final NUnitTestResultsFileParser nunitTestResultsFileParser; diff --git a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/tests/dotnet/NUnitTestResultsFileParser.java b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/tests/dotnet/NUnitTestResultsFileParser.java index 26c7fc4016..7a89465ce9 100644 --- a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/tests/dotnet/NUnitTestResultsFileParser.java +++ b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/tests/dotnet/NUnitTestResultsFileParser.java @@ -26,12 +26,12 @@ import java.io.File; import java.io.IOException; import javax.annotation.CheckForNull; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class NUnitTestResultsFileParser implements UnitTestResultsParser { - private static final Logger LOG = Loggers.get(NUnitTestResultsFileParser.class); + private static final Logger LOG = LoggerFactory.getLogger(NUnitTestResultsFileParser.class); @Override public void accept(File file, UnitTestResults unitTestResults) { diff --git a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/tests/dotnet/VisualStudioTestResultsFileParser.java b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/tests/dotnet/VisualStudioTestResultsFileParser.java index 8dfc9005dd..edebdf79e3 100644 --- a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/tests/dotnet/VisualStudioTestResultsFileParser.java +++ b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/tests/dotnet/VisualStudioTestResultsFileParser.java @@ -30,12 +30,12 @@ import java.text.SimpleDateFormat; import java.util.Date; import java.util.regex.Pattern; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class VisualStudioTestResultsFileParser implements UnitTestResultsParser { - private static final Logger LOG = Loggers.get(VisualStudioTestResultsFileParser.class); + private static final Logger LOG = LoggerFactory.getLogger(VisualStudioTestResultsFileParser.class); @Override public void accept(File file, UnitTestResults unitTestResults) { diff --git a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/tests/xunit/CxxXunitSensor.java b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/tests/xunit/CxxXunitSensor.java index 37058c01a7..eca9c81b1e 100644 --- a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/tests/xunit/CxxXunitSensor.java +++ b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/tests/xunit/CxxXunitSensor.java @@ -34,8 +34,8 @@ import org.sonar.api.measures.CoreMetrics; import org.sonar.api.measures.Metric; import org.sonar.api.resources.Qualifiers; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.cxx.sensors.utils.CxxReportSensor; import org.sonar.cxx.sensors.utils.CxxUtils; import org.sonar.cxx.sensors.utils.EmptyReportException; @@ -47,7 +47,7 @@ public class CxxXunitSensor extends CxxReportSensor { public static final String REPORT_PATH_KEY = "sonar.cxx.xunit.reportPaths"; - private static final Logger LOG = Loggers.get(CxxXunitSensor.class); + private static final Logger LOG = LoggerFactory.getLogger(CxxXunitSensor.class); public static List properties() { return Collections.unmodifiableList(Arrays.asList( diff --git a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/utils/CxxIssuesReportSensor.java b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/utils/CxxIssuesReportSensor.java index 05a5074246..01752298f1 100644 --- a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/utils/CxxIssuesReportSensor.java +++ b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/utils/CxxIssuesReportSensor.java @@ -30,8 +30,8 @@ import org.sonar.api.batch.sensor.issue.NewIssue; import org.sonar.api.batch.sensor.issue.NewIssueLocation; import org.sonar.api.rule.RuleKey; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.cxx.utils.CxxReportIssue; import org.sonar.cxx.utils.CxxReportLocation; @@ -41,7 +41,7 @@ */ public abstract class CxxIssuesReportSensor extends CxxReportSensor { - private static final Logger LOG = Loggers.get(CxxIssuesReportSensor.class); + private static final Logger LOG = LoggerFactory.getLogger(CxxIssuesReportSensor.class); private final Set uniqueIssues = new HashSet<>(); private int savedNewIssues = 0; diff --git a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/utils/CxxReportSensor.java b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/utils/CxxReportSensor.java index b7ab45b66a..e3f23d572a 100644 --- a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/utils/CxxReportSensor.java +++ b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/utils/CxxReportSensor.java @@ -29,8 +29,8 @@ import org.sonar.api.batch.fs.InputFile; import org.sonar.api.batch.sensor.SensorContext; import org.sonar.api.scanner.sensor.ProjectSensor; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * This class is used as base for all sensors which import reports. It hosts common logic such as finding the reports. @@ -38,7 +38,7 @@ public abstract class CxxReportSensor implements ProjectSensor { public static final String ERROR_RECOVERY_KEY = "sonar.cxx.errorRecoveryEnabled"; - private static final Logger LOG = Loggers.get(CxxReportSensor.class); + private static final Logger LOG = LoggerFactory.getLogger(CxxReportSensor.class); private final Set notFoundFiles = new HashSet<>(); diff --git a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/utils/CxxUtils.java b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/utils/CxxUtils.java index ec49c03e3d..0547fc5e7a 100644 --- a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/utils/CxxUtils.java +++ b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/utils/CxxUtils.java @@ -34,8 +34,8 @@ import org.sonar.api.batch.sensor.SensorContext; import org.sonar.api.config.Configuration; import org.sonar.api.utils.PathUtils; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * Utility class holding various, well, utilities @@ -43,7 +43,7 @@ public final class CxxUtils { public static final Pattern EOL_PATTERN = Pattern.compile("\\R"); - private static final Logger LOG = Loggers.get(CxxUtils.class); + private static final Logger LOG = LoggerFactory.getLogger(CxxUtils.class); private CxxUtils() { // only static methods diff --git a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/utils/RulesDefinitionXml.java b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/utils/RulesDefinitionXml.java index 13204c861a..7f9c10485b 100644 --- a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/utils/RulesDefinitionXml.java +++ b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/utils/RulesDefinitionXml.java @@ -29,15 +29,15 @@ import org.apache.commons.io.FileUtils; import org.sonar.api.platform.ServerFileSystem; import org.sonar.api.server.rule.RulesDefinition; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * {@inheritDoc} */ public class RulesDefinitionXml implements RulesDefinition { - private static final Logger LOG = Loggers.get(RulesDefinitionXml.class); + private static final Logger LOG = LoggerFactory.getLogger(RulesDefinitionXml.class); private final ServerFileSystem fileSystem; private final RulesDefinitionXmlLoader xmlRuleLoader; diff --git a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/utils/RulesDefinitionXmlLoader.java b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/utils/RulesDefinitionXmlLoader.java index 2579b5ddbd..16d843edb3 100644 --- a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/utils/RulesDefinitionXmlLoader.java +++ b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/utils/RulesDefinitionXmlLoader.java @@ -114,7 +114,7 @@ * <description> * <![CDATA[The description]]> * </description> - * <!-- Optional format of description. Supported values are HTML (default) and MARKDOWN. --> + * <!-- Optional format of description. Supported values are HTML (default). --> * <descriptionFormat>HTML</descriptionFormat> * * <!-- Optional key for configuration of some rule engines --> @@ -218,12 +218,12 @@ public class RulesDefinitionXmlLoader { private static final String ELEMENT_PARAM = "param"; private enum DescriptionFormat { - HTML, MARKDOWN + HTML } /** - * Loads rules by reading the XML input stream. The input stream is not always closed by the method, so it - * should be handled by the caller. + * Loads rules by reading the XML input stream. The input stream is not always closed by the method, so it should be + * handled by the caller. * * @since 4.3 */ @@ -235,11 +235,18 @@ public void load(RulesDefinition.NewRepository repo, InputStream input, String e * @since 5.1 */ public void load(RulesDefinition.NewRepository repo, InputStream input, Charset charset) { - try (Reader reader = new InputStreamReader(new BOMInputStream(input, - ByteOrderMark.UTF_8, ByteOrderMark.UTF_16LE, - ByteOrderMark.UTF_16BE, - ByteOrderMark.UTF_32LE, ByteOrderMark.UTF_32BE), - charset)) { + try (Reader reader = new InputStreamReader( + BOMInputStream.builder() + .setInputStream(input) + .setInclude(false) + .setByteOrderMarks( + ByteOrderMark.UTF_8, + ByteOrderMark.UTF_16LE, + ByteOrderMark.UTF_16BE, + ByteOrderMark.UTF_32LE, + ByteOrderMark.UTF_32BE + ).get(), + charset)) { load(repo, reader); } catch (IOException e) { throw new IllegalStateException("Error while reading XML rules definition for repository " + repo.key(), e); @@ -247,8 +254,8 @@ public void load(RulesDefinition.NewRepository repo, InputStream input, Charset } /** - * Loads rules by reading the XML input stream. The reader is not closed by the method, so it - * should be handled by the caller. + * Loads rules by reading the XML input stream. The reader is not closed by the method, so it should be handled by the + * caller. * * @since 4.3 */ @@ -330,8 +337,8 @@ private static void processRule(RulesDefinition.NewRepository repo, StartElement } } buildRule(repo, key, name, description, descriptionFormat, internalKey, severity, type, status, template, - gapDescription, debtRemediationFunction, remediationFunctionBaseEffort, - remediationFunctionGapMultiplier, params, tags); + gapDescription, debtRemediationFunction, remediationFunctionBaseEffort, + remediationFunctionGapMultiplier, params, tags); return; } if (event.isStartElement()) { @@ -367,7 +374,7 @@ private static void processRule(RulesDefinition.NewRepository repo, StartElement .equalsIgnoreCase(elementName)) { remediationFunctionBaseEffort = StringUtils.trim(reader.getElementText()); } else if ("remediationFunctionGapMultiplier".equalsIgnoreCase(elementName) - || "debtRemediationFunctionCoefficient".equalsIgnoreCase(elementName)) { + || "debtRemediationFunctionCoefficient".equalsIgnoreCase(elementName)) { remediationFunctionGapMultiplier = StringUtils.trim(reader.getElementText()); } else if ("status".equalsIgnoreCase(elementName)) { String s = StringUtils.trim(reader.getElementText()); @@ -384,14 +391,14 @@ private static void processRule(RulesDefinition.NewRepository repo, StartElement } private static void buildRule(RulesDefinition.NewRepository repo, String key, String name, - @Nullable String description, - String descriptionFormat, @Nullable String internalKey, String severity, - @Nullable String type, RuleStatus status, - boolean template, @Nullable String gapDescription, - @Nullable String debtRemediationFunction, - @Nullable String debtRemediationFunctionBaseEffort, - @Nullable String debtRemediationFunctionGapMultiplier, List params, - List tags) { + @Nullable String description, + String descriptionFormat, @Nullable String internalKey, String severity, + @Nullable String type, RuleStatus status, + boolean template, @Nullable String gapDescription, + @Nullable String debtRemediationFunction, + @Nullable String debtRemediationFunctionBaseEffort, + @Nullable String debtRemediationFunctionGapMultiplier, List params, + List tags) { try { RulesDefinition.NewRule rule = repo.createRule(key) .setSeverity(severity) @@ -406,7 +413,7 @@ private static void buildRule(RulesDefinition.NewRepository repo, String key, St } fillDescription(rule, descriptionFormat, description); fillRemediationFunction(rule, debtRemediationFunction, debtRemediationFunctionGapMultiplier, - debtRemediationFunctionBaseEffort); + debtRemediationFunctionBaseEffort); fillParams(rule, params); } catch (Exception e) { throw new IllegalStateException(format("Fail to load the rule with key [%s:%s]", repo.key(), key), e); @@ -414,15 +421,12 @@ private static void buildRule(RulesDefinition.NewRepository repo, String key, St } private static void fillDescription(RulesDefinition.NewRule rule, String descriptionFormat, - @Nullable String description) { + @Nullable String description) { if (isNotBlank(description)) { switch (DescriptionFormat.valueOf(descriptionFormat)) { case HTML: rule.setHtmlDescription(description); break; - case MARKDOWN: - rule.setMarkdownDescription(description); - break; default: throw new IllegalArgumentException("Value of descriptionFormat is not supported: " + descriptionFormat); } @@ -430,7 +434,7 @@ private static void fillDescription(RulesDefinition.NewRule rule, String descrip } private static void fillRemediationFunction(RulesDefinition.NewRule rule, @Nullable String debtRemediationFunction, - @Nullable String functionCoeff, @Nullable String functionOffset) { + @Nullable String functionCoeff, @Nullable String functionOffset) { if (isNotBlank(debtRemediationFunction)) { DebtRemediationFunction.Type functionType = DebtRemediationFunction.Type.valueOf(debtRemediationFunction); rule.setDebtRemediationFunction(rule.debtRemediationFunctions() diff --git a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/utils/StaxParser.java b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/utils/StaxParser.java index c4461b8194..652badc3ca 100644 --- a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/utils/StaxParser.java +++ b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/utils/StaxParser.java @@ -31,15 +31,15 @@ import org.apache.commons.lang.StringUtils; import org.codehaus.staxmate.SMInputFactory; import org.codehaus.staxmate.in.SMHierarchicCursor; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * helper class StaxParser */ public class StaxParser { - private static final Logger LOG = Loggers.get(StaxParser.class); + private static final Logger LOG = LoggerFactory.getLogger(StaxParser.class); private SMInputFactory inf; private XmlStreamHandler streamHandler; private boolean isoControlCharsAwareParser; diff --git a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/utils/TextScanner.java b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/utils/TextScanner.java index 7b91f94fe9..c66b372956 100644 --- a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/utils/TextScanner.java +++ b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/utils/TextScanner.java @@ -38,8 +38,8 @@ public class TextScanner implements Closeable { /** * Constructs a new {@code Scanner} that produces values scanned from the specified file. * - * Bytes from the file are converted into characters using the found encoding. - * Tries first to read a BOM. If no BOM exists defaultEncoding is used. + * Bytes from the file are converted into characters using the found encoding. Tries first to read a BOM. If no BOM + * exists defaultEncoding is used. * * @param source A file to be scanned * @param defaultEncoding The encoding type used to convert bytes from the file into characters if file has no BOM @@ -50,12 +50,17 @@ public class TextScanner implements Closeable { public TextScanner(File source, String defaultEncoding) throws IOException { BOMInputStream bomInputStream = null; try { - bomInputStream = new BOMInputStream(new FileInputStream(source), - ByteOrderMark.UTF_8, - ByteOrderMark.UTF_16LE, - ByteOrderMark.UTF_16BE, - ByteOrderMark.UTF_32LE, - ByteOrderMark.UTF_32BE); + bomInputStream = BOMInputStream.builder() + .setInputStream(new FileInputStream(source)) + .setInclude(false) + .setByteOrderMarks( + ByteOrderMark.UTF_8, + ByteOrderMark.UTF_16LE, + ByteOrderMark.UTF_16BE, + ByteOrderMark.UTF_32LE, + ByteOrderMark.UTF_32BE + ).get(); + ByteOrderMark bom = bomInputStream.getBOM(); encoding = (bom != null) ? bom.getCharsetName() : defaultEncoding; scanner = new Scanner(bomInputStream, encoding); @@ -72,12 +77,12 @@ public TextScanner(File source, String defaultEncoding) throws IOException { * *

* If this scanner has not yet been closed then if its underlying {@linkplain java.lang.Readable readable} also - * implements the {@link java.io.Closeable} interface then the readable's {@code close} method will be invoked. - * If this scanner is already closed then invoking this method will have no effect. + * implements the {@link java.io.Closeable} interface then the readable's {@code close} method will be invoked. If + * this scanner is already closed then invoking this method will have no effect. * *

- * Attempting to perform search operations after a scanner has been closed will result - * in an {@link IllegalStateException}. + * Attempting to perform search operations after a scanner has been closed will result in an + * {@link IllegalStateException}. * */ @Override @@ -111,8 +116,8 @@ public boolean hasNextLine() { /** * Finds and returns the next complete token from this scanner. * - * A complete token is preceded and followed by input that matches the delimiter pattern. This method may block - * while waiting for input to scan, even if a previous invocation of {@link #hasNext} returned {@code true}. + * A complete token is preceded and followed by input that matches the delimiter pattern. This method may block while + * waiting for input to scan, even if a previous invocation of {@link #hasNext} returned {@code true}. * * @return the next token * @throws NoSuchElementException if no more tokens are available @@ -126,12 +131,12 @@ public String next() { /** * Advances this scanner past the current line and returns the input that was skipped. * - * This method returns the rest of the current line, excluding any line separator at the end. The position is - * set to the beginning of the next line. + * This method returns the rest of the current line, excluding any line separator at the end. The position is set to + * the beginning of the next line. * *

- * Since this method continues to search through the input looking for a line separator, it may buffer all - * of the input searching for the line to skip if no line separators are present. + * Since this method continues to search through the input looking for a line separator, it may buffer all of the + * input searching for the line to skip if no line separators are present. * * @return the line that was skipped * @throws NoSuchElementException if no line was found diff --git a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/valgrind/CxxValgrindSensor.java b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/valgrind/CxxValgrindSensor.java index 7eeebaa033..1c05e11654 100644 --- a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/valgrind/CxxValgrindSensor.java +++ b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/valgrind/CxxValgrindSensor.java @@ -29,8 +29,8 @@ import org.sonar.api.batch.sensor.SensorDescriptor; import org.sonar.api.config.PropertyDefinition; import org.sonar.api.resources.Qualifiers; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.cxx.sensors.utils.CxxIssuesReportSensor; import org.sonar.cxx.sensors.utils.InvalidReportException; import org.sonar.cxx.utils.CxxReportIssue; @@ -42,7 +42,7 @@ public class CxxValgrindSensor extends CxxIssuesReportSensor { public static final String REPORT_PATH_KEY = "sonar.cxx.valgrind.reportPaths"; - private static final Logger LOG = Loggers.get(CxxValgrindSensor.class); + private static final Logger LOG = LoggerFactory.getLogger(CxxValgrindSensor.class); public static List properties() { return Collections.unmodifiableList(Arrays.asList( diff --git a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/veraxx/CxxVeraxxSensor.java b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/veraxx/CxxVeraxxSensor.java index 3e53cb9455..7a7e2c08cd 100644 --- a/cxx-sensors/src/main/java/org/sonar/cxx/sensors/veraxx/CxxVeraxxSensor.java +++ b/cxx-sensors/src/main/java/org/sonar/cxx/sensors/veraxx/CxxVeraxxSensor.java @@ -29,8 +29,8 @@ import org.sonar.api.batch.sensor.SensorDescriptor; import org.sonar.api.config.PropertyDefinition; import org.sonar.api.resources.Qualifiers; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.cxx.sensors.utils.CxxIssuesReportSensor; import org.sonar.cxx.sensors.utils.EmptyReportException; import org.sonar.cxx.sensors.utils.InvalidReportException; @@ -43,7 +43,7 @@ public class CxxVeraxxSensor extends CxxIssuesReportSensor { public static final String REPORT_PATH_KEY = "sonar.cxx.vera.reportPaths"; - private static final Logger LOG = Loggers.get(CxxVeraxxSensor.class); + private static final Logger LOG = LoggerFactory.getLogger(CxxVeraxxSensor.class); public static List properties() { return Collections.unmodifiableList(Arrays.asList( diff --git a/cxx-sensors/src/main/resources/rules.xsd b/cxx-sensors/src/main/resources/rules.xsd index 229b063a07..7694fe346f 100644 --- a/cxx-sensors/src/main/resources/rules.xsd +++ b/cxx-sensors/src/main/resources/rules.xsd @@ -24,13 +24,12 @@ - diff --git a/cxx-sensors/src/test/java/org/sonar/cxx/postjobs/FinalReportTest.java b/cxx-sensors/src/test/java/org/sonar/cxx/postjobs/FinalReportTest.java index da750933a4..736bd0905a 100644 --- a/cxx-sensors/src/test/java/org/sonar/cxx/postjobs/FinalReportTest.java +++ b/cxx-sensors/src/test/java/org/sonar/cxx/postjobs/FinalReportTest.java @@ -31,13 +31,13 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; import org.mockito.Mockito; +import org.slf4j.event.Level; import org.sonar.api.batch.fs.InputFile; import org.sonar.api.batch.fs.internal.DefaultInputFile; import org.sonar.api.batch.fs.internal.TestInputFileBuilder; import org.sonar.api.batch.postjob.PostJobContext; import org.sonar.api.batch.sensor.internal.SensorContextTester; import org.sonar.api.testfixtures.log.LogTesterJUnit5; -import org.slf4j.event.Level; import org.sonar.cxx.CxxAstScanner; import org.sonar.cxx.preprocessor.CxxPreprocessor; import org.sonar.cxx.visitors.CxxParseErrorLoggerVisitor; @@ -86,12 +86,17 @@ private static DefaultInputFile createInputFile(String fileName, String basePath } private static String getSourceCode(File filename, Charset defaultCharset) throws IOException { - try (var bomInputStream = new BOMInputStream(new FileInputStream(filename), - ByteOrderMark.UTF_8, - ByteOrderMark.UTF_16LE, - ByteOrderMark.UTF_16BE, - ByteOrderMark.UTF_32LE, - ByteOrderMark.UTF_32BE)) { + try (var bomInputStream = BOMInputStream.builder() + .setInputStream(new FileInputStream(filename)) + .setInclude(false) + .setByteOrderMarks( + ByteOrderMark.UTF_8, + ByteOrderMark.UTF_16LE, + ByteOrderMark.UTF_16BE, + ByteOrderMark.UTF_32LE, + ByteOrderMark.UTF_32BE + ) + .get()) { ByteOrderMark bom = bomInputStream.getBOM(); Charset charset = bom != null ? Charset.forName(bom.getCharsetName()) : defaultCharset; byte[] bytes = bomInputStream.readAllBytes(); diff --git a/cxx-sensors/src/test/java/org/sonar/cxx/sensors/coverage/CxxBullseyeCoverageSensorTest.java b/cxx-sensors/src/test/java/org/sonar/cxx/sensors/coverage/CxxBullseyeCoverageSensorTest.java index b458abb8e1..0c32941f83 100644 --- a/cxx-sensors/src/test/java/org/sonar/cxx/sensors/coverage/CxxBullseyeCoverageSensorTest.java +++ b/cxx-sensors/src/test/java/org/sonar/cxx/sensors/coverage/CxxBullseyeCoverageSensorTest.java @@ -26,15 +26,15 @@ import org.sonar.api.batch.fs.internal.TestInputFileBuilder; import org.sonar.api.batch.sensor.internal.SensorContextTester; import org.sonar.api.config.internal.MapSettings; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.cxx.sensors.coverage.bullseye.CxxCoverageBullseyeSensor; import org.sonar.cxx.sensors.utils.CxxReportSensor; import org.sonar.cxx.sensors.utils.TestUtils; class CxxBullseyeCoverageSensorTest { - private static final Logger LOG = Loggers.get(CxxBullseyeCoverageSensorTest.class); + private static final Logger LOG = LoggerFactory.getLogger(CxxBullseyeCoverageSensorTest.class); private DefaultFileSystem fs; private final MapSettings settings = new MapSettings(); diff --git a/cxx-sensors/src/test/java/org/sonar/cxx/sensors/cppcheck/CxxCppCheckSensorTest.java b/cxx-sensors/src/test/java/org/sonar/cxx/sensors/cppcheck/CxxCppCheckSensorTest.java index a5fe4dcce8..2f68fd2c11 100644 --- a/cxx-sensors/src/test/java/org/sonar/cxx/sensors/cppcheck/CxxCppCheckSensorTest.java +++ b/cxx-sensors/src/test/java/org/sonar/cxx/sensors/cppcheck/CxxCppCheckSensorTest.java @@ -63,7 +63,7 @@ void shouldReportCorrectViolations() { void shouldReportProjectLevelViolationsV2() { var context = SensorContextTester.create(fs.baseDir()); settings.setProperty(CxxCppCheckSensor.REPORT_PATH_KEY, - "cppcheck-reports/cppcheck-result-projectlevelviolation-V2.xml"); + "cppcheck-reports/cppcheck-result-projectlevelviolation-V2.xml"); context.setSettings(settings); var sensor = new CxxCppCheckSensor(); @@ -112,9 +112,9 @@ void shouldThrowExceptionWhenRecoveryIsDisabled() { context.setSettings(settings); var sensor = new CxxCppCheckSensor(); - IllegalStateException thrown = catchThrowableOfType(() -> { + IllegalStateException thrown = catchThrowableOfType(IllegalStateException.class, () -> { sensor.execute(context); - }, IllegalStateException.class); + }); assertThat(thrown).isExactlyInstanceOf(IllegalStateException.class); } diff --git a/cxx-sensors/src/test/java/org/sonar/cxx/sensors/infer/CxxInferSensorTest.java b/cxx-sensors/src/test/java/org/sonar/cxx/sensors/infer/CxxInferSensorTest.java index ecb7a4d4fa..e7f48ac261 100644 --- a/cxx-sensors/src/test/java/org/sonar/cxx/sensors/infer/CxxInferSensorTest.java +++ b/cxx-sensors/src/test/java/org/sonar/cxx/sensors/infer/CxxInferSensorTest.java @@ -107,9 +107,9 @@ void shouldThrowExceptionWhenRecoveryIsDisabled() { context.setSettings(settings); var sensor = new CxxInferSensor(); - IllegalStateException thrown = catchThrowableOfType(() -> { + IllegalStateException thrown = catchThrowableOfType(IllegalStateException.class, () -> { sensor.execute(context); - }, IllegalStateException.class); + }); assertThat(thrown).isExactlyInstanceOf(IllegalStateException.class); } diff --git a/cxx-sensors/src/test/java/org/sonar/cxx/sensors/other/CxxOtherSensorTest.java b/cxx-sensors/src/test/java/org/sonar/cxx/sensors/other/CxxOtherSensorTest.java index d05c076536..fac0418050 100644 --- a/cxx-sensors/src/test/java/org/sonar/cxx/sensors/other/CxxOtherSensorTest.java +++ b/cxx-sensors/src/test/java/org/sonar/cxx/sensors/other/CxxOtherSensorTest.java @@ -68,7 +68,7 @@ void shouldReportCorrectViolations() { void shouldReportFileLevelViolations() { var context = SensorContextTester.create(fs.baseDir()); settings.setProperty(CxxOtherSensor.REPORT_PATH_KEY, - "externalrules-reports/externalrules-result-filelevelviolation.xml"); + "externalrules-reports/externalrules-result-filelevelviolation.xml"); context.setSettings(settings); context.fileSystem().add(TestInputFileBuilder.create("ProjectKey", "sources/utils/code_chunks.cpp") @@ -84,7 +84,7 @@ void shouldReportFileLevelViolations() { void shouldReportProjectLevelViolations() { var context = SensorContextTester.create(fs.baseDir()); settings.setProperty(CxxOtherSensor.REPORT_PATH_KEY, - "externalrules-reports/externalrules-result-projectlevelviolation.xml"); + "externalrules-reports/externalrules-result-projectlevelviolation.xml"); context.setSettings(settings); sensor = new CxxOtherSensor(); @@ -101,9 +101,9 @@ void shouldThrowExceptionWhenReportEmpty() { context.setSettings(settings); sensor = new CxxOtherSensor(); - IllegalStateException thrown = catchThrowableOfType(() -> { + IllegalStateException thrown = catchThrowableOfType(IllegalStateException.class, () -> { sensor.execute(context); - }, IllegalStateException.class); + }); assertThat(thrown).isExactlyInstanceOf(IllegalStateException.class); assertThat(context.allIssues()).isEmpty(); } @@ -128,9 +128,9 @@ void shouldThrowInCaseOfATrashyReport() { context.setSettings(settings); sensor = new CxxOtherSensor(); - IllegalStateException thrown = catchThrowableOfType(() -> { + IllegalStateException thrown = catchThrowableOfType(IllegalStateException.class, () -> { sensor.execute(context); - }, IllegalStateException.class); + }); assertThat(thrown).isExactlyInstanceOf(IllegalStateException.class); } diff --git a/cxx-sensors/src/test/java/org/sonar/cxx/sensors/tests/dotnet/NUnitTestResultsFileParserTest.java b/cxx-sensors/src/test/java/org/sonar/cxx/sensors/tests/dotnet/NUnitTestResultsFileParserTest.java index b98e389b5d..ff2a276d3a 100644 --- a/cxx-sensors/src/test/java/org/sonar/cxx/sensors/tests/dotnet/NUnitTestResultsFileParserTest.java +++ b/cxx-sensors/src/test/java/org/sonar/cxx/sensors/tests/dotnet/NUnitTestResultsFileParserTest.java @@ -28,33 +28,33 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; import static org.mockito.Mockito.mock; -import org.sonar.api.testfixtures.log.LogTesterJUnit5; import org.slf4j.event.Level; +import org.sonar.api.testfixtures.log.LogTesterJUnit5; class NUnitTestResultsFileParserTest { private static final String REPORT_PATH - = "src/test/resources/org/sonar/cxx/sensors/reports-project/xunit-reports/nunit/"; + = "src/test/resources/org/sonar/cxx/sensors/reports-project/xunit-reports/nunit/"; @RegisterExtension public LogTesterJUnit5 logTester = new LogTesterJUnit5(); @Test void no_counters() { - ParseErrorException thrown = catchThrowableOfType(() -> { + ParseErrorException thrown = catchThrowableOfType(ParseErrorException.class, () -> { new NUnitTestResultsFileParser().accept(new File(REPORT_PATH + "no_counters.xml"), mock(UnitTestResults.class)); - }, ParseErrorException.class); + }); assertThat(thrown).hasMessageContaining("Missing attribute \"total\" in element in " - + new File(REPORT_PATH + "no_counters.xml").getAbsolutePath()); + + new File(REPORT_PATH + "no_counters.xml").getAbsolutePath()); } @Test void wrong_passed_number() { - ParseErrorException thrown = catchThrowableOfType(() -> { + ParseErrorException thrown = catchThrowableOfType(ParseErrorException.class, () -> { new NUnitTestResultsFileParser().accept(new File(REPORT_PATH + "invalid_total.xml"), mock(UnitTestResults.class)); - }, ParseErrorException.class); + }); assertThat(thrown).hasMessageContaining("Expected an integer instead of \"invalid\" for the attribute \"total\" in " - + new File(REPORT_PATH + "invalid_total.xml").getAbsolutePath()); + + new File(REPORT_PATH + "invalid_total.xml").getAbsolutePath()); } @Test diff --git a/cxx-sensors/src/test/java/org/sonar/cxx/sensors/tests/dotnet/VisualStudioTestResultsFileParserTest.java b/cxx-sensors/src/test/java/org/sonar/cxx/sensors/tests/dotnet/VisualStudioTestResultsFileParserTest.java index 4d3b077f2c..ab5739cfc9 100644 --- a/cxx-sensors/src/test/java/org/sonar/cxx/sensors/tests/dotnet/VisualStudioTestResultsFileParserTest.java +++ b/cxx-sensors/src/test/java/org/sonar/cxx/sensors/tests/dotnet/VisualStudioTestResultsFileParserTest.java @@ -34,22 +34,22 @@ class VisualStudioTestResultsFileParserTest { @Test void no_counters() { - IllegalArgumentException thrown = catchThrowableOfType(() -> { + IllegalArgumentException thrown = catchThrowableOfType(IllegalArgumentException.class, () -> { new VisualStudioTestResultsFileParser().accept(new File(REPORT_PATH + "no_counters.trx"), - mock(UnitTestResults.class)); - }, IllegalArgumentException.class); + mock(UnitTestResults.class)); + }); assertThat(thrown).hasMessageContaining("The mandatory tag is missing in " - + new File(REPORT_PATH + "no_counters.trx").getAbsolutePath()); + + new File(REPORT_PATH + "no_counters.trx").getAbsolutePath()); } @Test void wrong_passed_number() { - ParseErrorException thrown = catchThrowableOfType(() -> { + ParseErrorException thrown = catchThrowableOfType(ParseErrorException.class, () -> { new VisualStudioTestResultsFileParser().accept(new File(REPORT_PATH + "wrong_passed_number.trx"), - mock(UnitTestResults.class)); - }, ParseErrorException.class); + mock(UnitTestResults.class)); + }); assertThat(thrown).hasMessageContaining("Expected an integer instead of \"foo\" for the attribute \"passed\" in " - + new File(REPORT_PATH + "wrong_passed_number.trx").getAbsolutePath()); + + new File(REPORT_PATH + "wrong_passed_number.trx").getAbsolutePath()); } @Test diff --git a/cxx-sensors/src/test/java/org/sonar/cxx/sensors/tests/dotnet/WildcardPatternFileProviderTest.java b/cxx-sensors/src/test/java/org/sonar/cxx/sensors/tests/dotnet/WildcardPatternFileProviderTest.java index 7ffec5796f..93ac1217d3 100644 --- a/cxx-sensors/src/test/java/org/sonar/cxx/sensors/tests/dotnet/WildcardPatternFileProviderTest.java +++ b/cxx-sensors/src/test/java/org/sonar/cxx/sensors/tests/dotnet/WildcardPatternFileProviderTest.java @@ -111,7 +111,7 @@ void absolute_paths_with_wildcards() { assertThat(listFiles(new File(tempDir, path("**", "c?1", "foo.txt")).getAbsolutePath())) .containsOnly(new File(tempDir, path("c", "c21", "foo.txt")), new File(tempDir, - path("c", "c22", "c31", "foo.txt"))); + path("c", "c22", "c31", "foo.txt"))); assertThat(listFiles(new File(tempDir, path("?", "**", "foo.txt")).getAbsolutePath())) .containsOnly( @@ -168,7 +168,7 @@ void relative_paths_with_wildcards() { assertThat(listFiles(path("**", "c?1", "foo.txt"), tempDir)) .containsOnly(new File(tempDir, path("c", "c21", "foo.txt")), new File(tempDir, - path("c", "c22", "c31", "foo.txt"))); + path("c", "c22", "c31", "foo.txt"))); assertThat(listFiles(path("?", "**", "foo.txt"), tempDir)) .containsOnly( @@ -179,17 +179,17 @@ void relative_paths_with_wildcards() { @Test void should_fail_with_current_folder_access_after_wildcard() { - IllegalArgumentException thrown = catchThrowableOfType(() -> { + IllegalArgumentException thrown = catchThrowableOfType(IllegalArgumentException.class, () -> { listFiles(new File(tempDir, path("?", ".", "foo.txt")).getAbsolutePath()); - }, IllegalArgumentException.class); + }); assertThat(thrown).hasMessage("Cannot contain '.' or '..' after the first wildcard."); } @Test void should_fail_with_parent_folder_access_after_wildcard() { - IllegalArgumentException thrown = catchThrowableOfType(() -> { + IllegalArgumentException thrown = catchThrowableOfType(IllegalArgumentException.class, () -> { listFiles(path("*", "..", "foo.txt"), tempDir); - }, IllegalArgumentException.class); + }); assertThat(thrown).hasMessage("Cannot contain '.' or '..' after the first wildcard."); } diff --git a/cxx-sensors/src/test/java/org/sonar/cxx/sensors/tests/dotnet/XmlParserHelperTest.java b/cxx-sensors/src/test/java/org/sonar/cxx/sensors/tests/dotnet/XmlParserHelperTest.java index 7d8b9fc836..b763c60a61 100644 --- a/cxx-sensors/src/test/java/org/sonar/cxx/sensors/tests/dotnet/XmlParserHelperTest.java +++ b/cxx-sensors/src/test/java/org/sonar/cxx/sensors/tests/dotnet/XmlParserHelperTest.java @@ -34,13 +34,13 @@ class XmlParserHelperTest { @Test void invalid_prolog() throws IOException { - IllegalStateException e = catchThrowableOfType(() -> { + IllegalStateException e = catchThrowableOfType(IllegalStateException.class, () -> { try (var helper = new XmlParserHelper(new File(REPORT_PATH + "invalid_prolog.txt"))) { helper.nextStartTag(); } - }, IllegalStateException.class); + }); assertThat(e).hasMessageContaining("Error while parsing the XML file: " - + new File(REPORT_PATH + "invalid_prolog.txt").getAbsolutePath()); + + new File(REPORT_PATH + "invalid_prolog.txt").getAbsolutePath()); } @Test @@ -67,11 +67,11 @@ void getDoubleAttribute() { assertThat(xml.getDoubleAttribute("myCommaDouble")).isEqualTo(1.234); assertThat(xml.getDoubleAttribute("nonExisting")).isNull(); - ParseErrorException e = catchThrowableOfType(() -> { + ParseErrorException e = catchThrowableOfType(ParseErrorException.class, () -> { xml.getDoubleAttribute("myString"); - }, ParseErrorException.class); + }); assertThat(e).hasMessageContaining("Expected an double instead of \"hello\" for the attribute \"myString\" in " - + new File(REPORT_PATH + "valid.xml").getAbsolutePath()); + + new File(REPORT_PATH + "valid.xml").getAbsolutePath()); } } diff --git a/cxx-sensors/src/test/java/org/sonar/cxx/sensors/tests/xunit/CxxXunitSensorTest.java b/cxx-sensors/src/test/java/org/sonar/cxx/sensors/tests/xunit/CxxXunitSensorTest.java index ede5cf743c..1b714f9c84 100644 --- a/cxx-sensors/src/test/java/org/sonar/cxx/sensors/tests/xunit/CxxXunitSensorTest.java +++ b/cxx-sensors/src/test/java/org/sonar/cxx/sensors/tests/xunit/CxxXunitSensorTest.java @@ -81,9 +81,9 @@ void shouldThrowWhenGivenInvalidTime() { context.setSettings(settings); var sensor = new CxxXunitSensor(); - IllegalStateException thrown = catchThrowableOfType(() -> { + IllegalStateException thrown = catchThrowableOfType(IllegalStateException.class, () -> { sensor.execute(context); - }, IllegalStateException.class); + }); assertThat(thrown).isExactlyInstanceOf(IllegalStateException.class); } diff --git a/cxx-sensors/src/test/java/org/sonar/cxx/sensors/tests/xunit/XunitReportParserTest.java b/cxx-sensors/src/test/java/org/sonar/cxx/sensors/tests/xunit/XunitReportParserTest.java index 1d71f37638..4ad9fa0662 100644 --- a/cxx-sensors/src/test/java/org/sonar/cxx/sensors/tests/xunit/XunitReportParserTest.java +++ b/cxx-sensors/src/test/java/org/sonar/cxx/sensors/tests/xunit/XunitReportParserTest.java @@ -70,9 +70,9 @@ void shouldThrowWhenGivenInvalidTime() { parser = new StaxParser(parserHandler, false); File report = TestUtils.loadResource(pathPrefix + "invalid-time-xunit-report.xml"); - javax.xml.stream.XMLStreamException thrown = catchThrowableOfType(() -> { + javax.xml.stream.XMLStreamException thrown = catchThrowableOfType(javax.xml.stream.XMLStreamException.class, () -> { parser.parse(report); - }, javax.xml.stream.XMLStreamException.class); + }); assertThat(thrown).isExactlyInstanceOf(javax.xml.stream.XMLStreamException.class); } diff --git a/cxx-sensors/src/test/java/org/sonar/cxx/sensors/utils/RulesDefinitionXmlLoaderTest.java b/cxx-sensors/src/test/java/org/sonar/cxx/sensors/utils/RulesDefinitionXmlLoaderTest.java index a7a27c24b5..ee36f98a13 100644 --- a/cxx-sensors/src/test/java/org/sonar/cxx/sensors/utils/RulesDefinitionXmlLoaderTest.java +++ b/cxx-sensors/src/test/java/org/sonar/cxx/sensors/utils/RulesDefinitionXmlLoaderTest.java @@ -94,24 +94,25 @@ public void parse_xml() { @Test public void fail_if_missing_rule_key() { - assertThatThrownBy(() -> load(IOUtils.toInputStream("Foo"), - StandardCharsets.UTF_8.name())) + assertThatThrownBy(() -> load(IOUtils.toInputStream( + "Foo", StandardCharsets.UTF_8), + StandardCharsets.UTF_8.name())) .isInstanceOf(IllegalStateException.class); } @Test public void fail_if_missing_property_key() { assertThatThrownBy(() -> load(IOUtils.toInputStream( - "fooFoo"), - StandardCharsets.UTF_8.name())) + "fooFoo", StandardCharsets.UTF_8), + StandardCharsets.UTF_8.name())) .isInstanceOf(IllegalStateException.class); } @Test public void fail_on_invalid_rule_parameter_type() { assertThatThrownBy(() -> load(IOUtils.toInputStream( - "fooFookeyINVALID"), - StandardCharsets.UTF_8.name())) + "fooFookeyINVALID", StandardCharsets.UTF_8), + StandardCharsets.UTF_8.name())) .isInstanceOf(IllegalStateException.class); } @@ -173,8 +174,8 @@ public void support_deprecated_format() { @Test public void test_default_values() { String xml = "" + "" + " " - + " 1" + " One" + " Desc" - + " " + ""; + + " 1" + " One" + " Desc" + + " " + ""; RulesDefinition.Rule rule = load(xml).rule("1"); assertThat(rule.severity()).isEqualTo("MAJOR"); assertThat(rule.type()).isEqualTo(RuleType.CODE_SMELL); @@ -188,9 +189,9 @@ public void test_default_values() { @Test public void test_default_info_values() { String xml = "" + "" + " " - + " 1" + " One" + " Desc" - + " INFO" - + " " + ""; + + " 1" + " One" + " Desc" + + " INFO" + + " " + ""; RulesDefinition.Rule rule = load(xml).rule("1"); assertThat(rule.severity()).isEqualTo("INFO"); assertThat(rule.type()).isEqualTo(RuleType.CODE_SMELL); @@ -201,10 +202,10 @@ public void test_default_info_values() { @Test public void test_linear_remediation_function() { String xml = "" + "" + " " + " 1" + " One" - + " Desc" + " lines" - + " LINEAR" - + " 2d 3h" + " " - + ""; + + " Desc" + " lines" + + " LINEAR" + + " 2d 3h" + " " + + ""; RulesDefinition.Rule rule = load(xml).rule("1"); assertThat(rule.gapDescription()).isEqualTo("lines"); DebtRemediationFunction function = rule.debtRemediationFunction(); @@ -217,12 +218,12 @@ public void test_linear_remediation_function() { @Test public void test_linear_with_offset_remediation_function() { String xml = "" + "" + " " + " 1" + " One" - + " Desc" - + " lines" - + " LINEAR_OFFSET" - + " 2d 3h" - + " 5min" + " " - + ""; + + " Desc" + + " lines" + + " LINEAR_OFFSET" + + " 2d 3h" + + " 5min" + " " + + ""; RulesDefinition.Rule rule = load(xml).rule("1"); assertThat(rule.gapDescription()).isEqualTo("lines"); DebtRemediationFunction function = rule.debtRemediationFunction(); @@ -235,10 +236,10 @@ public void test_linear_with_offset_remediation_function() { @Test public void test_constant_remediation_function() { String xml = "" + "" + " " + " 1" + " One" - + " Desc" - + " CONSTANT_ISSUE" - + " 5min" + " " - + ""; + + " Desc" + + " CONSTANT_ISSUE" + + " 5min" + " " + + ""; RulesDefinition.Rule rule = load(xml).rule("1"); DebtRemediationFunction function = rule.debtRemediationFunction(); assertThat(function).isNotNull(); @@ -250,30 +251,20 @@ public void test_constant_remediation_function() { @Test public void fail_if_invalid_remediation_function() { assertThatThrownBy(() -> load("" + "" + " " + " 1" + " One" - + " Desc" - + " UNKNOWN" + " " - + "")) + + " Desc" + + " UNKNOWN" + " " + + "")) .isInstanceOf(IllegalStateException.class) .hasMessage("Fail to load the rule with key [squid:1]") .hasCauseInstanceOf(IllegalArgumentException.class) .hasRootCauseMessage("No enum constant org.sonar.api.server.debt.DebtRemediationFunction.Type.UNKNOWN"); } - @Test - public void markdown_description() { - String xml = "" + "" + " " + " 1" + " One" - + " Desc" + " MARKDOWN" - + " " + ""; - RulesDefinition.Rule rule = load(xml).rule("1"); - assertThat(rule.markdownDescription()).isEqualTo("Desc"); - assertThat(rule.htmlDescription()).isNull(); - } - @Test public void fail_if_unsupported_description_format() { String xml = "" + "" + " " + " 1" + " One" - + " Desc" + " UNKNOWN" - + " " + ""; + + " Desc" + " UNKNOWN" + + " " + ""; assertThatThrownBy(() -> load(xml).rule("1")) .isInstanceOf(IllegalStateException.class) @@ -286,12 +277,12 @@ public void fail_if_unsupported_description_format() { @Test public void test_deprecated_remediation_function() { String xml = "" + "" + " " + " 1" + " One" - + " Desc" - + " lines" - + " LINEAR_OFFSET" - + " 2d 3h" - + " 5min" + " " - + ""; + + " Desc" + + " lines" + + " LINEAR_OFFSET" + + " 2d 3h" + + " 5min" + " " + + ""; RulesDefinition.Rule rule = load(xml).rule("1"); assertThat(rule.gapDescription()).isEqualTo("lines"); DebtRemediationFunction function = rule.debtRemediationFunction(); diff --git a/cxx-sensors/src/test/java/org/sonar/cxx/sensors/valgrind/ValgrindReportParserTest.java b/cxx-sensors/src/test/java/org/sonar/cxx/sensors/valgrind/ValgrindReportParserTest.java index 6912653008..bc8090ecea 100644 --- a/cxx-sensors/src/test/java/org/sonar/cxx/sensors/valgrind/ValgrindReportParserTest.java +++ b/cxx-sensors/src/test/java/org/sonar/cxx/sensors/valgrind/ValgrindReportParserTest.java @@ -82,10 +82,10 @@ void shouldThrowWhenGivenAnIncompleteReport_1() { File absReportsProject = TestUtils.loadResource("/org/sonar/cxx/sensors/reports-project").getAbsoluteFile(); var absReportFile = new File(absReportsProject, "valgrind-reports/incorrect-valgrind-result_1.xml"); - javax.xml.stream.XMLStreamException thrown = catchThrowableOfType(() -> { + javax.xml.stream.XMLStreamException thrown = catchThrowableOfType(javax.xml.stream.XMLStreamException.class, () -> { // error contains no kind-tag parser.parse(absReportFile); - }, javax.xml.stream.XMLStreamException.class); + }); assertThat(thrown).isExactlyInstanceOf(javax.xml.stream.XMLStreamException.class); } @@ -94,10 +94,10 @@ void shouldThrowWhenGivenAnIncompleteReport_2() { File absReportsProject = TestUtils.loadResource("/org/sonar/cxx/sensors/reports-project").getAbsoluteFile(); var absReportFile = new File(absReportsProject, "valgrind-reports/incorrect-valgrind-result_2.xml"); - javax.xml.stream.XMLStreamException thrown = catchThrowableOfType(() -> { + javax.xml.stream.XMLStreamException thrown = catchThrowableOfType(javax.xml.stream.XMLStreamException.class, () -> { // error contains no what- or xwhat-tag parser.parse(absReportFile); - }, javax.xml.stream.XMLStreamException.class); + }); assertThat(thrown).isExactlyInstanceOf(javax.xml.stream.XMLStreamException.class); } @@ -106,10 +106,10 @@ void shouldThrowWhenGivenAnIncompleteReport_3() { File absReportsProject = TestUtils.loadResource("/org/sonar/cxx/sensors/reports-project").getAbsoluteFile(); var absReportFile = new File(absReportsProject, "valgrind-reports/incorrect-valgrind-result_3.xml"); - javax.xml.stream.XMLStreamException thrown = catchThrowableOfType(() -> { + javax.xml.stream.XMLStreamException thrown = catchThrowableOfType(javax.xml.stream.XMLStreamException.class, () -> { // error contains no stack-tag parser.parse(absReportFile); - }, javax.xml.stream.XMLStreamException.class); + }); assertThat(thrown).isExactlyInstanceOf(javax.xml.stream.XMLStreamException.class); } diff --git a/cxx-squid-bridge/src/main/java/org/sonar/cxx/squidbridge/AstScanner.java b/cxx-squid-bridge/src/main/java/org/sonar/cxx/squidbridge/AstScanner.java index bbc7212e61..c7cec5f850 100644 --- a/cxx-squid-bridge/src/main/java/org/sonar/cxx/squidbridge/AstScanner.java +++ b/cxx-squid-bridge/src/main/java/org/sonar/cxx/squidbridge/AstScanner.java @@ -38,8 +38,8 @@ import java.util.List; import javax.annotation.Nullable; import org.sonar.api.batch.fs.InputFile; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.cxx.squidbridge.api.AnalysisException; import org.sonar.cxx.squidbridge.api.SourceCodeSearchEngine; import org.sonar.cxx.squidbridge.api.SourceCodeTreeDecorator; @@ -49,7 +49,7 @@ public class AstScanner { - private static final Logger LOG = Loggers.get(AstScanner.class); + private static final Logger LOG = LoggerFactory.getLogger(AstScanner.class); private final List> visitors; private final Parser parser; diff --git a/cxx-squid-bridge/src/main/java/org/sonar/cxx/squidbridge/annotations/SqaleSubCharacteristic.java b/cxx-squid-bridge/src/main/java/org/sonar/cxx/squidbridge/annotations/SqaleSubCharacteristic.java deleted file mode 100644 index 19e6406251..0000000000 --- a/cxx-squid-bridge/src/main/java/org/sonar/cxx/squidbridge/annotations/SqaleSubCharacteristic.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * C++ Community Plugin (cxx plugin) - * Copyright (C) 2021-2024 SonarOpenCommunity - * http://github.com/SonarOpenCommunity/sonar-cxx - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -/** - * fork of SSLR Squid Bridge: https://github.com/SonarSource/sslr-squid-bridge/tree/2.6.1 - * Copyright (C) 2010 SonarSource / mailto: sonarqube@googlegroups.com / license: LGPL v3 - */ -package org.sonar.cxx.squidbridge.annotations; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.TYPE) -@Deprecated(forRemoval = true) -public @interface SqaleSubCharacteristic { - - public String value(); - -} diff --git a/cxx-squid-bridge/src/main/java/org/sonar/cxx/squidbridge/annotations/Tags.java b/cxx-squid-bridge/src/main/java/org/sonar/cxx/squidbridge/annotations/Tags.java deleted file mode 100644 index a2e3ec6e30..0000000000 --- a/cxx-squid-bridge/src/main/java/org/sonar/cxx/squidbridge/annotations/Tags.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * C++ Community Plugin (cxx plugin) - * Copyright (C) 2021-2024 SonarOpenCommunity - * http://github.com/SonarOpenCommunity/sonar-cxx - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -/** - * fork of SSLR Squid Bridge: https://github.com/SonarSource/sslr-squid-bridge/tree/2.6.1 - * Copyright (C) 2010 SonarSource / mailto: sonarqube@googlegroups.com / license: LGPL v3 - */ -package org.sonar.cxx.squidbridge.annotations; - -/** - * @deprecated since 2.6. Each plugin should define its own list of tags. - */ -@Deprecated(since = "2.6") -public final class Tags { - - public static final String ACCESSIBILITY = "accessibility"; - public static final String ASSEMBLER = "assembler"; - public static final String BRAIN_OVERLOAD = "brain-overload"; - public static final String BUG = "bug"; - public static final String CERT = "cert"; - public static final String CLUMSY = "clumsy"; - public static final String CONVENTION = "convention"; - public static final String CROSS_BROWSER = "cross-browser"; - public static final String CWE = "cwe"; - public static final String ERROR_HANDLING = "error-handling"; - public static final String HTML5 = "html5"; - public static final String JAVA7 = "java7"; - public static final String JAVA8 = "java8"; - public static final String MISRA = "misra"; - public static final String MISRA_C = "misra-c"; - public static final String MISRA_CPP = "misra-c++"; - public static final String MULTI_THREADING = "multi-threading"; - public static final String OBSOLETE = "obsolete"; - public static final String OWASP_TOP10 = "owasp-top10"; - public static final String PERFORMANCE = "performance"; - public static final String PITFALL = "pitfall"; - public static final String PREPROCESSOR = "preprocessor"; - public static final String PSR1 = "psr1"; - public static final String PSR2 = "psr2"; - public static final String SECURITY = "security"; - public static final String SQL = "sql"; - public static final String UNUSED = "unused"; - public static final String USER_EXPERIENCE = "user-experience"; - - private Tags() { - // This class only defines constants - } - -} diff --git a/cxx-squid-bridge/src/main/java/org/sonar/cxx/squidbridge/api/CheckMessage.java b/cxx-squid-bridge/src/main/java/org/sonar/cxx/squidbridge/api/CheckMessage.java index 06485b4494..68f7406724 100644 --- a/cxx-squid-bridge/src/main/java/org/sonar/cxx/squidbridge/api/CheckMessage.java +++ b/cxx-squid-bridge/src/main/java/org/sonar/cxx/squidbridge/api/CheckMessage.java @@ -47,7 +47,6 @@ public CheckMessage(Object check, String message, Object... messageArguments) { /** * @deprecated replaced by the other constructor since 2.12. See SONAR-2875. */ - @Deprecated(since = "2.12") public CheckMessage(CodeCheck check, String message, Object... messageArguments) { this((Object) check, message, messageArguments); } @@ -89,7 +88,6 @@ public boolean isBypassExclusion() { * @deprecated replaced by getCheck() since SQ version 2.12. Warning, to be called only if check is CodeCheck. */ @Override - @Deprecated(since = "2.12") public CodeCheck getChecker() { return (CodeCheck) check; } diff --git a/cxx-squid-bridge/src/main/java/org/sonar/cxx/squidbridge/api/CodeCheck.java b/cxx-squid-bridge/src/main/java/org/sonar/cxx/squidbridge/api/CodeCheck.java index 96e940205b..bcdef55013 100644 --- a/cxx-squid-bridge/src/main/java/org/sonar/cxx/squidbridge/api/CodeCheck.java +++ b/cxx-squid-bridge/src/main/java/org/sonar/cxx/squidbridge/api/CodeCheck.java @@ -26,7 +26,6 @@ /** * @deprecated since SQ version 2.12. See https://jira.codehaus.org/browse/SONAR-2875 */ -@Deprecated(since = "2.12") public interface CodeCheck extends CodeVisitor { String getKey(); diff --git a/cxx-squid-bridge/src/test/java/org/sonar/cxx/squidbridge/annotations/AnnotationBasedRulesDefinitionTest.java b/cxx-squid-bridge/src/test/java/org/sonar/cxx/squidbridge/annotations/AnnotationBasedRulesDefinitionTest.java index 2680a356a6..ff1e826559 100644 --- a/cxx-squid-bridge/src/test/java/org/sonar/cxx/squidbridge/annotations/AnnotationBasedRulesDefinitionTest.java +++ b/cxx-squid-bridge/src/test/java/org/sonar/cxx/squidbridge/annotations/AnnotationBasedRulesDefinitionTest.java @@ -52,9 +52,9 @@ void no_class_to_add() throws Exception { void class_without_rule_annotation() throws Exception { class NotRuleClass { } - IllegalArgumentException thrown = catchThrowableOfType(() -> { + IllegalArgumentException thrown = catchThrowableOfType(IllegalArgumentException.class, () -> { buildSingleRuleRepository(NotRuleClass.class); - }, IllegalArgumentException.class); + }); assertThat(thrown).isExactlyInstanceOf(IllegalArgumentException.class); } @@ -72,7 +72,6 @@ class RuleClass { assertThat(rule.key()).isEqualTo("key1"); assertThat(rule.name()).isEqualTo("name1"); assertThat(rule.htmlDescription()).isEqualTo("description1"); - assertThat(rule.markdownDescription()).isNull(); assertThat(rule.tags()).containsOnly("mytag"); assertThat(rule.template()).isFalse(); assertThat(rule.params()).hasSize(1); @@ -85,16 +84,16 @@ class RuleClassWithoutAnnotationDefinedKey { @Test void rule_without_explicit_key() throws Exception { - IllegalArgumentException thrown = catchThrowableOfType(() -> { + IllegalArgumentException thrown = catchThrowableOfType(IllegalArgumentException.class, () -> { buildSingleRuleRepository(RuleClassWithoutAnnotationDefinedKey.class); - }, IllegalArgumentException.class); + }); assertThat(thrown).isExactlyInstanceOf(IllegalArgumentException.class); } @Test void rule_without_explicit_key_can_be_acceptable() throws Exception { Repository repository = buildRepository(LANGUAGE_KEY_WITH_RESOURCE_BUNDLE, false, false, - RuleClassWithoutAnnotationDefinedKey.class); + RuleClassWithoutAnnotationDefinedKey.class); var rule = repository.rules().get(0); assertThat(rule.key()).isEqualTo(RuleClassWithoutAnnotationDefinedKey.class.getCanonicalName()); assertThat(rule.name()).isEqualTo("name1"); @@ -126,9 +125,9 @@ void no_name_and_no_resource_bundle() throws Exception { @Rule(key = "ruleWithExternalInfo") class RuleClass { } - IllegalStateException thrown = catchThrowableOfType(() -> { + IllegalStateException thrown = catchThrowableOfType(IllegalStateException.class, () -> { buildRepository("languageWithoutBundle", false, false, RuleClass.class); - }, IllegalStateException.class); + }); assertThat(thrown).isExactlyInstanceOf(IllegalStateException.class); } @@ -159,9 +158,9 @@ void cardinality_multiple() throws Exception { @Rule(key = "key1", name = "name1", description = "description1", cardinality = Cardinality.MULTIPLE) class RuleClass { } - IllegalArgumentException thrown = catchThrowableOfType(() -> { + IllegalArgumentException thrown = catchThrowableOfType(IllegalArgumentException.class, () -> { buildSingleRuleRepository(RuleClass.class); - }, IllegalArgumentException.class); + }); assertThat(thrown).isExactlyInstanceOf(IllegalArgumentException.class); } @@ -170,9 +169,9 @@ void class_without_sqale_annotation() throws Exception { @Rule(key = "key1", name = "name1", description = "description1") class RuleClass { } - IllegalArgumentException thrown = catchThrowableOfType(() -> { + IllegalArgumentException thrown = catchThrowableOfType(IllegalArgumentException.class, () -> { buildRepository(true, RuleClass.class); - }, IllegalArgumentException.class); + }); assertThat(thrown).isExactlyInstanceOf(IllegalArgumentException.class); } @@ -217,7 +216,7 @@ void class_with_sqale_linear_with_offset_remediation() throws Exception { @Rule(key = "key1", name = "name1", description = "description1") @SqaleLinearWithOffsetRemediation(coeff = "5min", offset = "1h", - effortToFixDescription = "Effort to test one uncovered condition") + effortToFixDescription = "Effort to test one uncovered condition") class RuleClass { } @@ -232,9 +231,9 @@ void class_with_several_sqale_remediation_annotations() throws Exception { @SqaleLinearRemediation(coeff = "2h", effortToFixDescription = "Effort to test one uncovered condition") class RuleClass { } - IllegalArgumentException thrown = catchThrowableOfType(() -> { + IllegalArgumentException thrown = catchThrowableOfType(IllegalArgumentException.class, () -> { buildSingleRuleRepository(RuleClass.class); - }, IllegalArgumentException.class); + }); assertThat(thrown).isExactlyInstanceOf(IllegalArgumentException.class); } @@ -244,9 +243,9 @@ void invalid_sqale_annotation() throws Exception { @SqaleConstantRemediation("xxx") class MyInvalidRuleClass { } - IllegalArgumentException thrown = catchThrowableOfType(() -> { + IllegalArgumentException thrown = catchThrowableOfType(IllegalArgumentException.class, () -> { buildSingleRuleRepository(MyInvalidRuleClass.class); - }, IllegalArgumentException.class); + }); assertThat(thrown) .isExactlyInstanceOf(IllegalArgumentException.class) .hasMessageContaining("MyInvalidRuleClass"); @@ -259,9 +258,9 @@ class RuleClass { } var newRepository = context.createRepository(REPO_KEY, "language1"); var rulesDef = new AnnotationBasedRulesDefinition(newRepository, "language1"); - IllegalStateException thrown = catchThrowableOfType(() -> { + IllegalStateException thrown = catchThrowableOfType(IllegalStateException.class, () -> { rulesDef.newRule(RuleClass.class, false); - }, IllegalStateException.class); + }); assertThat(thrown).isExactlyInstanceOf(IllegalStateException.class); } @@ -270,9 +269,9 @@ void load_method_with_class_without_sqale_annotation() throws Exception { @Rule(key = "key1", name = "name1", description = "description1") class RuleClass { } - IllegalArgumentException thrown = catchThrowableOfType(() -> { + IllegalArgumentException thrown = catchThrowableOfType(IllegalArgumentException.class, () -> { load(RuleClass.class); - }, IllegalArgumentException.class); + }); assertThat(thrown).isExactlyInstanceOf(IllegalArgumentException.class); } @@ -312,7 +311,7 @@ private Repository buildRepository(boolean failIfSqaleNotFound, Class... clas } private Repository buildRepository(String languageKey, boolean failIfSqaleNotFound, boolean failIfNoExplicitKey, - Class... classes) { + Class... classes) { NewRepository newRepository = createRepository(languageKey); new AnnotationBasedRulesDefinition(newRepository, languageKey) .addRuleClasses(failIfSqaleNotFound, failIfNoExplicitKey, ImmutableList.copyOf(classes)); diff --git a/cxx-squid-bridge/src/test/java/org/sonar/cxx/squidbridge/checks/AbstractCommentRegularExpressionCheckTest.java b/cxx-squid-bridge/src/test/java/org/sonar/cxx/squidbridge/checks/AbstractCommentRegularExpressionCheckTest.java index d63126bee7..1e566c987e 100644 --- a/cxx-squid-bridge/src/test/java/org/sonar/cxx/squidbridge/checks/AbstractCommentRegularExpressionCheckTest.java +++ b/cxx-squid-bridge/src/test/java/org/sonar/cxx/squidbridge/checks/AbstractCommentRegularExpressionCheckTest.java @@ -81,9 +81,9 @@ void case_sensitive() { @Test void wrong_regular_expression() { check.regularExpression = "*"; - IllegalStateException thrown = catchThrowableOfType(() -> { + IllegalStateException thrown = catchThrowableOfType(IllegalStateException.class, () -> { scanFile("/checks/commentRegularExpression.mc", check); - }, IllegalStateException.class); + }); assertThat(thrown) .isExactlyInstanceOf(IllegalStateException.class) .hasMessage("Unable to compile regular expression: *"); diff --git a/cxx-squid-bridge/src/test/java/org/sonar/cxx/squidbridge/checks/AbstractOneStatementPerLineCheckTest.java b/cxx-squid-bridge/src/test/java/org/sonar/cxx/squidbridge/checks/AbstractOneStatementPerLineCheckTest.java index a84b5c02b0..888137a650 100644 --- a/cxx-squid-bridge/src/test/java/org/sonar/cxx/squidbridge/checks/AbstractOneStatementPerLineCheckTest.java +++ b/cxx-squid-bridge/src/test/java/org/sonar/cxx/squidbridge/checks/AbstractOneStatementPerLineCheckTest.java @@ -43,7 +43,7 @@ public AstNodeType getStatementRule() { @Override public boolean isExcluded(AstNode statementNode) { - return statementNode.getChild(0).is(MiniCGrammar.COMPOUND_STATEMENT); + return statementNode.getFirstChild().is(MiniCGrammar.COMPOUND_STATEMENT); } } diff --git a/cxx-squid-bridge/src/test/java/org/sonar/cxx/squidbridge/checks/AbstractXPathCheckTest.java b/cxx-squid-bridge/src/test/java/org/sonar/cxx/squidbridge/checks/AbstractXPathCheckTest.java index 1be235c7d7..86c6629dbb 100644 --- a/cxx-squid-bridge/src/test/java/org/sonar/cxx/squidbridge/checks/AbstractXPathCheckTest.java +++ b/cxx-squid-bridge/src/test/java/org/sonar/cxx/squidbridge/checks/AbstractXPathCheckTest.java @@ -96,9 +96,9 @@ void parse_error() { @Test void wrong_xpath() { check.xpath = "//"; - IllegalStateException thrown = catchThrowableOfType(() -> { + IllegalStateException thrown = catchThrowableOfType(IllegalStateException.class, () -> { scanFile("/checks/xpath.mc", check); - }, IllegalStateException.class); + }); assertThat(thrown) .isExactlyInstanceOf(IllegalStateException.class) .hasMessage("Unable to initialize the XPath engine, perhaps because of an invalid query: //"); diff --git a/cxx-squid-bridge/src/test/java/org/sonar/cxx/squidbridge/checks/CheckMessagesVerifierRuleTest.java b/cxx-squid-bridge/src/test/java/org/sonar/cxx/squidbridge/checks/CheckMessagesVerifierRuleTest.java index 4fddcd5d42..47dc0126a6 100644 --- a/cxx-squid-bridge/src/test/java/org/sonar/cxx/squidbridge/checks/CheckMessagesVerifierRuleTest.java +++ b/cxx-squid-bridge/src/test/java/org/sonar/cxx/squidbridge/checks/CheckMessagesVerifierRuleTest.java @@ -52,11 +52,11 @@ void shouldFailIfFirstVerificationFailed() { Collection messages = Arrays.asList(mock(CheckMessage.class)); var rule = new CheckMessagesVerifierRule(); - AssertionError thrown = catchThrowableOfType(() -> { + AssertionError thrown = catchThrowableOfType(AssertionError.class, () -> { rule.verify(messages); rule.verify(Collections.EMPTY_LIST); rule.verify(); - }, AssertionError.class); + }); assertThat(thrown) .isExactlyInstanceOf(AssertionError.class) .hasMessageContaining("\nNo more violations expected\ngot:"); @@ -67,11 +67,11 @@ void shouldFailIfSecondVerificationFailed() { Collection messages = Arrays.asList(mock(CheckMessage.class)); var rule = new CheckMessagesVerifierRule(); - AssertionError thrown = catchThrowableOfType(() -> { + AssertionError thrown = catchThrowableOfType(AssertionError.class, () -> { rule.verify(Collections.EMPTY_LIST); rule.verify(messages); rule.verify(); - }, AssertionError.class); + }); assertThat(thrown) .isExactlyInstanceOf(AssertionError.class) .hasMessageContaining("\nNo more violations expected\ngot:"); diff --git a/cxx-squid-bridge/src/test/java/org/sonar/cxx/squidbridge/checks/CheckMessagesVerifierTest.java b/cxx-squid-bridge/src/test/java/org/sonar/cxx/squidbridge/checks/CheckMessagesVerifierTest.java index 2002153ef4..ed9bbd13a0 100644 --- a/cxx-squid-bridge/src/test/java/org/sonar/cxx/squidbridge/checks/CheckMessagesVerifierTest.java +++ b/cxx-squid-bridge/src/test/java/org/sonar/cxx/squidbridge/checks/CheckMessagesVerifierTest.java @@ -38,10 +38,10 @@ class CheckMessagesVerifierTest { @Test void next() { - AssertionError thrown = catchThrowableOfType(() -> { + AssertionError thrown = catchThrowableOfType(AssertionError.class, () -> { CheckMessagesVerifier.verify(Collections.EMPTY_LIST) .next(); - }, AssertionError.class); + }); assertThat(thrown) .isExactlyInstanceOf(AssertionError.class) .hasMessage("\nExpected violation"); @@ -51,10 +51,10 @@ void next() { void noMore() { Collection messages = Arrays.asList(mockCheckMessage(1, "foo")); - AssertionError thrown = catchThrowableOfType(() -> { + AssertionError thrown = catchThrowableOfType(AssertionError.class, () -> { CheckMessagesVerifier.verify(messages) .noMore(); - }, AssertionError.class); + }); assertThat(thrown) .isExactlyInstanceOf(AssertionError.class) .hasMessage("\nNo more violations expected\ngot: at line 1"); @@ -64,10 +64,10 @@ void noMore() { void line() { Collection messages = Arrays.asList(mockCheckMessage(1, "foo")); - AssertionError thrown = catchThrowableOfType(() -> { + AssertionError thrown = catchThrowableOfType(AssertionError.class, () -> { CheckMessagesVerifier.verify(messages) .next().atLine(2); - }, AssertionError.class); + }); assertThat(thrown) .isExactlyInstanceOf(AssertionError.class) .hasMessage("\nExpected: 2\ngot: 1"); @@ -77,10 +77,10 @@ void line() { void line_withoutHasNext() { Collection messages = Arrays.asList(mockCheckMessage(1, "foo")); - IllegalStateException thrown = catchThrowableOfType(() -> { + IllegalStateException thrown = catchThrowableOfType(IllegalStateException.class, () -> { CheckMessagesVerifier.verify(messages) .atLine(2); - }, IllegalStateException.class); + }); assertThat(thrown) .isExactlyInstanceOf(IllegalStateException.class) .hasMessage("Prior to this method you should call next()"); @@ -90,10 +90,10 @@ void line_withoutHasNext() { void withMessage() { Collection messages = Arrays.asList(mockCheckMessage(1, "foo")); - AssertionError thrown = catchThrowableOfType(() -> { + AssertionError thrown = catchThrowableOfType(AssertionError.class, () -> { CheckMessagesVerifier.verify(messages) .next().atLine(1).withMessage("bar"); - }, AssertionError.class); + }); assertThat(thrown) .isExactlyInstanceOf(AssertionError.class) .asString().contains("Expected: \"bar\"", "got: \"foo\""); @@ -103,10 +103,10 @@ void withMessage() { void withMessage_withoutHasNext() { Collection messages = Arrays.asList(mockCheckMessage(1, "foo")); - IllegalStateException thrown = catchThrowableOfType(() -> { + IllegalStateException thrown = catchThrowableOfType(IllegalStateException.class, () -> { CheckMessagesVerifier.verify(messages) .withMessage("foo"); - }, IllegalStateException.class); + }); assertThat(thrown) .isExactlyInstanceOf(IllegalStateException.class) .hasMessage("Prior to this method you should call next()"); @@ -116,10 +116,10 @@ void withMessage_withoutHasNext() { void withMessageContaining() { Collection messages = Arrays.asList(mockCheckMessage(1, "foo")); - AssertionError thrown = catchThrowableOfType(() -> { + AssertionError thrown = catchThrowableOfType(AssertionError.class, () -> { CheckMessagesVerifier.verify(messages) .next().atLine(1).withMessageContaining("bar"); - }, AssertionError.class); + }); assertThat(thrown) .isExactlyInstanceOf(AssertionError.class) .hasMessage("\nExpected: a string containing \"bar\"\ngot: \"foo\""); @@ -129,10 +129,10 @@ void withMessageContaining() { void withCost() { Collection messages = Arrays.asList(mockCheckMessage(1, "foo", 0d)); - AssertionError thrown = catchThrowableOfType(() -> { + AssertionError thrown = catchThrowableOfType(AssertionError.class, () -> { CheckMessagesVerifier.verify(messages) .next().withCost(1d); - }, AssertionError.class); + }); assertThat(thrown) .isExactlyInstanceOf(AssertionError.class) .asString().contains("Expected: 1.0", "got: 0.0"); diff --git a/cxx-squid-bridge/src/test/java/org/sonar/cxx/squidbridge/checks/ChecksHelperTest.java b/cxx-squid-bridge/src/test/java/org/sonar/cxx/squidbridge/checks/ChecksHelperTest.java index 0dfa7d91d1..911b12d3f4 100644 --- a/cxx-squid-bridge/src/test/java/org/sonar/cxx/squidbridge/checks/ChecksHelperTest.java +++ b/cxx-squid-bridge/src/test/java/org/sonar/cxx/squidbridge/checks/ChecksHelperTest.java @@ -31,7 +31,7 @@ class ChecksHelperTest { @Test void private_constructor() throws Exception { var constructor = ChecksHelper.class.getDeclaredConstructor(); - assertThat(constructor.isAccessible()).isFalse(); + assertThat(constructor.canAccess(null)).isFalse(); constructor.setAccessible(true); constructor.newInstance(); } diff --git a/cxx-squid-bridge/src/test/java/org/sonar/cxx/squidbridge/rules/ExternalDescriptionLoaderTest.java b/cxx-squid-bridge/src/test/java/org/sonar/cxx/squidbridge/rules/ExternalDescriptionLoaderTest.java index a2ada4033b..3ad6c10b60 100644 --- a/cxx-squid-bridge/src/test/java/org/sonar/cxx/squidbridge/rules/ExternalDescriptionLoaderTest.java +++ b/cxx-squid-bridge/src/test/java/org/sonar/cxx/squidbridge/rules/ExternalDescriptionLoaderTest.java @@ -58,9 +58,9 @@ void rule_with_non_external_description() throws Exception { void rule_without_description() { repository.createRule("ruleWithoutExternalInfo").setName("name1"); - IllegalStateException thrown = catchThrowableOfType(() -> { + IllegalStateException thrown = catchThrowableOfType(IllegalStateException.class, () -> { buildRepository().rule("ruleWithoutExternalInfo"); - }, IllegalStateException.class); + }); assertThat(thrown).isExactlyInstanceOf(IllegalStateException.class); } @@ -69,9 +69,9 @@ void invalid_url() { var loader = new ExternalDescriptionLoader(repository, LANGUAGE_KEY); var rule = repository.createRule("ruleWithoutExternalInfo").setName("name1"); - IllegalStateException thrown = catchThrowableOfType(() -> { + IllegalStateException thrown = catchThrowableOfType(IllegalStateException.class, () -> { loader.addHtmlDescription(rule, new URL("file:///xx/yy")); - }, IllegalStateException.class); + }); assertThat(thrown).isExactlyInstanceOf(IllegalStateException.class); } diff --git a/cxx-squid/src/main/java/org/sonar/cxx/AggregateMeasureComputer.java b/cxx-squid/src/main/java/org/sonar/cxx/AggregateMeasureComputer.java index 9e855f2c97..0fd867ff97 100644 --- a/cxx-squid/src/main/java/org/sonar/cxx/AggregateMeasureComputer.java +++ b/cxx-squid/src/main/java/org/sonar/cxx/AggregateMeasureComputer.java @@ -22,8 +22,8 @@ import org.sonar.api.ce.measure.Component; import org.sonar.api.ce.measure.Measure; import org.sonar.api.ce.measure.MeasureComputer; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * SonarQube supports hierarchical multi-module projects. It is not enough to calculate a metric M for the file and/or @@ -41,7 +41,7 @@ */ public class AggregateMeasureComputer implements MeasureComputer { - private static final Logger LOG = Loggers.get(AggregateMeasureComputer.class); + private static final Logger LOG = LoggerFactory.getLogger(AggregateMeasureComputer.class); private final String[] metricKeys; diff --git a/cxx-squid/src/main/java/org/sonar/cxx/DensityMeasureComputer.java b/cxx-squid/src/main/java/org/sonar/cxx/DensityMeasureComputer.java index 2cfcd3d1db..ea9e467aaa 100644 --- a/cxx-squid/src/main/java/org/sonar/cxx/DensityMeasureComputer.java +++ b/cxx-squid/src/main/java/org/sonar/cxx/DensityMeasureComputer.java @@ -21,8 +21,8 @@ import org.sonar.api.ce.measure.MeasureComputer; import org.sonar.api.measures.CoreMetrics; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * SonarQube supports hierarchical multi-module projects. It is not enough to calculate a metric M for the file and/or @@ -40,7 +40,7 @@ */ public class DensityMeasureComputer implements MeasureComputer { - private static final Logger LOG = Loggers.get(DensityMeasureComputer.class); + private static final Logger LOG = LoggerFactory.getLogger(DensityMeasureComputer.class); private final String[] inputMetrics; private final String[] outputMetrics; diff --git a/cxx-squid/src/main/java/org/sonar/cxx/config/CxxSquidConfiguration.java b/cxx-squid/src/main/java/org/sonar/cxx/config/CxxSquidConfiguration.java index 48982312cf..49d647476a 100644 --- a/cxx-squid/src/main/java/org/sonar/cxx/config/CxxSquidConfiguration.java +++ b/cxx-squid/src/main/java/org/sonar/cxx/config/CxxSquidConfiguration.java @@ -50,8 +50,8 @@ import org.jdom2.xpath.XPathExpression; import org.jdom2.xpath.XPathFactory; import org.sonar.api.utils.PathUtils; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.cxx.squidbridge.api.SquidConfiguration; /** @@ -130,7 +130,7 @@ public class CxxSquidConfiguration extends SquidConfiguration { public static final String INCLUDE_DIRECTORIES = "IncludeDirectories"; public static final String FORCE_INCLUDES = "ForceIncludes"; - private static final Logger LOG = Loggers.get(CxxSquidConfiguration.class); + private static final Logger LOG = LoggerFactory.getLogger(CxxSquidConfiguration.class); // case-sensitive filesystem or not private static boolean isCaseSensitive = true; diff --git a/cxx-squid/src/main/java/org/sonar/cxx/config/JsonCompilationDatabase.java b/cxx-squid/src/main/java/org/sonar/cxx/config/JsonCompilationDatabase.java index ad65aeb5fd..8e7b6978f0 100644 --- a/cxx-squid/src/main/java/org/sonar/cxx/config/JsonCompilationDatabase.java +++ b/cxx-squid/src/main/java/org/sonar/cxx/config/JsonCompilationDatabase.java @@ -28,15 +28,15 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * JsonCompilationDatabase */ public class JsonCompilationDatabase { - private static final Logger LOG = Loggers.get(JsonCompilationDatabase.class); + private static final Logger LOG = LoggerFactory.getLogger(JsonCompilationDatabase.class); private final CxxSquidConfiguration squidConfig; diff --git a/cxx-squid/src/main/java/org/sonar/cxx/config/MsBuild.java b/cxx-squid/src/main/java/org/sonar/cxx/config/MsBuild.java index d1ad7ae4bf..9657113be4 100644 --- a/cxx-squid/src/main/java/org/sonar/cxx/config/MsBuild.java +++ b/cxx-squid/src/main/java/org/sonar/cxx/config/MsBuild.java @@ -29,8 +29,8 @@ import java.util.ArrayList; import java.util.List; import java.util.regex.Pattern; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * MsBuild @@ -44,7 +44,7 @@ public class MsBuild { public static final String REPORT_ENCODING_DEF = "sonar.cxx.msbuild.encoding"; public static final String DEFAULT_ENCODING_DEF = StandardCharsets.UTF_8.name(); - private static final Logger LOG = Loggers.get(MsBuild.class); + private static final Logger LOG = LoggerFactory.getLogger(MsBuild.class); private static final String MSC_IX86_600 = "_M_IX86 600"; private static final String MSC_X64_100 = "_M_X64 100"; diff --git a/cxx-squid/src/main/java/org/sonar/cxx/preprocessor/CxxPreprocessor.java b/cxx-squid/src/main/java/org/sonar/cxx/preprocessor/CxxPreprocessor.java index 1cdc9cb875..2712edf12f 100644 --- a/cxx-squid/src/main/java/org/sonar/cxx/preprocessor/CxxPreprocessor.java +++ b/cxx-squid/src/main/java/org/sonar/cxx/preprocessor/CxxPreprocessor.java @@ -39,8 +39,8 @@ import java.util.Map; import java.util.Optional; import javax.annotation.CheckForNull; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.cxx.config.CxxSquidConfiguration; import org.sonar.cxx.parser.CxxKeyword; import org.sonar.cxx.parser.CxxLexerPool; @@ -81,7 +81,7 @@ */ public class CxxPreprocessor extends Preprocessor { - private static final Logger LOG = Loggers.get(CxxPreprocessor.class); + private static final Logger LOG = LoggerFactory.getLogger(CxxPreprocessor.class); private static final String MISSING_INCLUDE_MSG = "Preprocessor: {} include directive error(s). " + "This is only relevant if parser creates syntax errors." diff --git a/cxx-squid/src/main/java/org/sonar/cxx/preprocessor/PPConcatenation.java b/cxx-squid/src/main/java/org/sonar/cxx/preprocessor/PPConcatenation.java index a67e61742e..92d1ab340c 100644 --- a/cxx-squid/src/main/java/org/sonar/cxx/preprocessor/PPConcatenation.java +++ b/cxx-squid/src/main/java/org/sonar/cxx/preprocessor/PPConcatenation.java @@ -24,8 +24,8 @@ import com.sonar.cxx.sslr.api.TokenType; import java.util.ArrayList; import java.util.List; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * A ## operator between any two successive identifiers in the replacement-list runs parameter replacement on the two @@ -36,7 +36,7 @@ */ final class PPConcatenation { - private static final Logger LOG = Loggers.get(PPConcatenation.class); + private static final Logger LOG = LoggerFactory.getLogger(PPConcatenation.class); private PPConcatenation() { diff --git a/cxx-squid/src/main/java/org/sonar/cxx/preprocessor/PPExpression.java b/cxx-squid/src/main/java/org/sonar/cxx/preprocessor/PPExpression.java index 85f89c65ae..9122a346ff 100644 --- a/cxx-squid/src/main/java/org/sonar/cxx/preprocessor/PPExpression.java +++ b/cxx-squid/src/main/java/org/sonar/cxx/preprocessor/PPExpression.java @@ -32,8 +32,8 @@ import java.util.List; import javax.annotation.CheckForNull; import javax.annotation.Nullable; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.cxx.parser.CxxTokenType; /** @@ -105,7 +105,7 @@ */ final class PPExpression { - private static final Logger LOG = Loggers.get(PPExpression.class); + private static final Logger LOG = LoggerFactory.getLogger(PPExpression.class); private static final BigInteger UINT64_MAX = new BigInteger("FFFFFFFFFFFFFFFF", 16); diff --git a/cxx-squid/src/main/java/org/sonar/cxx/preprocessor/PPInclude.java b/cxx-squid/src/main/java/org/sonar/cxx/preprocessor/PPInclude.java index 1c0c4fa924..83d71b037f 100644 --- a/cxx-squid/src/main/java/org/sonar/cxx/preprocessor/PPInclude.java +++ b/cxx-squid/src/main/java/org/sonar/cxx/preprocessor/PPInclude.java @@ -38,20 +38,17 @@ import javax.annotation.Nonnull; import org.apache.commons.io.ByteOrderMark; import org.apache.commons.io.input.BOMInputStream; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** - * Includes other source file into current source file at the line immediately after the directive. - * - * #include < h-char-sequence > new-line (1) - * #include " q-char-sequence " new-line (2) - * #include pp-tokens new-line (3) + * Includes other source file into current source file at the line immediately after the directive. + * #include < h-char-sequence > new-line (1) #include " q-char-sequence " new-line (2) #include pp-tokens new-line (3) * */ public class PPInclude { - private static final Logger LOG = Loggers.get(PPInclude.class); + private static final Logger LOG = LoggerFactory.getLogger(PPInclude.class); private static final String LOGMSG = "preprocessor: {} '{}'"; private final CxxPreprocessor pp; @@ -75,8 +72,7 @@ public PPState state() { /** * Define the standard include directories for form (1). * - * Hints: - * - directories that do not exist are not included in the list to optimize the subsequent search + * Hints: - directories that do not exist are not included in the list to optimize the subsequent search * * @param includeDirs standard include directories * @param baseDir in case directories are relative, they are made absolute to baseDir @@ -120,7 +116,7 @@ public void handleFile(AstNode ast, Token token) { missingFileCounter++; String rootFilePath = state().getFileUnderAnalysisPath(); LOG.debug("[" + rootFilePath + ":" + token.getLine() + "]: preprocessor cannot find include file '" - + token.getValue() + "'"); + + token.getValue() + "'"); } else if (analysedFiles.add(fileName)) { state().pushFileState(fileName); try { @@ -182,10 +178,8 @@ public Path searchFile(AstNode ast) { * The intent of syntax (2) is to search for the files that are not controlled by the implementation. Typical * implementations first search the directory where the current file resides then falls back to (1). * - * search order: - * - Absolute path names are used without modification. Only the specified path is searched. - * - if quoted, search quoted (fallback bracketed form) - * - search bracketed form + * search order: - Absolute path names are used without modification. Only the specified path is searched. - if + * quoted, search quoted (fallback bracketed form) - search bracketed form * * @param fileName filename to search for * @param quoted true if quoted include filename (else bracketed filename) @@ -224,12 +218,17 @@ public Path searchFile(String fileName, boolean quoted) { * @return returns the contents of the file */ public String getSourceCode(Path fileName, Charset defaultCharset) throws IOException { - try (var bomInputStream = new BOMInputStream(new FileInputStream(fileName.toFile()), - ByteOrderMark.UTF_8, - ByteOrderMark.UTF_16LE, - ByteOrderMark.UTF_16BE, - ByteOrderMark.UTF_32LE, - ByteOrderMark.UTF_32BE)) { + try (var bomInputStream = BOMInputStream.builder() + .setInputStream(new FileInputStream(fileName.toFile())) + .setInclude(false) + .setByteOrderMarks( + ByteOrderMark.UTF_8, + ByteOrderMark.UTF_16LE, + ByteOrderMark.UTF_16BE, + ByteOrderMark.UTF_32LE, + ByteOrderMark.UTF_32BE + ) + .get()) { var bom = bomInputStream.getBOM(); Charset charset = bom != null ? Charset.forName(bom.getCharsetName()) : defaultCharset; byte[] bytes = bomInputStream.readAllBytes(); @@ -264,12 +263,10 @@ private Path searchBracketed(Path fileName) { * the search fails, the directive is reprocessed as if it reads syntax (1) with the identical contained sequence * (including > characters, if any) from the original directive. * - * Searches for include files in this order: - * 1. In the same directory as the file that contains the #include statement. - * 2. In the directories of the currently opened include files, in the reverse order in which they were opened. The - * search begins in the directory of the parent include file and continues upward through the directories of any - * grandparent include files. - * 3. Fallback to use standard include directories of bracketed form (1). + * Searches for include files in this order: 1. In the same directory as the file that contains the #include + * statement. 2. In the directories of the currently opened include files, in the reverse order in which they were + * opened. The search begins in the directory of the parent include file and continues upward through the directories + * of any grandparent include files. 3. Fallback to use standard include directories of bracketed form (1). */ @CheckForNull private Path searchQuoted(Path fileName) { @@ -350,8 +347,8 @@ private Path includeBodyFreeform(AstNode includeBody) { * Tests whether a file exists. * * @param fileName the path to the file to test - * @return {@code true} if the file exists; {@code false} if the file does not exist or - * its existence cannot be determined. + * @return {@code true} if the file exists; {@code false} if the file does not exist or its existence cannot be + * determined. */ private boolean exists(Path fileName) { return pp.exists(fileName); diff --git a/cxx-squid/src/main/java/org/sonar/cxx/visitors/AbstractCxxPublicApiVisitor.java b/cxx-squid/src/main/java/org/sonar/cxx/visitors/AbstractCxxPublicApiVisitor.java index decd97107d..e21b012add 100644 --- a/cxx-squid/src/main/java/org/sonar/cxx/visitors/AbstractCxxPublicApiVisitor.java +++ b/cxx-squid/src/main/java/org/sonar/cxx/visitors/AbstractCxxPublicApiVisitor.java @@ -28,8 +28,8 @@ import java.util.List; import java.util.stream.Collectors; import javax.annotation.CheckForNull; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.cxx.parser.CxxGrammarImpl; import org.sonar.cxx.parser.CxxKeyword; import org.sonar.cxx.parser.CxxPunctuator; @@ -68,7 +68,7 @@ */ public abstract class AbstractCxxPublicApiVisitor extends SquidCheck { - private static final Logger LOG = Loggers.get(AbstractCxxPublicApiVisitor.class); + private static final Logger LOG = LoggerFactory.getLogger(AbstractCxxPublicApiVisitor.class); /** * Dump the AST of the file if true. diff --git a/cxx-squid/src/main/java/org/sonar/cxx/visitors/CxxFunctionComplexityVisitor.java b/cxx-squid/src/main/java/org/sonar/cxx/visitors/CxxFunctionComplexityVisitor.java index 8be9905ffd..9177baf064 100644 --- a/cxx-squid/src/main/java/org/sonar/cxx/visitors/CxxFunctionComplexityVisitor.java +++ b/cxx-squid/src/main/java/org/sonar/cxx/visitors/CxxFunctionComplexityVisitor.java @@ -21,8 +21,8 @@ import com.sonar.cxx.sslr.api.AstNode; import com.sonar.cxx.sslr.api.Grammar; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.cxx.api.CxxMetric; import org.sonar.cxx.config.CxxSquidConfiguration; import org.sonar.cxx.parser.CxxGrammarImpl; @@ -33,7 +33,7 @@ public class CxxFunctionComplexityVisitor extends SquidAstVisitor { - private static final Logger LOG = Loggers.get(CxxFunctionComplexityVisitor.class); + private static final Logger LOG = LoggerFactory.getLogger(CxxFunctionComplexityVisitor.class); private final int cyclomaticComplexityThreshold; diff --git a/cxx-squid/src/main/java/org/sonar/cxx/visitors/CxxFunctionSizeVisitor.java b/cxx-squid/src/main/java/org/sonar/cxx/visitors/CxxFunctionSizeVisitor.java index 36b26668bc..a3aeeea0f5 100644 --- a/cxx-squid/src/main/java/org/sonar/cxx/visitors/CxxFunctionSizeVisitor.java +++ b/cxx-squid/src/main/java/org/sonar/cxx/visitors/CxxFunctionSizeVisitor.java @@ -21,8 +21,8 @@ import com.sonar.cxx.sslr.api.AstNode; import com.sonar.cxx.sslr.api.Grammar; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.cxx.api.CxxMetric; import org.sonar.cxx.config.CxxSquidConfiguration; import org.sonar.cxx.parser.CxxGrammarImpl; @@ -32,7 +32,7 @@ public class CxxFunctionSizeVisitor extends SquidAstVisitor { - private static final Logger LOG = Loggers.get(CxxFunctionSizeVisitor.class); + private static final Logger LOG = LoggerFactory.getLogger(CxxFunctionSizeVisitor.class); private int sizeThreshold = 0; diff --git a/cxx-squid/src/main/java/org/sonar/cxx/visitors/CxxParseErrorLoggerVisitor.java b/cxx-squid/src/main/java/org/sonar/cxx/visitors/CxxParseErrorLoggerVisitor.java index 5f000db403..eda3c27be9 100644 --- a/cxx-squid/src/main/java/org/sonar/cxx/visitors/CxxParseErrorLoggerVisitor.java +++ b/cxx-squid/src/main/java/org/sonar/cxx/visitors/CxxParseErrorLoggerVisitor.java @@ -23,8 +23,8 @@ import com.sonar.cxx.sslr.api.GenericTokenType; import com.sonar.cxx.sslr.api.Grammar; import java.util.List; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.cxx.parser.CxxGrammarImpl; import org.sonar.cxx.parser.CxxPunctuator; import org.sonar.cxx.squidbridge.SquidAstVisitor; @@ -36,7 +36,7 @@ public class CxxParseErrorLoggerVisitor extends SquidAs + "Syntax errors could cause invalid software metric values." + " Root cause are typically missing includes, " + "missing macros or compiler specific extensions."; - private static final Logger LOG = Loggers.get(CxxParseErrorLoggerVisitor.class); + private static final Logger LOG = LoggerFactory.getLogger(CxxParseErrorLoggerVisitor.class); private static int errors = 0; public static void finalReport() { diff --git a/cxx-squid/src/main/java/org/sonar/cxx/visitors/CxxPublicApiVisitor.java b/cxx-squid/src/main/java/org/sonar/cxx/visitors/CxxPublicApiVisitor.java index 8cbad3c131..f2a063d171 100644 --- a/cxx-squid/src/main/java/org/sonar/cxx/visitors/CxxPublicApiVisitor.java +++ b/cxx-squid/src/main/java/org/sonar/cxx/visitors/CxxPublicApiVisitor.java @@ -26,8 +26,8 @@ import com.sonar.cxx.sslr.api.Token; import java.util.Arrays; import java.util.List; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.cxx.api.CxxMetric; import org.sonar.cxx.config.CxxSquidConfiguration; import org.sonar.cxx.squidbridge.api.SourceFile; @@ -74,7 +74,7 @@ public class CxxPublicApiVisitor extends AbstractCxxPublicApi */ public static final String API_DEFAULT_FILE_SUFFIXES = ".hxx,.hpp,.hh,.h"; - private static final Logger LOG = Loggers.get(CxxPublicApiVisitor.class); + private static final Logger LOG = LoggerFactory.getLogger(CxxPublicApiVisitor.class); private int publicApiCounter; private int undocumentedApiCounter; diff --git a/cxx-squid/src/test/java/org/sonar/cxx/CxxFileTesterHelper.java b/cxx-squid/src/test/java/org/sonar/cxx/CxxFileTesterHelper.java index 9fe008b694..5343eeb815 100644 --- a/cxx-squid/src/test/java/org/sonar/cxx/CxxFileTesterHelper.java +++ b/cxx-squid/src/test/java/org/sonar/cxx/CxxFileTesterHelper.java @@ -69,12 +69,17 @@ private static DefaultInputFile createInputFile(String moduleKey, String fileNam } private static String getSourceCode(File filename, Charset defaultCharset) throws IOException { - try (var bomInputStream = new BOMInputStream(new FileInputStream(filename), - ByteOrderMark.UTF_8, - ByteOrderMark.UTF_16LE, - ByteOrderMark.UTF_16BE, - ByteOrderMark.UTF_32LE, - ByteOrderMark.UTF_32BE)) { + try (var bomInputStream = BOMInputStream.builder() + .setInputStream(new FileInputStream(filename)) + .setInclude(false) + .setByteOrderMarks( + ByteOrderMark.UTF_8, + ByteOrderMark.UTF_16LE, + ByteOrderMark.UTF_16BE, + ByteOrderMark.UTF_32LE, + ByteOrderMark.UTF_32BE + ) + .get()) { ByteOrderMark bom = bomInputStream.getBOM(); Charset charset = bom != null ? Charset.forName(bom.getCharsetName()) : defaultCharset; byte[] bytes = bomInputStream.readAllBytes(); diff --git a/cxx-squid/src/test/java/org/sonar/cxx/config/JsonCompilationDatabaseTest.java b/cxx-squid/src/test/java/org/sonar/cxx/config/JsonCompilationDatabaseTest.java index ab17bb93c9..b2f8d73aeb 100644 --- a/cxx-squid/src/test/java/org/sonar/cxx/config/JsonCompilationDatabaseTest.java +++ b/cxx-squid/src/test/java/org/sonar/cxx/config/JsonCompilationDatabaseTest.java @@ -41,9 +41,9 @@ void testGlobalSettings() throws Exception { jsonDb.parse(file); List defines = squidConfig.getValues(CxxSquidConfiguration.GLOBAL, - CxxSquidConfiguration.DEFINES); + CxxSquidConfiguration.DEFINES); List includes = squidConfig.getValues(CxxSquidConfiguration.GLOBAL, - CxxSquidConfiguration.INCLUDE_DIRECTORIES); + CxxSquidConfiguration.INCLUDE_DIRECTORIES); List files = squidConfig.getFiles(); var cwd = Path.of("."); @@ -292,9 +292,9 @@ void testInvalidJson() { var file = new File("src/test/resources/jsondb/invalid.json"); var jsonDb = new JsonCompilationDatabase(squidConfig); - JsonMappingException thrown = catchThrowableOfType(() -> { + JsonMappingException thrown = catchThrowableOfType(JsonMappingException.class, () -> { jsonDb.parse(file); - }, JsonMappingException.class); + }); assertThat(thrown).isExactlyInstanceOf(JsonMappingException.class); } @@ -304,9 +304,9 @@ void testFileNotFound() { var file = new File("src/test/resources/jsondb/not-found.json"); var jsonDb = new JsonCompilationDatabase(squidConfig); - FileNotFoundException thrown = catchThrowableOfType(() -> { + FileNotFoundException thrown = catchThrowableOfType(FileNotFoundException.class, () -> { jsonDb.parse(file); - }, FileNotFoundException.class); + }); assertThat(thrown).isExactlyInstanceOf(FileNotFoundException.class); } diff --git a/cxx-squid/src/test/java/org/sonar/cxx/parser/ParserBaseTestHelper.java b/cxx-squid/src/test/java/org/sonar/cxx/parser/ParserBaseTestHelper.java index a57750a1f8..0b86f5cd17 100644 --- a/cxx-squid/src/test/java/org/sonar/cxx/parser/ParserBaseTestHelper.java +++ b/cxx-squid/src/test/java/org/sonar/cxx/parser/ParserBaseTestHelper.java @@ -45,8 +45,7 @@ public class ParserBaseTestHelper { public ParserBaseTestHelper() { squidConfig = new CxxSquidConfiguration(); - squidConfig.add(CxxSquidConfiguration.SONAR_PROJECT_PROPERTIES, CxxSquidConfiguration.ERROR_RECOVERY_ENABLED, - "false"); + squidConfig.add(CxxSquidConfiguration.SONAR_PROJECT_PROPERTIES, CxxSquidConfiguration.ERROR_RECOVERY_ENABLED, "false"); var file = new File("snippet.cpp").getAbsoluteFile(); SquidAstVisitorContextImpl context = mock(SquidAstVisitorContextImpl.class); @@ -62,7 +61,7 @@ public void setRootRule(GrammarRuleKey ruleKey) { } public void mockRule(GrammarRuleKey ruleKey) { - g.rule(ruleKey).mock(); + g.rule(ruleKey).override(ruleKey.toString()); } public ParserAssert assertThatParser() { diff --git a/cxx-squid/src/test/java/org/sonar/cxx/preprocessor/PPExpressionTest.java b/cxx-squid/src/test/java/org/sonar/cxx/preprocessor/PPExpressionTest.java index d50d134c9d..5e9bf77832 100644 --- a/cxx-squid/src/test/java/org/sonar/cxx/preprocessor/PPExpressionTest.java +++ b/cxx-squid/src/test/java/org/sonar/cxx/preprocessor/PPExpressionTest.java @@ -408,9 +408,9 @@ void defined_false_with_parantheses() { @Test void throw_on_invalid_expressions() { - EvaluationException thrown = catchThrowableOfType(() -> { + EvaluationException thrown = catchThrowableOfType(EvaluationException.class, () -> { evaluate("\"\""); - }, EvaluationException.class); + }); assertThat(thrown).isExactlyInstanceOf(EvaluationException.class); } diff --git a/cxx-squid/src/test/java/org/sonar/cxx/preprocessor/PPGrammarImplTest.java b/cxx-squid/src/test/java/org/sonar/cxx/preprocessor/PPGrammarImplTest.java index b4fbdd845e..19efab3527 100644 --- a/cxx-squid/src/test/java/org/sonar/cxx/preprocessor/PPGrammarImplTest.java +++ b/cxx-squid/src/test/java/org/sonar/cxx/preprocessor/PPGrammarImplTest.java @@ -640,7 +640,7 @@ void functionlikeMacro_reallife() { } private void mockRule(GrammarRuleKey key) { - g.rule(key).mock(); + g.rule(key).override(key.toString()); } } diff --git a/cxx-squid/src/test/java/org/sonar/cxx/visitors/CxxPublicApiVisitorTest.java b/cxx-squid/src/test/java/org/sonar/cxx/visitors/CxxPublicApiVisitorTest.java index 174ee65170..dd524c267e 100644 --- a/cxx-squid/src/test/java/org/sonar/cxx/visitors/CxxPublicApiVisitorTest.java +++ b/cxx-squid/src/test/java/org/sonar/cxx/visitors/CxxPublicApiVisitorTest.java @@ -31,7 +31,7 @@ import org.assertj.core.groups.Tuple; import static org.assertj.core.groups.Tuple.tuple; import org.junit.jupiter.api.Test; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.LoggerFactory; import org.sonar.cxx.CxxAstScanner; import org.sonar.cxx.CxxFileTesterHelper; import org.sonar.cxx.api.CxxMetric; @@ -40,7 +40,7 @@ class CxxPublicApiVisitorTest { - private static final org.sonar.api.utils.log.Logger LOG = Loggers.get(CxxPublicApiVisitorTest.class); + private static final org.slf4j.Logger LOG = LoggerFactory.getLogger(CxxPublicApiVisitorTest.class); private static String getFileExtension(String fileName) { int lastIndexOf = fileName.lastIndexOf('.'); diff --git a/cxx-sslr-toolkit/src/main/java/org/sonar/cxx/toolkit/CxxConfigurationModel.java b/cxx-sslr-toolkit/src/main/java/org/sonar/cxx/toolkit/CxxConfigurationModel.java index 961a9747ac..0c80d47c6c 100644 --- a/cxx-sslr-toolkit/src/main/java/org/sonar/cxx/toolkit/CxxConfigurationModel.java +++ b/cxx-sslr-toolkit/src/main/java/org/sonar/cxx/toolkit/CxxConfigurationModel.java @@ -27,8 +27,8 @@ import java.util.Arrays; import java.util.List; import javax.annotation.Nullable; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.colorizer.CDocTokenizer; import org.sonar.colorizer.CppDocTokenizer; import org.sonar.colorizer.JavadocTokenizer; @@ -47,7 +47,7 @@ public class CxxConfigurationModel extends AbstractConfigurationModel { - private static final Logger LOG = Loggers.get(CxxConfigurationModel.class); + private static final Logger LOG = LoggerFactory.getLogger(CxxConfigurationModel.class); private static final String CHARSET_PROPERTY_KEY = "sonar.sourceEncoding"; private static final String ERROR_RECOVERY_PROPERTY_KEY = "sonar.cxx.errorRecoveryEnabled"; diff --git a/cxx-sslr/sslr-core/src/main/java/com/sonar/cxx/sslr/api/AstNode.java b/cxx-sslr/sslr-core/src/main/java/com/sonar/cxx/sslr/api/AstNode.java index 93da0f51ab..1372db4997 100644 --- a/cxx-sslr/sslr-core/src/main/java/com/sonar/cxx/sslr/api/AstNode.java +++ b/cxx-sslr/sslr-core/src/main/java/com/sonar/cxx/sslr/api/AstNode.java @@ -108,18 +108,6 @@ public int getNumberOfChildren() { return children.size(); } - /** - * @deprecated in 1.19.2, use {@link #getFirstChild(AstNodeType...)} instead - */ - @Deprecated(since = "1.19.2") - public AstNode getChild(int index) { - if (index >= getNumberOfChildren()) { - throw new IllegalStateException("The AstNode '" + this + "' has only " + getNumberOfChildren() - + " children. Requested child index is wrong : " + index); - } - return children.get(index); - } - /** * Get the next sibling AstNode in the tree and if this node doesn't exist try to get the next AST Node of the parent. * diff --git a/cxx-sslr/sslr-core/src/main/java/com/sonar/cxx/sslr/api/Rule.java b/cxx-sslr/sslr-core/src/main/java/com/sonar/cxx/sslr/api/Rule.java index 0f17329a4a..215d728a80 100644 --- a/cxx-sslr/sslr-core/src/main/java/com/sonar/cxx/sslr/api/Rule.java +++ b/cxx-sslr/sslr-core/src/main/java/com/sonar/cxx/sslr/api/Rule.java @@ -75,14 +75,4 @@ public interface Rule extends AstNodeType { @Deprecated(since = "1.19") void skipIfOneChild(); - /** - * Utility method used for unit testing in order to dynamically replace the definition of the rule to match as soon as - * a token whose value - * equals the name of the rule is encountered. - * - * @deprecated in 1.18, use {@link #override(Object...)} instead. - */ - @Deprecated(since = "1.18") - void mock(); - } diff --git a/cxx-sslr/sslr-core/src/main/java/com/sonar/cxx/sslr/impl/ast/AstWalker.java b/cxx-sslr/sslr-core/src/main/java/com/sonar/cxx/sslr/impl/ast/AstWalker.java index e6c4ca3beb..d4cd5dd2f7 100644 --- a/cxx-sslr/sslr-core/src/main/java/com/sonar/cxx/sslr/impl/ast/AstWalker.java +++ b/cxx-sslr/sslr-core/src/main/java/com/sonar/cxx/sslr/impl/ast/AstWalker.java @@ -75,14 +75,6 @@ public void walkAndVisit(AstNode ast) { } } - /** - * @deprecated in 1.18, use {@link #walkAndVisit(AstNode)} instead - */ - @Deprecated(since = "1.18") - public void walkVisitAndListen(AstNode ast, Object output) { - walkAndVisit(ast); - } - private void visit(AstNode ast) { var nodeVisitors = getNodeVisitors(ast); visitNode(ast, nodeVisitors); diff --git a/cxx-sslr/sslr-core/src/main/java/com/sonar/cxx/sslr/impl/channel/UnknownCharacterChannel.java b/cxx-sslr/sslr-core/src/main/java/com/sonar/cxx/sslr/impl/channel/UnknownCharacterChannel.java index 101e3a968e..1e79901c37 100644 --- a/cxx-sslr/sslr-core/src/main/java/com/sonar/cxx/sslr/impl/channel/UnknownCharacterChannel.java +++ b/cxx-sslr/sslr-core/src/main/java/com/sonar/cxx/sslr/impl/channel/UnknownCharacterChannel.java @@ -42,14 +42,6 @@ public class UnknownCharacterChannel extends Channel { public UnknownCharacterChannel() { } - /** - * @deprecated logging removed in 1.20, use {@link #UnknownCharacterChannel()} or implement your own Channel with - * logging - */ - @Deprecated - public UnknownCharacterChannel(boolean shouldLogWarning) { - } - @Override public boolean consume(CodeReader code, Lexer lexer) { if (code.peek() != -1) { diff --git a/cxx-sslr/sslr-core/src/main/java/com/sonar/cxx/sslr/impl/matcher/GrammarFunctions.java b/cxx-sslr/sslr-core/src/main/java/com/sonar/cxx/sslr/impl/matcher/GrammarFunctions.java index 17d35d7ec2..5e3f67ec91 100644 --- a/cxx-sslr/sslr-core/src/main/java/com/sonar/cxx/sslr/impl/matcher/GrammarFunctions.java +++ b/cxx-sslr/sslr-core/src/main/java/com/sonar/cxx/sslr/impl/matcher/GrammarFunctions.java @@ -24,7 +24,6 @@ package com.sonar.cxx.sslr.impl.matcher; import com.sonar.cxx.sslr.api.TokenType; -import org.sonar.cxx.sslr.internal.vm.FirstOfExpression; import org.sonar.cxx.sslr.internal.vm.ParsingExpression; import org.sonar.cxx.sslr.internal.vm.SequenceExpression; import org.sonar.cxx.sslr.internal.vm.lexerful.TokenTypeClassExpression; @@ -39,26 +38,6 @@ final class GrammarFunctions { private GrammarFunctions() { } - public static final class Standard { - - private Standard() { - } - - /** - * @deprecated in 1.19, use {@link org.sonar.cxx.sslr.grammar.LexerfulGrammarBuilder#firstOf(Object, Object)} - * instead. - */ - @Deprecated(since = "1.19") - public static Matcher firstOf(Object... e) { - checkSize(e); - if (e.length == 1) { - return convertToExpression(e[0]); - } else { - return new FirstOfExpression(convertToExpressions(e)); - } - } - } - static ParsingExpression convertToSingleExpression(Object[] e) { checkSize(e); if (e.length == 1) { @@ -79,17 +58,16 @@ private static ParsingExpression[] convertToExpressions(Object[] e) { private static ParsingExpression convertToExpression(Object e) { ParsingExpression expression; - if (e instanceof String) { - expression = new TokenValueExpression((String) e); - } else if (e instanceof TokenType) { - var tokenType = (TokenType) e; + if (e instanceof String string) { + expression = new TokenValueExpression(string); + } else if (e instanceof TokenType tokenType) { expression = new TokenTypeExpression(tokenType); - } else if (e instanceof RuleDefinition) { - expression = (RuleDefinition) e; - } else if (e instanceof Class) { - expression = new TokenTypeClassExpression((Class) e); - } else if (e instanceof ParsingExpression) { - expression = (ParsingExpression) e; + } else if (e instanceof RuleDefinition ruleDefinition) { + expression = ruleDefinition; + } else if (e instanceof Class aClass) { + expression = new TokenTypeClassExpression(aClass); + } else if (e instanceof ParsingExpression parsingExpression) { + expression = parsingExpression; } else { throw new IllegalArgumentException( "The matcher object can't be anything else than a Rule, Matcher, String, TokenType or Class. Object = " + e); diff --git a/cxx-sslr/sslr-core/src/main/java/com/sonar/cxx/sslr/impl/matcher/RuleDefinition.java b/cxx-sslr/sslr-core/src/main/java/com/sonar/cxx/sslr/impl/matcher/RuleDefinition.java index b6acdbe642..3ac3174eb4 100644 --- a/cxx-sslr/sslr-core/src/main/java/com/sonar/cxx/sslr/impl/matcher/RuleDefinition.java +++ b/cxx-sslr/sslr-core/src/main/java/com/sonar/cxx/sslr/impl/matcher/RuleDefinition.java @@ -30,7 +30,6 @@ import com.sonar.cxx.sslr.impl.ast.AlwaysSkipFromAst; import com.sonar.cxx.sslr.impl.ast.NeverSkipFromAst; import com.sonar.cxx.sslr.impl.ast.SkipFromAstIfOnlyOneChild; -import com.sonar.cxx.sslr.impl.matcher.GrammarFunctions.Standard; import org.sonar.cxx.sslr.grammar.GrammarRuleKey; import org.sonar.cxx.sslr.internal.vm.CompilableGrammarRule; import org.sonar.cxx.sslr.internal.vm.CompilationHandler; @@ -40,7 +39,7 @@ import org.sonar.cxx.sslr.internal.vm.RuleRefExpression; /** - *

This class is not intended to be instantiated or subclassed by clients.

+ * This class is not intended to be instantiated or subclassed by clients. */ public class RuleDefinition implements Rule, AstNodeSkippingPolicy, GrammarRuleKey, CompilableGrammarRule, MemoParsingExpression { @@ -79,11 +78,6 @@ public RuleDefinition override(Object... e) { return this; } - @Override - public void mock() { - setExpression((ParsingExpression) Standard.firstOf(getName(), getName().toUpperCase())); - } - @Override public void skip() { astNodeSkippingPolicy = AlwaysSkipFromAst.INSTANCE; diff --git a/cxx-sslr/sslr-core/src/main/java/org/sonar/cxx/sslr/grammar/LexerfulGrammarBuilder.java b/cxx-sslr/sslr-core/src/main/java/org/sonar/cxx/sslr/grammar/LexerfulGrammarBuilder.java index 7407682012..1cc59afcfe 100644 --- a/cxx-sslr/sslr-core/src/main/java/org/sonar/cxx/sslr/grammar/LexerfulGrammarBuilder.java +++ b/cxx-sslr/sslr-core/src/main/java/org/sonar/cxx/sslr/grammar/LexerfulGrammarBuilder.java @@ -184,14 +184,6 @@ public Object bridge(TokenType from, TokenType to) { return new TokensBridgeExpression(from, to); } - /** - * @deprecated in 1.19, use {@link #anyToken()} instead. - */ - @Deprecated(since = "1.19") - public Object everything() { - return AnyTokenExpression.INSTANCE; - } - /** * Creates parsing expression - "any token". * During execution of this expression parser will unconditionally consume following token. diff --git a/cxx-sslr/sslr-core/src/main/java/org/sonar/cxx/sslr/internal/grammar/MutableParsingRule.java b/cxx-sslr/sslr-core/src/main/java/org/sonar/cxx/sslr/internal/grammar/MutableParsingRule.java index 0c0565395b..82d5a60923 100644 --- a/cxx-sslr/sslr-core/src/main/java/org/sonar/cxx/sslr/internal/grammar/MutableParsingRule.java +++ b/cxx-sslr/sslr-core/src/main/java/org/sonar/cxx/sslr/internal/grammar/MutableParsingRule.java @@ -35,15 +35,10 @@ import org.sonar.cxx.sslr.internal.matchers.Matcher; import org.sonar.cxx.sslr.internal.vm.CompilableGrammarRule; import org.sonar.cxx.sslr.internal.vm.CompilationHandler; -import org.sonar.cxx.sslr.internal.vm.EndOfInputExpression; -import org.sonar.cxx.sslr.internal.vm.FirstOfExpression; import org.sonar.cxx.sslr.internal.vm.Instruction; import org.sonar.cxx.sslr.internal.vm.MemoParsingExpression; import org.sonar.cxx.sslr.internal.vm.ParsingExpression; -import org.sonar.cxx.sslr.internal.vm.PatternExpression; import org.sonar.cxx.sslr.internal.vm.RuleRefExpression; -import org.sonar.cxx.sslr.internal.vm.SequenceExpression; -import org.sonar.cxx.sslr.internal.vm.StringExpression; import org.sonar.cxx.sslr.parser.GrammarOperators; public class MutableParsingRule implements CompilableGrammarRule, Matcher, Rule, AstNodeSkippingPolicy, MemoParsingExpression, GrammarRuleKey { @@ -96,15 +91,6 @@ public Rule override(Object... e) { return this; } - @Override - public void mock() { - setExpression(new SequenceExpression( - new StringExpression(getName()), - new FirstOfExpression( - new PatternExpression("\\s++"), - EndOfInputExpression.INSTANCE))); - } - @Override public void setExpression(ParsingExpression expression) { this.expression = expression; diff --git a/cxx-sslr/sslr-core/src/test/java/com/sonar/cxx/sslr/api/GrammarTest.java b/cxx-sslr/sslr-core/src/test/java/com/sonar/cxx/sslr/api/GrammarTest.java index 54cf90be9f..3c8b77aa84 100644 --- a/cxx-sslr/sslr-core/src/test/java/com/sonar/cxx/sslr/api/GrammarTest.java +++ b/cxx-sslr/sslr-core/src/test/java/com/sonar/cxx/sslr/api/GrammarTest.java @@ -48,9 +48,7 @@ void testGetAllRuleFields() { @Test void method_rule_should_throw_exception_by_default() { - var thrown = catchThrowableOfType( - () -> new MyGrammar().rule(mock(GrammarRuleKey.class)), - UnsupportedOperationException.class); + var thrown = catchThrowableOfType(UnsupportedOperationException.class, () -> new MyGrammar().rule(mock(GrammarRuleKey.class))); assertThat(thrown).isExactlyInstanceOf(UnsupportedOperationException.class); } @@ -78,7 +76,7 @@ void should_automatically_instanciate_lexerless_rules() throws IllegalAccessExce @Test void should_throw_exception() { - var thrown = catchThrowableOfType(IllegalGrammar::new, GrammarException.class); + var thrown = catchThrowableOfType(GrammarException.class, IllegalGrammar::new); assertThat(thrown).hasMessageStartingWith("Unable to instanciate the rule 'rootRule': "); } diff --git a/cxx-sslr/sslr-core/src/test/java/com/sonar/cxx/sslr/api/typed/ActionParserTest.java b/cxx-sslr/sslr-core/src/test/java/com/sonar/cxx/sslr/api/typed/ActionParserTest.java index aa6904537f..06d3807275 100644 --- a/cxx-sslr/sslr-core/src/test/java/com/sonar/cxx/sslr/api/typed/ActionParserTest.java +++ b/cxx-sslr/sslr-core/src/test/java/com/sonar/cxx/sslr/api/typed/ActionParserTest.java @@ -44,9 +44,7 @@ class ActionParserTest { @Test void not_matching() throws Exception { - var thrown = catchThrowableOfType( - () -> parse(MyGrammarKeys.NUMERIC, "x"), - RecognitionException.class); + var thrown = catchThrowableOfType(RecognitionException.class, () -> parse(MyGrammarKeys.NUMERIC, "x")); assertThat(thrown).isExactlyInstanceOf(RecognitionException.class); } @@ -110,8 +108,9 @@ void skipped_text() throws Exception { @Test void unknown_trivia() throws Exception { - var thrown = catchThrowableOfType(() -> parse(MyGrammarKeys.NUMERIC, "#preprocessor 42", - Numeric.class), IllegalStateException.class); + var thrown = catchThrowableOfType(IllegalStateException.class, () + -> parse(MyGrammarKeys.NUMERIC, "#preprocessor 42", Numeric.class) + ); assertThat(thrown).hasMessage("Unexpected trivia kind: PREPROCESSOR"); } @@ -166,7 +165,7 @@ private ActionParser parser(GrammarRuleKey ruleKey) { b.regexp("[0-9]+")); b.rule(MyGrammarKeys.EOF).is(b.token(GenericTokenType.EOF, b.endOfInput())).skip(); return new ActionParser<>(StandardCharsets.UTF_8, b, MyGrammar.class, new MyTreeFactory(), new AstNodeBuilder(), - ruleKey); + ruleKey); } private void assertNotParse(GrammarRuleKey ruleKey, String toParse) { diff --git a/cxx-sslr/sslr-core/src/test/java/com/sonar/cxx/sslr/api/typed/OptionalTest.java b/cxx-sslr/sslr-core/src/test/java/com/sonar/cxx/sslr/api/typed/OptionalTest.java index f40da006c0..357a8945c8 100644 --- a/cxx-sslr/sslr-core/src/test/java/com/sonar/cxx/sslr/api/typed/OptionalTest.java +++ b/cxx-sslr/sslr-core/src/test/java/com/sonar/cxx/sslr/api/typed/OptionalTest.java @@ -64,19 +64,19 @@ void absent() { assertThat(absent.hashCode()).isEqualTo(0x598df91c); - var thrown = catchThrowableOfType(absent::get, IllegalStateException.class); + var thrown = catchThrowableOfType(IllegalStateException.class, absent::get); assertThat(thrown).hasMessage("value is absent"); } @Test void present_or_null() { - var thrown = catchThrowableOfType(() -> present.or(null), NullPointerException.class); + var thrown = catchThrowableOfType(NullPointerException.class, () -> present.or(null)); assertThat(thrown).hasMessage("use orNull() instead of or(null)"); } @Test void absent_or_null() { - var thrown = catchThrowableOfType(() -> absent.or(null), NullPointerException.class); + var thrown = catchThrowableOfType(NullPointerException.class, () -> absent.or(null)); assertThat(thrown).hasMessage("use orNull() instead of or(null)"); } diff --git a/cxx-sslr/sslr-core/src/test/java/com/sonar/cxx/sslr/impl/matcher/GrammarFunctionsTest.java b/cxx-sslr/sslr-core/src/test/java/com/sonar/cxx/sslr/impl/matcher/GrammarFunctionsTest.java deleted file mode 100644 index ce1b10c9d6..0000000000 --- a/cxx-sslr/sslr-core/src/test/java/com/sonar/cxx/sslr/impl/matcher/GrammarFunctionsTest.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * C++ Community Plugin (cxx plugin) - * Copyright (C) 2022-2024 SonarOpenCommunity - * http://github.com/SonarOpenCommunity/sonar-cxx - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -/** - * fork of SonarSource Language Recognizer: https://github.com/SonarSource/sslr - * Copyright (C) 2010-2021 SonarSource SA / mailto:info AT sonarsource DOT com / license: LGPL v3 - */ -package com.sonar.cxx.sslr.impl.matcher; - -import static org.assertj.core.api.Assertions.*; -import org.junit.jupiter.api.Test; -import static org.mockito.Mockito.mock; -import org.sonar.cxx.sslr.internal.vm.FirstOfExpression; -import org.sonar.cxx.sslr.internal.vm.ParsingExpression; - -class GrammarFunctionsTest { - - @Test - void test() { - var e1 = mock(ParsingExpression.class); - var e2 = mock(ParsingExpression.class); - - assertThat(GrammarFunctions.Standard.firstOf(e1)).isSameAs(e1); - assertThat(GrammarFunctions.Standard.firstOf(e1, e2)).isInstanceOf(FirstOfExpression.class); - } - - @Test - void firstOf_requires_at_least_one_argument() { - var thrown = catchThrowableOfType(GrammarFunctions.Standard::firstOf, - IllegalArgumentException.class); - assertThat(thrown).hasMessage("You must define at least one matcher."); - } - - @Test - void private_constructors() throws Exception { - assertThat(hasPrivateConstructor(GrammarFunctions.class)).isTrue(); - assertThat(hasPrivateConstructor(GrammarFunctions.Standard.class)).isTrue(); - } - - private static final boolean hasPrivateConstructor(Class cls) throws Exception { - var constructor = cls.getDeclaredConstructor(); - var result = !constructor.isAccessible(); - constructor.setAccessible(true); - constructor.newInstance(); - return result; - } - -} diff --git a/cxx-sslr/sslr-core/src/test/java/com/sonar/cxx/sslr/impl/typed/DelayedRuleInvocationExpressionTest.java b/cxx-sslr/sslr-core/src/test/java/com/sonar/cxx/sslr/impl/typed/DelayedRuleInvocationExpressionTest.java index 05945f2d1e..ffc37fd5c1 100644 --- a/cxx-sslr/sslr-core/src/test/java/com/sonar/cxx/sslr/impl/typed/DelayedRuleInvocationExpressionTest.java +++ b/cxx-sslr/sslr-core/src/test/java/com/sonar/cxx/sslr/impl/typed/DelayedRuleInvocationExpressionTest.java @@ -65,7 +65,7 @@ void should_compile_methods() throws Exception { when(grammarBuilderInterceptor.ruleKeyForMethod(method)).thenReturn(ruleKey); var expression = new DelayedRuleInvocationExpression(b, grammarBuilderInterceptor, - method); + method); var compiler = mock(CompilationHandler.class); expression.compile(compiler); @@ -82,12 +82,9 @@ void should_compile_methods() throws Exception { void should_fail_when_method_is_not_mapped() throws Exception { var method = DelayedRuleInvocationExpressionTest.class.getDeclaredMethod("FOO"); - var thrown = catchThrowableOfType(() -> { - new DelayedRuleInvocationExpression(LexerlessGrammarBuilder.create(), - mock(GrammarBuilderInterceptor.class), - method).compile(mock( - CompilationHandler.class)); - }, IllegalStateException.class); + var thrown = catchThrowableOfType(IllegalStateException.class, () -> { + new DelayedRuleInvocationExpression(LexerlessGrammarBuilder.create(), mock(GrammarBuilderInterceptor.class), method).compile(mock(CompilationHandler.class)); + }); assertThat(thrown).hasMessage("Cannot find the rule key corresponding to the invoked method: FOO()"); } @@ -100,7 +97,7 @@ void test_toString() throws Exception { var method = DelayedRuleInvocationExpressionTest.class.getDeclaredMethod("FOO"); assertThat(new DelayedRuleInvocationExpression(mock(LexerlessGrammarBuilder.class), mock( - GrammarBuilderInterceptor.class), method)).hasToString( + GrammarBuilderInterceptor.class), method)).hasToString( "FOO()"); } diff --git a/cxx-sslr/sslr-core/src/test/java/com/sonar/cxx/sslr/impl/typed/InterceptorTest.java b/cxx-sslr/sslr-core/src/test/java/com/sonar/cxx/sslr/impl/typed/InterceptorTest.java index 8bc5bcd126..ef96bfc42f 100644 --- a/cxx-sslr/sslr-core/src/test/java/com/sonar/cxx/sslr/impl/typed/InterceptorTest.java +++ b/cxx-sslr/sslr-core/src/test/java/com/sonar/cxx/sslr/impl/typed/InterceptorTest.java @@ -131,9 +131,8 @@ void should_intercept_base_methods() { } /** - * Can not intercept non-public methods, - * but should not fail in their presence, - * because SonarTSQL uses private helper methods. + * Can not intercept non-public methods, but should not fail in their presence, because SonarTSQL uses private helper + * methods. */ @Test void can_not_intercept_non_public_methods() { @@ -150,9 +149,9 @@ void can_not_intercept_non_public_methods() { @Test void requires_class_to_be_public() { - var thrown = catchThrowableOfType(() -> Interceptor.create(NonPublicClass.class, new Class[]{}, - new Object[]{}, methodInterceptor), - IllegalAccessError.class); + var thrown = catchThrowableOfType(IllegalAccessError.class, + () -> Interceptor.create(NonPublicClass.class, new Class[]{}, new Object[]{}, methodInterceptor) + ); assertThat(thrown) // Note that details of the message are different between JDK versions .hasMessageStartingWith( @@ -167,10 +166,9 @@ private static class NonPublicClass { */ @Test void requires_final_methods_to_be_non_public() { - var thrown = catchThrowableOfType(() -> Interceptor.create(PublicFinalMethod.class, new Class[]{}, - new Object[]{}, - methodInterceptor), - IncompatibleClassChangeError.class); + var thrown = catchThrowableOfType(IncompatibleClassChangeError.class, + () -> Interceptor.create(PublicFinalMethod.class, new Class[]{}, new Object[]{}, methodInterceptor) + ); assertThat(thrown) // Note that details of the message are different between JDK versions .hasMessageStartingWith("class GeneratedBySSLR overrides final method"); @@ -187,10 +185,9 @@ public final Object m() { @Test void requires_non_primitive_return_types() { - var thrown = catchThrowableOfType(() -> Interceptor.create(PrimitiveReturnType.class, - new Class[]{}, new Object[]{}, - methodInterceptor), - UnsupportedOperationException.class); + var thrown = catchThrowableOfType(UnsupportedOperationException.class, + () -> Interceptor.create(PrimitiveReturnType.class, new Class[]{}, new Object[]{}, methodInterceptor) + ); assertThat(thrown).isExactlyInstanceOf(UnsupportedOperationException.class); } diff --git a/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/channel/ChannelDispatcherTest.java b/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/channel/ChannelDispatcherTest.java index 6509c7df8c..1a73da7d73 100644 --- a/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/channel/ChannelDispatcherTest.java +++ b/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/channel/ChannelDispatcherTest.java @@ -40,7 +40,7 @@ void shouldRemoveSpacesFromString() { @Test void shouldAddChannels() { var dispatcher = ChannelDispatcher.builder().addChannels(new SpaceDeletionChannel(), - new FakeChannel()).build(); + new FakeChannel()).build(); assertThat(dispatcher.getChannels()).hasSize(2); assertThat(dispatcher.getChannels()[0]).isInstanceOf(SpaceDeletionChannel.class); assertThat(dispatcher.getChannels()[1]).isInstanceOf(FakeChannel.class); @@ -50,9 +50,9 @@ void shouldAddChannels() { void shouldThrowExceptionWhenNoChannelToConsumeNextCharacter() { var dispatcher = ChannelDispatcher.builder().failIfNoChannelToConsumeOneCharacter().build(); - var thrown = catchThrowableOfType(() -> { + var thrown = catchThrowableOfType(IllegalStateException.class, () -> { dispatcher.consume(new CodeReader("two words"), new StringBuilder()); - }, IllegalStateException.class); + }); assertThat(thrown).isExactlyInstanceOf(IllegalStateException.class); } diff --git a/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/channel/CodeReaderTest.java b/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/channel/CodeReaderTest.java index 44b1ea2c54..bbf2a8e179 100644 --- a/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/channel/CodeReaderTest.java +++ b/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/channel/CodeReaderTest.java @@ -101,13 +101,13 @@ void testStackOverflowError() { reader.pop(); reader.pop(); - var thrown = catchThrowableOfType( - () -> reader.popTo(Pattern.compile("([a-fA-F]|\\d)+").matcher(""), new StringBuilder()), - ChannelException.class); + var thrown = catchThrowableOfType(ChannelException.class, + () -> reader.popTo(Pattern.compile("([a-fA-F]|\\d)+").matcher(""), new StringBuilder()) + ); assertThat(thrown) .hasMessage("Unable to apply regular expression '([a-fA-F]|\\d)+' at line 2 and column 1," - + " because it led to a stack overflow error." - + " This error may be due to an inefficient use of alternations - see http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5050507"); + + " because it led to a stack overflow error." + + " This error may be due to an inefficient use of alternations - see http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5050507"); } @Test diff --git a/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/grammar/LexerfulGrammarBuilderTest.java b/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/grammar/LexerfulGrammarBuilderTest.java index e70a2b80b8..1cdb99eae5 100644 --- a/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/grammar/LexerfulGrammarBuilderTest.java +++ b/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/grammar/LexerfulGrammarBuilderTest.java @@ -93,13 +93,12 @@ void should_create_expressions() { assertThat(b.anyTokenButNot(e1)).hasToString("Sequence[NextNot[" + e1 + "], AnyToken]"); assertThat(b.till(e1)).hasToString("Sequence[ZeroOrMore[Sequence[NextNot[" + e1 + "], AnyToken]], " + e1 - + "]"); + + "]"); assertThat(b.exclusiveTill(e1)).hasToString("ZeroOrMore[Sequence[NextNot[" + e1 + "], AnyToken]]"); assertThat(b.exclusiveTill(e1, e2)).hasToString("ZeroOrMore[Sequence[NextNot[FirstOf[" + e1 + ", " + e2 - + "]], AnyToken]]"); + + "]], AnyToken]]"); - assertThat(b.everything()).as("singleton").isSameAs(AnyTokenExpression.INSTANCE); assertThat(b.anyToken()).as("singleton").isSameAs(AnyTokenExpression.INSTANCE); assertThat(b.tillNewLine()).as("singleton").isSameAs(TillNewLineExpression.INSTANCE); } @@ -128,7 +127,7 @@ void test_undefined_root_rule() { var b = LexerfulGrammarBuilder.create(); var ruleKey = mock(GrammarRuleKey.class); b.setRootRule(ruleKey); - var thrown = catchThrowableOfType(b::build, GrammarException.class); + var thrown = catchThrowableOfType(GrammarException.class, b::build); assertThat(thrown).hasMessage("The rule '" + ruleKey + "' hasn't been defined."); } @@ -137,7 +136,7 @@ void test_undefined_rule() { var b = LexerfulGrammarBuilder.create(); var ruleKey = mock(GrammarRuleKey.class); b.rule(ruleKey); - var thrown = catchThrowableOfType(b::build, GrammarException.class); + var thrown = catchThrowableOfType(GrammarException.class, b::build); assertThat(thrown).hasMessage("The rule '" + ruleKey + "' hasn't been defined."); } @@ -147,23 +146,23 @@ void test_used_undefined_rule() { var ruleKey1 = mock(GrammarRuleKey.class); var ruleKey2 = mock(GrammarRuleKey.class); b.rule(ruleKey1).is(ruleKey2); - var thrown = catchThrowableOfType(b::build, GrammarException.class); + var thrown = catchThrowableOfType(GrammarException.class, b::build); assertThat(thrown).hasMessage("The rule '" + ruleKey2 + "' hasn't been defined."); } @Test void test_incorrect_type_of_parsing_expression() { - var thrown = catchThrowableOfType( - () -> LexerfulGrammarBuilder.create().convertToExpression(new Object()), - IllegalArgumentException.class); + var thrown = catchThrowableOfType(IllegalArgumentException.class, + () -> LexerfulGrammarBuilder.create().convertToExpression(new Object()) + ); assertThat(thrown).hasMessage("Incorrect type of parsing expression: class java.lang.Object"); } @Test void test_null_parsing_expression() { - var thrown = catchThrowableOfType( - () -> LexerfulGrammarBuilder.create().convertToExpression(null), - NullPointerException.class); + var thrown = catchThrowableOfType(NullPointerException.class, + () -> LexerfulGrammarBuilder.create().convertToExpression(null) + ); assertThat(thrown).hasMessage("Parsing expression can't be null"); } @@ -172,9 +171,9 @@ void should_fail_to_redefine() { var b = LexerfulGrammarBuilder.create(); var ruleKey = mock(GrammarRuleKey.class); b.rule(ruleKey).is("foo"); - var thrown = catchThrowableOfType( - () -> b.rule(ruleKey).is("foo"), - GrammarException.class); + var thrown = catchThrowableOfType(GrammarException.class, + () -> b.rule(ruleKey).is("foo") + ); assertThat(thrown).hasMessage("The rule '" + ruleKey + "' has already been defined somewhere in the grammar."); } @@ -183,7 +182,9 @@ void should_fail_to_redefine2() { var b = LexerfulGrammarBuilder.create(); var ruleKey = mock(GrammarRuleKey.class); b.rule(ruleKey).is("foo", "bar"); - var thrown = catchThrowableOfType(() -> b.rule(ruleKey).is("foo"), GrammarException.class); + var thrown = catchThrowableOfType(GrammarException.class, + () -> b.rule(ruleKey).is("foo") + ); assertThat(thrown).hasMessage("The rule '" + ruleKey + "' has already been defined somewhere in the grammar."); } diff --git a/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/grammar/LexerlessGrammarBuilderTest.java b/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/grammar/LexerlessGrammarBuilderTest.java index 048d7a43c0..40b5774866 100644 --- a/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/grammar/LexerlessGrammarBuilderTest.java +++ b/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/grammar/LexerlessGrammarBuilderTest.java @@ -132,7 +132,7 @@ void test_undefined_root_rule() { var b = LexerlessGrammarBuilder.create(); var ruleKey = mock(GrammarRuleKey.class); b.setRootRule(ruleKey); - var thrown = catchThrowableOfType(b::build, GrammarException.class); + var thrown = catchThrowableOfType(GrammarException.class, b::build); assertThat(thrown).hasMessage("The rule '" + ruleKey + "' hasn't been defined."); } @@ -141,7 +141,7 @@ void test_undefined_rule() { var b = LexerlessGrammarBuilder.create(); var ruleKey = mock(GrammarRuleKey.class); b.rule(ruleKey); - var thrown = catchThrowableOfType(b::build, GrammarException.class); + var thrown = catchThrowableOfType(GrammarException.class, b::build); assertThat(thrown).hasMessage("The rule '" + ruleKey + "' hasn't been defined."); } @@ -151,30 +151,30 @@ void test_used_undefined_rule() { var ruleKey1 = mock(GrammarRuleKey.class); var ruleKey2 = mock(GrammarRuleKey.class); b.rule(ruleKey1).is(ruleKey2); - var thrown = catchThrowableOfType(b::build, GrammarException.class); + var thrown = catchThrowableOfType(GrammarException.class, b::build); assertThat(thrown).hasMessage("The rule '" + ruleKey2 + "' hasn't been defined."); } @Test void test_wrong_regexp() { var b = LexerlessGrammarBuilder.create(); - var thrown = catchThrowableOfType(() -> b.regexp("["), PatternSyntaxException.class); + var thrown = catchThrowableOfType(PatternSyntaxException.class, () -> b.regexp("[")); assertThat(thrown).isExactlyInstanceOf(PatternSyntaxException.class); } @Test void test_incorrect_type_of_parsing_expression() { - var thrown = catchThrowableOfType( - () -> LexerlessGrammarBuilder.create().convertToExpression(new Object()), - IllegalArgumentException.class); + var thrown = catchThrowableOfType(IllegalArgumentException.class, + () -> LexerlessGrammarBuilder.create().convertToExpression(new Object()) + ); assertThat(thrown).hasMessage("Incorrect type of parsing expression: class java.lang.Object"); } @Test void test_null_parsing_expression() { - var thrown = catchThrowableOfType( - () -> LexerlessGrammarBuilder.create().convertToExpression(null), - NullPointerException.class); + var thrown = catchThrowableOfType(NullPointerException.class, + () -> LexerlessGrammarBuilder.create().convertToExpression(null) + ); assertThat(thrown).hasMessage("Parsing expression can't be null"); } @@ -183,9 +183,9 @@ void should_fail_to_redefine() { var b = LexerlessGrammarBuilder.create(); var ruleKey = mock(GrammarRuleKey.class); b.rule(ruleKey).is("foo"); - var thrown = catchThrowableOfType( - () -> b.rule(ruleKey).is("foo"), - GrammarException.class); + var thrown = catchThrowableOfType(GrammarException.class, + () -> b.rule(ruleKey).is("foo") + ); assertThat(thrown).hasMessage("The rule '" + ruleKey + "' has already been defined somewhere in the grammar."); } @@ -194,9 +194,9 @@ void should_fail_to_redefine2() { var b = LexerlessGrammarBuilder.create(); var ruleKey = mock(GrammarRuleKey.class); b.rule(ruleKey).is("foo", "bar"); - var thrown = catchThrowableOfType( - () -> b.rule(ruleKey).is("foo", "bar"), - GrammarException.class); + var thrown = catchThrowableOfType(GrammarException.class, + () -> b.rule(ruleKey).is("foo", "bar") + ); assertThat(thrown).hasMessage("The rule '" + ruleKey + "' has already been defined somewhere in the grammar."); } diff --git a/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/grammar/RuleBuilderTest.java b/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/grammar/RuleBuilderTest.java index 8e2e67cf1f..cb5de7a10a 100644 --- a/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/grammar/RuleBuilderTest.java +++ b/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/grammar/RuleBuilderTest.java @@ -65,9 +65,9 @@ void should_fail_to_redefine() { when(delegate.getExpression()).thenReturn(e); var ruleKey = mock(GrammarRuleKey.class); when(delegate.getRuleKey()).thenReturn(ruleKey); - var thrown = catchThrowableOfType( - () -> ruleBuilder.is(e), - GrammarException.class); + var thrown = catchThrowableOfType(GrammarException.class, + () -> ruleBuilder.is(e) + ); assertThat(thrown).hasMessage("The rule '" + ruleKey + "' has already been defined somewhere in the grammar."); } diff --git a/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/internal/grammar/MutableParsingRuleTest.java b/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/internal/grammar/MutableParsingRuleTest.java index 277fa4038c..246ab70c38 100644 --- a/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/internal/grammar/MutableParsingRuleTest.java +++ b/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/internal/grammar/MutableParsingRuleTest.java @@ -40,9 +40,9 @@ void should_not_allow_redefinition() { var ruleKey = mock(GrammarRuleKey.class); var rule = new MutableParsingRule(ruleKey); rule.is(mock(ParsingExpression.class)); - var thrown = catchThrowableOfType( - () -> rule.is(mock(ParsingExpression.class)), - GrammarException.class); + var thrown = catchThrowableOfType(GrammarException.class, + () -> rule.is(mock(ParsingExpression.class)) + ); assertThat(thrown).hasMessage("The rule '" + ruleKey + "' has already been defined somewhere in the grammar."); } diff --git a/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/internal/matchers/ExpressionGrammarTest.java b/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/internal/matchers/ExpressionGrammarTest.java index bb8de74f40..a8e8b68de5 100644 --- a/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/internal/matchers/ExpressionGrammarTest.java +++ b/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/internal/matchers/ExpressionGrammarTest.java @@ -72,20 +72,6 @@ void prefix_match() { assertThat(result.isMatched()).isTrue(); } - @Test - void should_mock() { - var inputString = "term plus term"; - var input = inputString.toCharArray(); - grammar.term.mock(); - grammar.plus.mock(); - var parseRunner = new ParseRunner(grammar.root); - var result = parseRunner.parse(input); - assertThat(result.isMatched()).isTrue(); - ParseTreePrinter.print(result.getParseTreeRoot(), input); - assertThat(ParseTreePrinter.leafsToString(result.getParseTreeRoot(), input)).as("full-fidelity").isEqualTo( - inputString); - } - @Test void should_create_ast() throws Exception { var inputString = "20 * 2 + 2 - var"; diff --git a/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/internal/matchers/TextUtilsTest.java b/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/internal/matchers/TextUtilsTest.java index da87533eea..712a32c323 100644 --- a/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/internal/matchers/TextUtilsTest.java +++ b/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/internal/matchers/TextUtilsTest.java @@ -48,7 +48,7 @@ void should_trim_trailing_line_separator() { @Test void private_constructor() throws Exception { Constructor constructor = TextUtils.class.getDeclaredConstructor(); - assertThat(constructor.isAccessible()).isFalse(); + assertThat(constructor.canAccess(null)).isFalse(); constructor.setAccessible(true); constructor.newInstance(); } diff --git a/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/internal/vm/InstructionTest.java b/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/internal/vm/InstructionTest.java index a355fb6e2c..1fdc0c3068 100644 --- a/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/internal/vm/InstructionTest.java +++ b/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/internal/vm/InstructionTest.java @@ -174,9 +174,9 @@ void commitVerify_should_throw_exception() { stack.setIndex(13); when(machine.peek()).thenReturn(stack); when(machine.getIndex()).thenReturn(13); - var thrown = catchThrowableOfType( - () -> instruction.execute(machine), - GrammarException.class); + var thrown = catchThrowableOfType(GrammarException.class, + () -> instruction.execute(machine) + ); assertThat(thrown).hasMessage("The inner part of ZeroOrMore and OneOrMore must not allow empty matches"); } diff --git a/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/internal/vm/MachineIntegrationTest.java b/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/internal/vm/MachineIntegrationTest.java index 22a695d57b..589248773f 100644 --- a/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/internal/vm/MachineIntegrationTest.java +++ b/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/internal/vm/MachineIntegrationTest.java @@ -112,7 +112,7 @@ void zeroOrMore_should_not_cause_infinite_loop() { new FirstOfExpression( new StringExpression("foo"), new StringExpression(""))).compile(new CompilationHandler()); - var thrown = catchThrowableOfType(() -> Machine.execute("foo", instructions), GrammarException.class); + var thrown = catchThrowableOfType(GrammarException.class, () -> Machine.execute("foo", instructions)); assertThat(thrown).hasMessage("The inner part of ZeroOrMore and OneOrMore must not allow empty matches"); } @@ -132,7 +132,7 @@ void oneOrMore_should_not_cause_infinite_loop() { new FirstOfExpression( new StringExpression("foo"), new StringExpression(""))).compile(new CompilationHandler()); - var thrown = catchThrowableOfType(() -> Machine.execute("foo", instructions), GrammarException.class); + var thrown = catchThrowableOfType(GrammarException.class, () -> Machine.execute("foo", instructions)); assertThat(thrown).hasMessage("The inner part of ZeroOrMore and OneOrMore must not allow empty matches"); } diff --git a/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/internal/vm/MachineTest.java b/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/internal/vm/MachineTest.java index 485c38e891..d587b68c11 100644 --- a/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/internal/vm/MachineTest.java +++ b/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/internal/vm/MachineTest.java @@ -35,9 +35,9 @@ class MachineTest { @Test void subSequence_not_supported() { var machine = new Machine("", new Instruction[0]); - var thrown = catchThrowableOfType( - () -> machine.subSequence(0, 0), - UnsupportedOperationException.class); + var thrown = catchThrowableOfType(UnsupportedOperationException.class, + () -> machine.subSequence(0, 0) + ); assertThat(thrown).isExactlyInstanceOf(UnsupportedOperationException.class); } @@ -111,9 +111,9 @@ void should_detect_left_recursion() { assertThat(machine.peek().leftRecursion()).isEqualTo(1); // same rule and index of input sequence - var thrown = catchThrowableOfType( - () -> machine.pushReturn(0, matcher, 0), - GrammarException.class); + var thrown = catchThrowableOfType(GrammarException.class, + () -> machine.pushReturn(0, matcher, 0) + ); assertThat(thrown).hasMessage("Left recursion has been detected, involved rule: " + matcher.toString()); } diff --git a/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/internal/vm/PatternExpressionTest.java b/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/internal/vm/PatternExpressionTest.java index 2b02ae0e56..11b219bcbd 100644 --- a/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/internal/vm/PatternExpressionTest.java +++ b/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/internal/vm/PatternExpressionTest.java @@ -92,12 +92,12 @@ void should_backtrack() { void should_catch_StackOverflowError() { when(machine.length()).thenReturn(1); when(machine.charAt(0)).thenThrow(StackOverflowError.class); - var thrown = catchThrowableOfType( - () -> expression.execute(machine), - GrammarException.class); + var thrown = catchThrowableOfType(GrammarException.class, + () -> expression.execute(machine) + ); assertThat(thrown) .hasMessage("The regular expression 'foo|bar' has led to a stack overflow error." - + " This error is certainly due to an inefficient use of alternations. See http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5050507"); + + " This error is certainly due to an inefficient use of alternations. See http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5050507"); } } diff --git a/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/internal/vm/RuleRefExpressionTest.java b/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/internal/vm/RuleRefExpressionTest.java index 15c5e3edaf..f86a1a5674 100644 --- a/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/internal/vm/RuleRefExpressionTest.java +++ b/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/internal/vm/RuleRefExpressionTest.java @@ -43,9 +43,9 @@ void should_compile() { @Test void can_not_be_executed() { - var thrown = catchThrowableOfType( - () -> expression.execute(machine), - UnsupportedOperationException.class); + var thrown = catchThrowableOfType(UnsupportedOperationException.class, + () -> expression.execute(machine) + ); assertThat(thrown).isExactlyInstanceOf(UnsupportedOperationException.class); } diff --git a/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/parser/GrammarOperatorsTest.java b/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/parser/GrammarOperatorsTest.java index 24b0734cef..16ce6d415d 100644 --- a/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/parser/GrammarOperatorsTest.java +++ b/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/parser/GrammarOperatorsTest.java @@ -103,16 +103,16 @@ void test_skippedTrivia() { @Test void illegal_argument() { - var thrown = catchThrowableOfType( - () -> GrammarOperators.sequence(new Object()), - IllegalArgumentException.class); + var thrown = catchThrowableOfType(IllegalArgumentException.class, + () -> GrammarOperators.sequence(new Object()) + ); assertThat(thrown).hasMessage("Incorrect type of parsing expression: class java.lang.Object"); } @Test void private_constructor() throws Exception { Constructor constructor = GrammarOperators.class.getDeclaredConstructor(); - assertThat(constructor.isAccessible()).isFalse(); + assertThat(constructor.canAccess(null)).isFalse(); constructor.setAccessible(true); constructor.newInstance(); } diff --git a/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/parser/LexerlessGrammarTest.java b/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/parser/LexerlessGrammarTest.java index 8c1ef946ff..df8b2cd804 100644 --- a/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/parser/LexerlessGrammarTest.java +++ b/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/parser/LexerlessGrammarTest.java @@ -41,7 +41,7 @@ void should_instanciate_rule_fields() { @Test void should_throw_exception() { - var thrown = catchThrowableOfType(IllegalGrammar::new, GrammarException.class); + var thrown = catchThrowableOfType(GrammarException.class, IllegalGrammar::new); assertThat(thrown).hasMessageStartingWith("Unable to instanciate the rule 'rootRule': "); } diff --git a/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/parser/ParseRunnerTest.java b/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/parser/ParseRunnerTest.java index 671c643e26..30950d4345 100644 --- a/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/parser/ParseRunnerTest.java +++ b/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/parser/ParseRunnerTest.java @@ -32,9 +32,9 @@ class ParseRunnerTest { @Test void should_not_accept_null() { - var thrown = catchThrowableOfType( - () -> new ParseRunner(null), - NullPointerException.class); + var thrown = catchThrowableOfType(NullPointerException.class, + () -> new ParseRunner(null) + ); assertThat(thrown).isExactlyInstanceOf(NullPointerException.class); } diff --git a/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/parser/ParserAdapterTest.java b/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/parser/ParserAdapterTest.java index c3672836c4..9415fd2218 100644 --- a/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/parser/ParserAdapterTest.java +++ b/cxx-sslr/sslr-core/src/test/java/org/sonar/cxx/sslr/parser/ParserAdapterTest.java @@ -65,9 +65,9 @@ void should_parse_string() { @Test void should_not_parse_invalid_string() { - var thrown = catchThrowableOfType( - () -> parser.parse(""), - RecognitionException.class); + var thrown = catchThrowableOfType(RecognitionException.class, + () -> parser.parse("") + ); assertThat(thrown).hasMessage("Parse error at line 1 column 1:\n" + "\n" + "1: \n" + " ^\n"); } @@ -75,8 +75,7 @@ void should_not_parse_invalid_string() { void should_parse_file() throws Exception { var file = new File(tempDir, "file.txt"); try ( - var fileOutputStream = new FileOutputStream(file); - var writer = new OutputStreamWriter(fileOutputStream, StandardCharsets.UTF_8);) { + var fileOutputStream = new FileOutputStream(file); var writer = new OutputStreamWriter(fileOutputStream, StandardCharsets.UTF_8);) { writer.write("1+1"); } parser.parse(file); @@ -85,9 +84,9 @@ void should_parse_file() throws Exception { @Test void should_not_parse_invalid_file() { var file = new File("notfound"); - var thrown = catchThrowableOfType( - () -> parser.parse(file), - RecognitionException.class); + var thrown = catchThrowableOfType(RecognitionException.class, + () -> parser.parse(file) + ); assertThat(thrown).isExactlyInstanceOf(RecognitionException.class); } @@ -99,17 +98,17 @@ void builder_should_not_create_new_instance_from_adapter() { @Test void parse_tokens_unsupported() { List tokens = Collections.emptyList(); - var thrown = catchThrowableOfType( - () -> parser.parse(tokens), - UnsupportedOperationException.class); + var thrown = catchThrowableOfType(UnsupportedOperationException.class, + () -> parser.parse(tokens) + ); assertThat(thrown).isExactlyInstanceOf(UnsupportedOperationException.class); } @Test void getRootRule_unsupported() { - var thrown = catchThrowableOfType( - () -> parser.getRootRule(), - UnsupportedOperationException.class); + var thrown = catchThrowableOfType(UnsupportedOperationException.class, + () -> parser.getRootRule() + ); assertThat(thrown).isExactlyInstanceOf(UnsupportedOperationException.class); } diff --git a/cxx-sslr/sslr-testing-harness/src/test/java/org/sonar/cxx/sslr/tests/AssertionsTest.java b/cxx-sslr/sslr-testing-harness/src/test/java/org/sonar/cxx/sslr/tests/AssertionsTest.java index 03522c83c0..acab41a2ec 100644 --- a/cxx-sslr/sslr-testing-harness/src/test/java/org/sonar/cxx/sslr/tests/AssertionsTest.java +++ b/cxx-sslr/sslr-testing-harness/src/test/java/org/sonar/cxx/sslr/tests/AssertionsTest.java @@ -40,7 +40,7 @@ void test() { @Test void private_constructor() throws Exception { Constructor constructor = Assertions.class.getDeclaredConstructor(); - assertThat(constructor.isAccessible()).isFalse(); + assertThat(constructor.canAccess(null)).isFalse(); constructor.setAccessible(true); constructor.newInstance(); } diff --git a/cxx-sslr/sslr-testing-harness/src/test/java/org/sonar/cxx/sslr/tests/ParserAssertTest.java b/cxx-sslr/sslr-testing-harness/src/test/java/org/sonar/cxx/sslr/tests/ParserAssertTest.java index d7e5b74009..c32f3efb0d 100644 --- a/cxx-sslr/sslr-testing-harness/src/test/java/org/sonar/cxx/sslr/tests/ParserAssertTest.java +++ b/cxx-sslr/sslr-testing-harness/src/test/java/org/sonar/cxx/sslr/tests/ParserAssertTest.java @@ -67,60 +67,59 @@ void ok() { @Test void test_matches_failure() { - var thrown = catchThrowableOfType( - () -> new ParserAssert(parser).matches("bar"), - ParsingResultComparisonFailure.class + var thrown = catchThrowableOfType(ParsingResultComparisonFailure.class, + () -> new ParserAssert(parser).matches("bar") ); assertThat(thrown).hasMessageContaining("Rule 'ruleName' should match:\nbar"); } @Test void test2_matches_failure() { - var thrown = catchThrowableOfType( - () -> new ParserAssert(parser).matches("foo bar"), - ParsingResultComparisonFailure.class); + var thrown = catchThrowableOfType(ParsingResultComparisonFailure.class, + () -> new ParserAssert(parser).matches("foo bar") + ); assertThat(thrown).hasMessageContaining("Rule 'ruleName' should match:\nfoo bar"); } @Test void test_notMatches_failure() { - var thrown = catchThrowableOfType( - () -> new ParserAssert(parser).notMatches("foo"), - AssertionError.class); + var thrown = catchThrowableOfType(AssertionError.class, + () -> new ParserAssert(parser).notMatches("foo") + ); assertThat(thrown.getMessage()).isEqualTo("Rule 'ruleName' should not match:\nfoo"); } @Test void test_notMatches_failure2() { rule.override("foo", GenericTokenType.EOF); - var thrown = catchThrowableOfType( - () -> new ParserAssert(parser).notMatches("foo"), - AssertionError.class); + var thrown = catchThrowableOfType(AssertionError.class, + () -> new ParserAssert(parser).notMatches("foo") + ); assertThat(thrown).hasMessage("Rule 'ruleName' should not match:\nfoo"); } @Test void should_not_accept_null() { - var thrown = catchThrowableOfType( - () -> new ParserAssert((Parser) null).matches(""), - AssertionError.class); + var thrown = catchThrowableOfType(AssertionError.class, + () -> new ParserAssert((Parser) null).matches("") + ); assertThat(thrown).hasMessageContaining("Expecting actual not to be null"); } @Test void should_not_accept_null_root_rule() { parser.setRootRule(null); - var thrown = catchThrowableOfType( - () -> new ParserAssert(parser).matches(""), - AssertionError.class); + var thrown = catchThrowableOfType(AssertionError.class, + () -> new ParserAssert(parser).matches("") + ); assertThat(thrown).hasMessage("Root rule of the parser should not be null"); } @Test void test_lexer_failure() { - var thrown = catchThrowableOfType( - () -> new ParserAssert(parser).matches("_"), - ParsingResultComparisonFailure.class); + var thrown = catchThrowableOfType(ParsingResultComparisonFailure.class, + () -> new ParserAssert(parser).matches("_") + ); var expectedMessage = new StringBuilder() .append("Rule 'ruleName' should match:\n") .append("_\n") diff --git a/cxx-sslr/sslr-testing-harness/src/test/java/org/sonar/cxx/sslr/tests/RuleAssertTest.java b/cxx-sslr/sslr-testing-harness/src/test/java/org/sonar/cxx/sslr/tests/RuleAssertTest.java index ea934f6412..e4f885c70b 100644 --- a/cxx-sslr/sslr-testing-harness/src/test/java/org/sonar/cxx/sslr/tests/RuleAssertTest.java +++ b/cxx-sslr/sslr-testing-harness/src/test/java/org/sonar/cxx/sslr/tests/RuleAssertTest.java @@ -47,25 +47,25 @@ void ok() { @Test void test_matches_failure() { - var thrown = catchThrowableOfType( - () -> new RuleAssert(rule).matches("bar"), - ParsingResultComparisonFailure.class); + var thrown = catchThrowableOfType(ParsingResultComparisonFailure.class, + () -> new RuleAssert(rule).matches("bar") + ); assertThat(thrown).hasMessageContaining("Rule 'ruleName' should match:\nbar"); } @Test void test_notMatches_failure() { - var thrown = catchThrowableOfType( - () -> new RuleAssert(rule).notMatches("foo"), - AssertionError.class); + var thrown = catchThrowableOfType(AssertionError.class, + () -> new RuleAssert(rule).notMatches("foo") + ); assertThat(thrown).hasMessage("Rule 'ruleName' should not match:\nfoo"); } @Test void should_not_accept_null() { - var thrown = catchThrowableOfType( - () -> new RuleAssert((Rule) null).matches(""), - AssertionError.class); + var thrown = catchThrowableOfType(AssertionError.class, + () -> new RuleAssert((Rule) null).matches("") + ); assertThat(thrown).hasMessageContaining("Expecting actual not to be null"); } @@ -83,18 +83,16 @@ void matchesPrefix_ok() { @Test void matchesPrefix_full_mistmatch() { - var thrown = catchThrowableOfType( - () -> new RuleAssert(rule).matchesPrefix("bar", " baz"), - ParsingResultComparisonFailure.class + var thrown = catchThrowableOfType(ParsingResultComparisonFailure.class, + () -> new RuleAssert(rule).matchesPrefix("bar", " baz") ); assertThat(thrown).hasMessageContaining("Rule 'ruleName' should match:\nbar\nwhen followed by:\n baz"); } @Test void matchesPrefix_wrong_prefix() { - var thrown = catchThrowableOfType( - () -> new RuleAssert(rule).matchesPrefix("foo bar", " baz"), - ParsingResultComparisonFailure.class + var thrown = catchThrowableOfType(ParsingResultComparisonFailure.class, + () -> new RuleAssert(rule).matchesPrefix("foo bar", " baz") ); assertThat(thrown).hasMessage("Rule 'ruleName' should match:\nfoo bar\nwhen followed by:\n baz\nbut matched:\nfoo"); } diff --git a/cxx-sslr/sslr-tests/src/test/java/com/sonar/cxx/sslr/api/AstNodeTest.java b/cxx-sslr/sslr-tests/src/test/java/com/sonar/cxx/sslr/api/AstNodeTest.java index 1297306d6c..b785e44170 100644 --- a/cxx-sslr/sslr-tests/src/test/java/com/sonar/cxx/sslr/api/AstNodeTest.java +++ b/cxx-sslr/sslr-tests/src/test/java/com/sonar/cxx/sslr/api/AstNodeTest.java @@ -82,18 +82,6 @@ void testHasChildren() { assertThat(expr.hasChildren()).isFalse(); } - @Test - void testGetChild() { - var parent = new AstNode(new NodeType(), "parent", null); - var child1 = new AstNode(new NodeType(), "child1", null); - var child2 = new AstNode(new NodeType(), "child2", null); - parent.addChild(child1); - parent.addChild(child2); - - assertThat(parent.getChild(0)).isSameAs(child1); - assertThat(parent.getChild(1)).isSameAs(child2); - } - @Test void testGetLastToken() { var lastToken = mock(Token.class); @@ -128,21 +116,6 @@ void testGetTokens() { assertThat(parent.getTokens().get(1)).isSameAs(child2Token); } - @Test - void testGetChildWithBadIndex() { - var token = mock(Token.class); - when(token.getType()).thenReturn(GenericTokenType.IDENTIFIER); - when(token.getValue()).thenReturn("PI"); - var parent = new AstNode(new NodeType(), "parent", token); - var child1 = new AstNode(new NodeType(), "child1", null); - - var thrown = catchThrowableOfType(() -> { - parent.addChild(child1); - parent.getChild(1); - }, IllegalStateException.class); - assertThat(thrown).isExactlyInstanceOf(IllegalStateException.class); - } - @Test void testNextSibling() { var expr1 = new AstNode(new NodeType(), "expr1", null); diff --git a/cxx-sslr/sslr-tests/src/test/java/com/sonar/cxx/sslr/impl/ParserTest.java b/cxx-sslr/sslr-tests/src/test/java/com/sonar/cxx/sslr/impl/ParserTest.java index 6c13fd5192..76cb57d7ed 100644 --- a/cxx-sslr/sslr-tests/src/test/java/com/sonar/cxx/sslr/impl/ParserTest.java +++ b/cxx-sslr/sslr-tests/src/test/java/com/sonar/cxx/sslr/impl/ParserTest.java @@ -34,17 +34,17 @@ class ParserTest { @Test void lexerErrorStringWrappedInRecognitionException() { - var thrown = catchThrowableOfType(() -> { + var thrown = catchThrowableOfType(RecognitionException.class, () -> { parseString("."); - }, RecognitionException.class); + }); assertThat(thrown).isExactlyInstanceOf(RecognitionException.class); } @Test void lexerErrorFileWrappedInRecognitionException() { - var thrown = catchThrowableOfType(() -> { + var thrown = catchThrowableOfType(RecognitionException.class, () -> { parseFile("/OwnExamples/lexererror.mc"); - }, RecognitionException.class); + }); assertThat(thrown).isExactlyInstanceOf(RecognitionException.class); } diff --git a/cxx-sslr/sslr-tests/src/test/java/com/sonar/cxx/sslr/impl/matcher/RuleDefinitionTest.java b/cxx-sslr/sslr-tests/src/test/java/com/sonar/cxx/sslr/impl/matcher/RuleDefinitionTest.java index ba21d0d673..42e01bf6dc 100644 --- a/cxx-sslr/sslr-tests/src/test/java/com/sonar/cxx/sslr/impl/matcher/RuleDefinitionTest.java +++ b/cxx-sslr/sslr-tests/src/test/java/com/sonar/cxx/sslr/impl/matcher/RuleDefinitionTest.java @@ -36,7 +36,7 @@ class RuleDefinitionTest { @Test void testEmptyIs() { var javaClassDefinition = new RuleDefinition("JavaClassDefinition"); - var thrown = catchThrowableOfType(javaClassDefinition::is, IllegalStateException.class); + var thrown = catchThrowableOfType(IllegalStateException.class, javaClassDefinition::is); assertThat(thrown.getMessage()).isEqualTo("The rule 'JavaClassDefinition' should at least contains one matcher."); } @@ -44,9 +44,8 @@ void testEmptyIs() { void testMoreThanOneDefinitionForASigleRuleWithIs() { var javaClassDefinition = new RuleDefinition("JavaClassDefinition"); javaClassDefinition.is("option1"); - var thrown = catchThrowableOfType( - () -> javaClassDefinition.is("option2"), - IllegalStateException.class + var thrown = catchThrowableOfType(IllegalStateException.class, + () -> javaClassDefinition.is("option2") ); assertThat(thrown) .hasMessage("The rule 'JavaClassDefinition' has already been defined somewhere in the grammar."); diff --git a/cxx-sslr/sslr-toolkit/src/main/java/org/sonar/cxx/sslr/toolkit/Toolkit.java b/cxx-sslr/sslr-toolkit/src/main/java/org/sonar/cxx/sslr/toolkit/Toolkit.java index 99222582be..3fceb7fe56 100644 --- a/cxx-sslr/sslr-toolkit/src/main/java/org/sonar/cxx/sslr/toolkit/Toolkit.java +++ b/cxx-sslr/sslr-toolkit/src/main/java/org/sonar/cxx/sslr/toolkit/Toolkit.java @@ -23,14 +23,10 @@ */ package org.sonar.cxx.sslr.toolkit; // cxx: in use -import com.sonar.cxx.sslr.impl.Parser; -import java.util.Collections; -import java.util.List; import java.util.Objects; import javax.annotation.Nonnull; import javax.swing.SwingUtilities; import javax.swing.UIManager; -import org.sonar.colorizer.Tokenizer; import org.sonar.cxx.sslr.internal.toolkit.SourceCodeModel; import org.sonar.cxx.sslr.internal.toolkit.ToolkitPresenter; import org.sonar.cxx.sslr.internal.toolkit.ToolkitViewImpl; @@ -40,37 +36,6 @@ public class Toolkit { private final String title; private final ConfigurationModel configurationModel; - /** - * Create a Toolkit with a title, a static parser and static tokenizers. - * - * @param parser - * @param tokenizers - * @param title - * - * @deprecated in 1.17, use {@link #Toolkit(String, ConfigurationModel)} instead. - */ - @Deprecated(since = "1.17") - public Toolkit(final Parser parser, final List tokenizers, String title) { - this(title, new AbstractConfigurationModel() { - - @Override - public List getProperties() { - return Collections.emptyList(); - } - - @Override - public List doGetTokenizers() { - return tokenizers; - } - - @Override - public Parser doGetParser() { - return parser; - } - - }); - } - /** * Creates a Toolkit with a title, and the given {@link ConfigurationModel}. * diff --git a/cxx-sslr/sslr-toolkit/src/test/java/org/sonar/cxx/sslr/internal/toolkit/LineOffsetsTest.java b/cxx-sslr/sslr-toolkit/src/test/java/org/sonar/cxx/sslr/internal/toolkit/LineOffsetsTest.java index f5aec54855..d791d5fd35 100644 --- a/cxx-sslr/sslr-toolkit/src/test/java/org/sonar/cxx/sslr/internal/toolkit/LineOffsetsTest.java +++ b/cxx-sslr/sslr-toolkit/src/test/java/org/sonar/cxx/sslr/internal/toolkit/LineOffsetsTest.java @@ -169,9 +169,9 @@ void getOffsetCariageReturnAndLineFeedAsSingleOffset() { void getOffsetBadLine() { var lineOffsets = new LineOffsets(""); - var thrown = catchThrowableOfType(() -> { + var thrown = catchThrowableOfType(IllegalArgumentException.class, () -> { lineOffsets.getOffset(0, 0); - }, IllegalArgumentException.class); + }); assertThat(thrown).isExactlyInstanceOf(IllegalArgumentException.class); } @@ -179,9 +179,9 @@ void getOffsetBadLine() { void getOffsetBadColumn() { var lineOffsets = new LineOffsets(""); - var thrown = catchThrowableOfType(() -> { + var thrown = catchThrowableOfType(IllegalArgumentException.class, () -> { lineOffsets.getOffset(1, -1); - }, IllegalArgumentException.class); + }); assertThat(thrown).isExactlyInstanceOf(IllegalArgumentException.class); } diff --git a/cxx-sslr/sslr-toolkit/src/test/java/org/sonar/cxx/sslr/internal/toolkit/ToolkitPresenterTest.java b/cxx-sslr/sslr-toolkit/src/test/java/org/sonar/cxx/sslr/internal/toolkit/ToolkitPresenterTest.java index 0ffce15a0a..1f2518949f 100644 --- a/cxx-sslr/sslr-toolkit/src/test/java/org/sonar/cxx/sslr/internal/toolkit/ToolkitPresenterTest.java +++ b/cxx-sslr/sslr-toolkit/src/test/java/org/sonar/cxx/sslr/internal/toolkit/ToolkitPresenterTest.java @@ -52,9 +52,9 @@ class ToolkitPresenterTest { void checkInitializedBad() { var presenter = new ToolkitPresenter(mock(ConfigurationModel.class), mock(SourceCodeModel.class)); - var thrown = catchThrowableOfType(() -> { + var thrown = catchThrowableOfType(IllegalStateException.class, () -> { presenter.checkInitialized(); - }, IllegalStateException.class); + }); assertThat(thrown) .isExactlyInstanceOf(IllegalStateException.class) .hasMessage("the view must be set before the presenter can be ran"); @@ -157,9 +157,9 @@ void run_should_call_initConfigurationTab() { @Test void runFailsWithoutView() { - var thrown = catchThrowableOfType(() -> { + var thrown = catchThrowableOfType(IllegalStateException.class, () -> { new ToolkitPresenter(mock(ConfigurationModel.class), mock(SourceCodeModel.class)).run("foo"); - }, IllegalStateException.class); + }); assertThat(thrown).isExactlyInstanceOf(IllegalStateException.class); } @@ -199,7 +199,7 @@ void onSourceCodeOpenButtonClick_with_parse_error_should_clear_console_and_displ when(view.pickFileToParse()).thenReturn(file); var model = mock(SourceCodeModel.class); Mockito.doThrow(new RuntimeException("Parse error")).when(model).setSourceCode(Mockito.any(File.class), Mockito.any( - Charset.class)); + Charset.class)); var presenter = new ToolkitPresenter((ConfigurationModel) when(mock(ConfigurationModel.class) .getCharset()).thenReturn(StandardCharsets.UTF_8).getMock(), model); @@ -448,10 +448,10 @@ void onConfigurationPropertyFocusLost_with_invalid_name() { var view = mock(ToolkitView.class); var presenter = new ToolkitPresenter(mock(ConfigurationModel.class), mock(SourceCodeModel.class)); - var thrown = catchThrowableOfType(() -> { + var thrown = catchThrowableOfType(IllegalArgumentException.class, () -> { presenter.setView(view); presenter.onConfigurationPropertyFocusLost("name"); - }, IllegalArgumentException.class); + }); assertThat(thrown) .isExactlyInstanceOf(IllegalArgumentException.class) .hasMessage("No such configuration property: name"); diff --git a/cxx-sslr/sslr-toolkit/src/test/java/org/sonar/cxx/sslr/toolkit/ConfigurationPropertyTest.java b/cxx-sslr/sslr-toolkit/src/test/java/org/sonar/cxx/sslr/toolkit/ConfigurationPropertyTest.java index eb4c89d789..298c9f6fd4 100644 --- a/cxx-sslr/sslr-toolkit/src/test/java/org/sonar/cxx/sslr/toolkit/ConfigurationPropertyTest.java +++ b/cxx-sslr/sslr-toolkit/src/test/java/org/sonar/cxx/sslr/toolkit/ConfigurationPropertyTest.java @@ -46,8 +46,8 @@ void validate() { assertThat(new ConfigurationProperty("", "", "").validate("foo")).isEmpty(); var property = new ConfigurationProperty("", "", "foo", (String newValueCandidate) -> "foo".equals(newValueCandidate) - ? "" - : "Only the value \"foo\" is allowed."); + ? "" + : "Only the value \"foo\" is allowed."); assertThat(property.validate("")).isEqualTo("Only the value \"foo\" is allowed."); assertThat(property.validate("foo")).isEmpty(); assertThat(property.validate("bar")).isEqualTo("Only the value \"foo\" is allowed."); @@ -61,12 +61,11 @@ void setValue_should_succeed_if_validation_passes() { @Test void setValue_should_fail_if_validation_fails() { - var thrown = catchThrowableOfType( - () -> new ConfigurationProperty("", "", "", (String newValueCandidate) -> newValueCandidate.isEmpty() ? "" - : "The value \"" + newValueCandidate - + "\" did not pass validation: Not valid!") - .setValue("foo"), - IllegalArgumentException.class); + var thrown = catchThrowableOfType(IllegalArgumentException.class, + () -> new ConfigurationProperty("", "", "", (String newValueCandidate) + -> newValueCandidate.isEmpty() ? "" : "The value \"" + newValueCandidate + "\" did not pass validation: Not valid!") + .setValue("foo") + ); assertThat(thrown).hasMessageContaining("The value \"foo\" did not pass validation: Not valid!"); } diff --git a/cxx-sslr/sslr-toolkit/src/test/java/org/sonar/cxx/sslr/toolkit/ValidatorsTest.java b/cxx-sslr/sslr-toolkit/src/test/java/org/sonar/cxx/sslr/toolkit/ValidatorsTest.java index 0f088e735d..c81c1cab02 100644 --- a/cxx-sslr/sslr-toolkit/src/test/java/org/sonar/cxx/sslr/toolkit/ValidatorsTest.java +++ b/cxx-sslr/sslr-toolkit/src/test/java/org/sonar/cxx/sslr/toolkit/ValidatorsTest.java @@ -67,9 +67,9 @@ void integerRangeValidator() { @Test void integerRangeValidator_should_fail_with_upper_smaller_than_lower_bound() { - var thrown = catchThrowableOfType( - () -> Validators.integerRangeValidator(42, 0), - IllegalArgumentException.class); + var thrown = catchThrowableOfType(IllegalArgumentException.class, + () -> Validators.integerRangeValidator(42, 0) + ); assertThat(thrown).hasMessage("lowerBound(42) <= upperBound(0)"); } diff --git a/cxx-sslr/sslr-xpath/src/test/java/com/sonar/cxx/sslr/impl/xpath/AstNodeNavigatorTest.java b/cxx-sslr/sslr-xpath/src/test/java/com/sonar/cxx/sslr/impl/xpath/AstNodeNavigatorTest.java index e8976dfcc3..b1cef396d4 100644 --- a/cxx-sslr/sslr-xpath/src/test/java/com/sonar/cxx/sslr/impl/xpath/AstNodeNavigatorTest.java +++ b/cxx-sslr/sslr-xpath/src/test/java/com/sonar/cxx/sslr/impl/xpath/AstNodeNavigatorTest.java @@ -45,17 +45,17 @@ public void setUp() { @Test void getTextStringValue() { - var thrown = catchThrowableOfType( - () -> navigator.getTextStringValue(null), - UnsupportedOperationException.class); + var thrown = catchThrowableOfType(UnsupportedOperationException.class, + () -> navigator.getTextStringValue(null) + ); assertThat(thrown).isExactlyInstanceOf(UnsupportedOperationException.class); } @Test void getCommentStringValue() { - var thrown = catchThrowableOfType( - () -> navigator.getCommentStringValue(null), - UnsupportedOperationException.class); + var thrown = catchThrowableOfType(UnsupportedOperationException.class, + () -> navigator.getCommentStringValue(null) + ); assertThat(thrown).isExactlyInstanceOf(UnsupportedOperationException.class); } @@ -77,17 +77,17 @@ void getAttributeStringValue() throws Exception { void getAttributeStringValue2() { var attribute = mock(Attribute.class); when(attribute.getName()).thenReturn("foo"); - var thrown = catchThrowableOfType( - () -> navigator.getAttributeStringValue(attribute), - UnsupportedOperationException.class); + var thrown = catchThrowableOfType(UnsupportedOperationException.class, + () -> navigator.getAttributeStringValue(attribute) + ); assertThat(thrown).isExactlyInstanceOf(UnsupportedOperationException.class); } @Test void getElementStringValue() { - var thrown = catchThrowableOfType( - () -> navigator.getElementStringValue(null), - UnsupportedOperationException.class); + var thrown = catchThrowableOfType(UnsupportedOperationException.class, + () -> navigator.getElementStringValue(null) + ); assertThat(thrown) .hasMessage("Implicit nodes to string conversion is not supported. Use the tokenValue attribute instead."); } @@ -95,17 +95,17 @@ void getElementStringValue() { /* Namespaces */ @Test void getNamespacePrefix() { - var thrown = catchThrowableOfType( - () -> navigator.getNamespacePrefix(null), - UnsupportedOperationException.class); + var thrown = catchThrowableOfType(UnsupportedOperationException.class, + () -> navigator.getNamespacePrefix(null) + ); assertThat(thrown).isExactlyInstanceOf(UnsupportedOperationException.class); } @Test void getNamespaceStringValue() { - var thrown = catchThrowableOfType( - () -> navigator.getNamespaceStringValue(null), - UnsupportedOperationException.class); + var thrown = catchThrowableOfType(UnsupportedOperationException.class, + () -> navigator.getNamespaceStringValue(null) + ); assertThat(thrown).isExactlyInstanceOf(UnsupportedOperationException.class); } @@ -217,9 +217,9 @@ void getChildAxisIterator() { @Test void getChildAxisIterator2() { - var thrown = catchThrowableOfType( - () -> navigator.getChildAxisIterator(new Object()), - UnsupportedOperationException.class); + var thrown = catchThrowableOfType(UnsupportedOperationException.class, + () -> navigator.getChildAxisIterator(new Object()) + ); assertThat(thrown).isExactlyInstanceOf(UnsupportedOperationException.class); } @@ -236,25 +236,25 @@ void getParentNode() { @Test void getParentNode2() { - var thrown = catchThrowableOfType( - () -> navigator.getParentNode(new Object()), - UnsupportedOperationException.class); + var thrown = catchThrowableOfType(UnsupportedOperationException.class, + () -> navigator.getParentNode(new Object()) + ); assertThat(thrown).isExactlyInstanceOf(UnsupportedOperationException.class); } @Test void getParentAxisIterator() { - var thrown = catchThrowableOfType( - () -> navigator.getParentAxisIterator(new Object()), - UnsupportedOperationException.class); + var thrown = catchThrowableOfType(UnsupportedOperationException.class, + () -> navigator.getParentAxisIterator(new Object()) + ); assertThat(thrown).isExactlyInstanceOf(UnsupportedOperationException.class); } @Test void getAttributeAxisIterator() { - var thrown = catchThrowableOfType( - () -> navigator.getAttributeAxisIterator(new Object()), - UnsupportedOperationException.class); + var thrown = catchThrowableOfType(UnsupportedOperationException.class, + () -> navigator.getAttributeAxisIterator(new Object()) + ); assertThat(thrown).isExactlyInstanceOf(UnsupportedOperationException.class); } diff --git a/sonar-cxx-plugin/src/main/java/org/sonar/plugins/cxx/CxxSquidSensor.java b/sonar-cxx-plugin/src/main/java/org/sonar/plugins/cxx/CxxSquidSensor.java index 41f532c323..06069ca630 100644 --- a/sonar-cxx-plugin/src/main/java/org/sonar/plugins/cxx/CxxSquidSensor.java +++ b/sonar-cxx-plugin/src/main/java/org/sonar/plugins/cxx/CxxSquidSensor.java @@ -54,8 +54,8 @@ import org.sonar.api.resources.Qualifiers; import org.sonar.api.rule.RuleKey; import org.sonar.api.scanner.sensor.ProjectSensor; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.cxx.CxxAstScanner; import org.sonar.cxx.CxxMetrics; import org.sonar.cxx.api.CxxMetric; @@ -92,7 +92,7 @@ public class CxxSquidSensor implements ProjectSensor { public static final String CPD_IGNORE_LITERALS_KEY = "sonar.cxx.metric.cpd.ignoreLiterals"; public static final String CPD_IGNORE_IDENTIFIERS_KEY = "sonar.cxx.metric.cpd.ignoreIdentifiers"; - private static final Logger LOG = Loggers.get(CxxSquidSensor.class); + private static final Logger LOG = LoggerFactory.getLogger(CxxSquidSensor.class); private final FileLinesContextFactory fileLinesContextFactory; private final CxxChecks checks; diff --git a/sonar-cxx-plugin/src/main/java/org/sonar/plugins/cxx/DroppedPropertiesSensor.java b/sonar-cxx-plugin/src/main/java/org/sonar/plugins/cxx/DroppedPropertiesSensor.java index e6f218e0e6..e5b18898c6 100644 --- a/sonar-cxx-plugin/src/main/java/org/sonar/plugins/cxx/DroppedPropertiesSensor.java +++ b/sonar-cxx-plugin/src/main/java/org/sonar/plugins/cxx/DroppedPropertiesSensor.java @@ -27,13 +27,13 @@ import org.sonar.api.batch.sensor.SensorDescriptor; import org.sonar.api.notifications.AnalysisWarnings; import org.sonar.api.scanner.sensor.ProjectSensor; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; @Phase(name = Phase.Name.PRE) public class DroppedPropertiesSensor implements ProjectSensor { - private static final Logger LOG = Loggers.get(DroppedPropertiesSensor.class); + private static final Logger LOG = LoggerFactory.getLogger(DroppedPropertiesSensor.class); private static final String MSG_COMPILER = "Use 'sonar.cxx.vc' or 'sonar.cxx.gcc' instead." + " Use 'sonar.cxx.msbuild' to read includes and defines from MSBuild log file.";