Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 2 additions & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -259,11 +259,11 @@ str="<line including <substring>>"; sub="<substring>"; pre="${str%%"$sub"*}" suf

# Ruling Tests

Ruling tests validate that rule fixes don't break existing true positives. They run the analyzer against real-world Java projects (`guava`, `commons-beanutils`, `eclipse-jetty`, `sonar-server`, `jboss-ejb3-tutorial`, `regex-examples`) and compare results to expected baselines.
Ruling tests validate that rule fixes don't break existing true positives. They run the analyzer against real-world Java projects (`guava`, `commons-beanutils`, `eclipse-jetty`, `sonarqube-6.5`, `jboss-ejb3-tutorial`, `regex-examples`, `mall`, `vibebot`) and compare results to expected baselines.

- Expected ruling files: `its/ruling/src/test/resources/expected/<project>/java-<RULE_ID>.json`
- Actual ruling output: `its/ruling/target/actual/<project>/java-<RULE_ID>.json`
- Format: `{"group:artifact:path/to/File.java": [line1, line2, ...], ...}`
- Format: `{"<projectKey>:path/to/File.java": [line1, line2, ...], ...}` where `<projectKey>` is the project's folder name under `its/sources/`
- Ruling sources: `its/sources/<project>/`

Do not try to run these locally. A PR should be created automatically when they fail on CI.
Expand Down
31 changes: 14 additions & 17 deletions its/ruling/src/test/java/org/sonar/java/it/JavaRulingTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,7 @@ private static void copyFile(Path source, Path targetDir) {
@Test
public void spring_mall() throws Exception {
String projectName = "mall";
MavenBuild build = test_project("com.macro.mall:mall", projectName);
MavenBuild build = test_project(projectName);
build
.setProperty("docker.skip", "true")
.setProperty("java.version", "21")
Expand All @@ -211,7 +211,7 @@ public void spring_mall() throws Exception {
@Test
public void guava() throws Exception {
String projectName = "guava";
MavenBuild build = test_project("com.google.guava:guava", projectName);
MavenBuild build = test_project(projectName);
build
// Keep compilation and analysis on Java 17 without overriding the Java runtime version seen by the scanner.
.setProperty("sonar.java.source", "17")
Expand All @@ -226,7 +226,7 @@ public void guava() throws Exception {
@Test
public void apache_commons_beanutils() throws Exception {
String projectName = "commons-beanutils";
MavenBuild build = test_project("commons-beanutils:commons-beanutils", projectName);
MavenBuild build = test_project(projectName);
build
// by default it can not be built with jdk 17 without changing some plugin versions
.setProperty("maven-bundle-plugin.version", "5.1.4")
Expand All @@ -250,7 +250,7 @@ public void eclipse_jetty_incremental() throws Exception {

final var mainBranch = "eclipse-jetty-main";

MavenBuild branchBuild = test_project("org.eclipse.jetty:jetty-project", mainBranchSourceCode)
MavenBuild branchBuild = test_project(mainBranchSourceCode)
// re-define binaries from initial maven build
.setProperty("sonar.java.binaries", mainBinaries)
.setProperty("sonar.exclusions", "jetty-server/src/main/java/org/eclipse/jetty/server/HttpInput.java," +
Expand Down Expand Up @@ -279,7 +279,7 @@ public void eclipse_jetty_incremental() throws Exception {

final var prBranch = "eclipse-jetty-same-issues-as-main";

MavenBuild prBuild = test_existing_project("org.eclipse.jetty:jetty-project", prSourceCode)
MavenBuild prBuild = test_existing_project(mainBranchSourceCode, prSourceCode)
// re-define binaries from initial maven build
.setProperty("sonar.java.binaries", prBinaries)
.setProperty("sonar.exclusions", "jetty-server/src/main/java/org/eclipse/jetty/server/HttpInput.java," +
Expand Down Expand Up @@ -311,7 +311,7 @@ public void eclipse_jetty_incremental() throws Exception {

final var smallPrBranch = "eclipse-jetty-same-issues-as-main-small";

MavenBuild smallPrBuild = test_existing_project("org.eclipse.jetty:jetty-project", smallPrSourceCode)
MavenBuild smallPrBuild = test_existing_project(mainBranchSourceCode, smallPrSourceCode)
// re-define binaries from initial maven build
.setProperty("sonar.java.binaries", smallPrBinaries)
.setProperty("sonar.exclusions", "jetty-server/src/main/java/org/eclipse/jetty/server/HttpInput.java," +
Expand Down Expand Up @@ -361,7 +361,7 @@ public void java_time_example_incremental() throws Exception {
final var mainBranch = "main";
String mainSourceCode = "java-time-example";

MavenBuild branchBuild = test_project("example:java-time-example", mainSourceCode)
MavenBuild branchBuild = test_project(mainSourceCode)
.setProperties(
"sonar.branch.name", mainBranch,
"sonar.scm.provider", "git",
Expand All @@ -375,7 +375,7 @@ public void java_time_example_incremental() throws Exception {
String prSourceCode = "java-time-example-less-threshold";
final var prBranch = "java-time-example-pr";

MavenBuild prBuild = test_existing_project("example:java-time-example", prSourceCode)
MavenBuild prBuild = test_existing_project(mainSourceCode, prSourceCode)
.setProperties(
"sonar.pullrequest.key", prBranch,
"sonar.pullrequest.branch", prBranch,
Expand All @@ -399,8 +399,8 @@ private static String getFileLocationAbsolutePath(FileLocation location) {
@Test
public void sonarqube_server() throws Exception {
// sonarqube-6.5/server/sonar-server (v.6.5)
String projectName = "sonar-server";
MavenBuild build = test_project("org.sonarsource.sonarqube:sonar-server", "sonarqube-6.5/server", projectName)
String projectName = "sonarqube-6.5";
MavenBuild build = test_project(projectName, projectName + "/server", "sonar-server")
.setProperty("sonar.java.fileByFile", "true");
executeBuildWithCommonProperties(build, projectName);
}
Comment thread
romainbrenguier marked this conversation as resolved.
Expand All @@ -427,7 +427,7 @@ public void jboss_ejb3_tutorial() throws Exception {
@Test
public void regex_examples() throws IOException {
String projectName = "regex-examples";
MavenBuild build = test_project("org.regex-examples:regex-examples", projectName)
MavenBuild build = test_project(projectName)
.setProperty("sonar.java.fileByFile", "true");
executeBuildWithCommonProperties(build, projectName);
}
Expand All @@ -438,15 +438,12 @@ public void regex_examples() throws IOException {
@Test
public void vibebot() throws IOException {
String projectName = "vibebot";
File pomFile = FileLocation.of("../vibebot/pom.xml").getFile().getCanonicalFile();
prepareProject("org.vibebot:vibebot", projectName);
MavenBuild build = MavenBuild.create().setPom(pomFile).setCleanPackageSonarGoals().addArgument("-DskipTests");
build.setProperty("sonar.projectKey", "org.vibebot:vibebot");
MavenBuild build = test_project(projectName);
executeBuildWithCommonProperties(build, projectName);
}

private static MavenBuild test_project(String projectKey, String projectName) throws IOException {
return test_project(projectKey, null, projectName);
private static MavenBuild test_project(String projectName) throws IOException {
return test_project(projectName, null, projectName);
}

private static MavenBuild test_project(String projectKey, @Nullable String path, String projectName) throws IOException {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,74 +1,74 @@
{
"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/BeanPropertyValueChangeClosure.java": [
"commons-beanutils:src/main/java/org/apache/commons/beanutils2/BeanPropertyValueChangeClosure.java": [
134
],
"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/BeanPropertyValueEqualsPredicate.java": [
"commons-beanutils:src/main/java/org/apache/commons/beanutils2/BeanPropertyValueEqualsPredicate.java": [
164
],
"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/MethodUtils.java": [
"commons-beanutils:src/main/java/org/apache/commons/beanutils2/MethodUtils.java": [
1319
],
"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/RowSetDynaClass.java": [
"commons-beanutils:src/main/java/org/apache/commons/beanutils2/RowSetDynaClass.java": [
236
],
"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/converters/DateTimeConverter.java": [
"commons-beanutils:src/main/java/org/apache/commons/beanutils2/converters/DateTimeConverter.java": [
555
],
"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/converters/NumberConverter.java": [
"commons-beanutils:src/main/java/org/apache/commons/beanutils2/converters/NumberConverter.java": [
546
],
"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/locale/BaseLocaleConverter.java": [
"commons-beanutils:src/main/java/org/apache/commons/beanutils2/locale/BaseLocaleConverter.java": [
111
],
"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/locale/LocaleBeanUtils.java": [
"commons-beanutils:src/main/java/org/apache/commons/beanutils2/locale/LocaleBeanUtils.java": [
618
],
"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/locale/LocaleBeanUtilsBean.java": [
"commons-beanutils:src/main/java/org/apache/commons/beanutils2/locale/LocaleBeanUtilsBean.java": [
875
],
"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/locale/LocaleConvertUtils.java": [
"commons-beanutils:src/main/java/org/apache/commons/beanutils2/locale/LocaleConvertUtils.java": [
235
],
"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/locale/converters/BigDecimalLocaleConverter.java": [
"commons-beanutils:src/main/java/org/apache/commons/beanutils2/locale/converters/BigDecimalLocaleConverter.java": [
197
],
"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/locale/converters/BigIntegerLocaleConverter.java": [
"commons-beanutils:src/main/java/org/apache/commons/beanutils2/locale/converters/BigIntegerLocaleConverter.java": [
198
],
"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/locale/converters/ByteLocaleConverter.java": [
"commons-beanutils:src/main/java/org/apache/commons/beanutils2/locale/converters/ByteLocaleConverter.java": [
198
],
"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/locale/converters/DateLocaleConverter.java": [
"commons-beanutils:src/main/java/org/apache/commons/beanutils2/locale/converters/DateLocaleConverter.java": [
219
],
"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/locale/converters/DecimalLocaleConverter.java": [
"commons-beanutils:src/main/java/org/apache/commons/beanutils2/locale/converters/DecimalLocaleConverter.java": [
208
],
"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/locale/converters/DoubleLocaleConverter.java": [
"commons-beanutils:src/main/java/org/apache/commons/beanutils2/locale/converters/DoubleLocaleConverter.java": [
197
],
"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/locale/converters/FloatLocaleConverter.java": [
"commons-beanutils:src/main/java/org/apache/commons/beanutils2/locale/converters/FloatLocaleConverter.java": [
198
],
"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/locale/converters/IntegerLocaleConverter.java": [
"commons-beanutils:src/main/java/org/apache/commons/beanutils2/locale/converters/IntegerLocaleConverter.java": [
199
],
"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/locale/converters/LongLocaleConverter.java": [
"commons-beanutils:src/main/java/org/apache/commons/beanutils2/locale/converters/LongLocaleConverter.java": [
196
],
"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/locale/converters/ShortLocaleConverter.java": [
"commons-beanutils:src/main/java/org/apache/commons/beanutils2/locale/converters/ShortLocaleConverter.java": [
197
],
"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/locale/converters/SqlDateLocaleConverter.java": [
"commons-beanutils:src/main/java/org/apache/commons/beanutils2/locale/converters/SqlDateLocaleConverter.java": [
196
],
"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/locale/converters/SqlTimeLocaleConverter.java": [
"commons-beanutils:src/main/java/org/apache/commons/beanutils2/locale/converters/SqlTimeLocaleConverter.java": [
196
],
"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/locale/converters/SqlTimestampLocaleConverter.java": [
"commons-beanutils:src/main/java/org/apache/commons/beanutils2/locale/converters/SqlTimestampLocaleConverter.java": [
195
],
"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/locale/converters/StringLocaleConverter.java": [
"commons-beanutils:src/main/java/org/apache/commons/beanutils2/locale/converters/StringLocaleConverter.java": [
212
]
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/PropertyUtilsBean.java": [
"commons-beanutils:src/main/java/org/apache/commons/beanutils2/PropertyUtilsBean.java": [
0
]
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/BeanUtilsBean.java": [
"commons-beanutils:src/main/java/org/apache/commons/beanutils2/BeanUtilsBean.java": [
0
],
"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/DynaProperty.java": [
"commons-beanutils:src/main/java/org/apache/commons/beanutils2/DynaProperty.java": [
0
]
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/BeanMap.java": [
"commons-beanutils:src/main/java/org/apache/commons/beanutils2/BeanMap.java": [
855,
866
]
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/MethodUtils.java": [
"commons-beanutils:src/main/java/org/apache/commons/beanutils2/MethodUtils.java": [
1295
]
}
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
{
"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/BasicDynaBean.java": [
"commons-beanutils:src/main/java/org/apache/commons/beanutils2/BasicDynaBean.java": [
436
],
"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/LazyDynaBean.java": [
"commons-beanutils:src/main/java/org/apache/commons/beanutils2/LazyDynaBean.java": [
848,
929
],
"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/MethodUtils.java": [
"commons-beanutils:src/main/java/org/apache/commons/beanutils2/MethodUtils.java": [
1067
],
"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/locale/converters/StringLocaleConverter.java": [
"commons-beanutils:src/main/java/org/apache/commons/beanutils2/locale/converters/StringLocaleConverter.java": [
236
]
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
{
"commons-beanutils:commons-beanutils:src/test/java/org/apache/commons/beanutils2/MappedPropertyTestCase.java": [
"commons-beanutils:src/test/java/org/apache/commons/beanutils2/MappedPropertyTestCase.java": [
290,
320
],
"commons-beanutils:commons-beanutils:src/test/java/org/apache/commons/beanutils2/bugs/Jira347TestCase.java": [
"commons-beanutils:src/test/java/org/apache/commons/beanutils2/bugs/Jira347TestCase.java": [
114
]
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
{
"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/MappedPropertyDescriptor.java": [
"commons-beanutils:src/main/java/org/apache/commons/beanutils2/MappedPropertyDescriptor.java": [
119,
175,
302,
438,
441,
466
],
"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/MethodUtils.java": [
"commons-beanutils:src/main/java/org/apache/commons/beanutils2/MethodUtils.java": [
1068,
1069,
1070,
Expand All @@ -16,16 +16,16 @@
1133,
1145
],
"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/PropertyUtilsBean.java": [
"commons-beanutils:src/main/java/org/apache/commons/beanutils2/PropertyUtilsBean.java": [
1619,
1787
],
"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/converters/DateTimeConverter.java": [
"commons-beanutils:src/main/java/org/apache/commons/beanutils2/converters/DateTimeConverter.java": [
303,
303,
304
],
"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/expression/DefaultResolver.java": [
"commons-beanutils:src/main/java/org/apache/commons/beanutils2/expression/DefaultResolver.java": [
98
]
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/NestedNullException.java": [
"commons-beanutils:src/main/java/org/apache/commons/beanutils2/NestedNullException.java": [
27
]
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/BeanComparator.java": [
"commons-beanutils:src/main/java/org/apache/commons/beanutils2/BeanComparator.java": [
201,
207
]
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
{
"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/BeanComparator.java": [
"commons-beanutils:src/main/java/org/apache/commons/beanutils2/BeanComparator.java": [
168,
171,
174,
206
],
"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/BeanMap.java": [
"commons-beanutils:src/main/java/org/apache/commons/beanutils2/BeanMap.java": [
295,
361,
364,
Expand All @@ -18,16 +18,16 @@
776,
826
],
"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/LazyDynaBean.java": [
"commons-beanutils:src/main/java/org/apache/commons/beanutils2/LazyDynaBean.java": [
725,
764,
789,
861
],
"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/ResultSetDynaClass.java": [
"commons-beanutils:src/main/java/org/apache/commons/beanutils2/ResultSetDynaClass.java": [
243
],
"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/locale/LocaleBeanUtilsBean.java": [
"commons-beanutils:src/main/java/org/apache/commons/beanutils2/locale/LocaleBeanUtilsBean.java": [
647,
650,
661,
Expand Down Expand Up @@ -55,17 +55,17 @@
887,
891
],
"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/locale/LocaleConvertUtilsBean.java": [
"commons-beanutils:src/main/java/org/apache/commons/beanutils2/locale/LocaleConvertUtilsBean.java": [
144,
440
],
"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/locale/converters/BigDecimalLocaleConverter.java": [
"commons-beanutils:src/main/java/org/apache/commons/beanutils2/locale/converters/BigDecimalLocaleConverter.java": [
227
],
"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/locale/converters/BigIntegerLocaleConverter.java": [
"commons-beanutils:src/main/java/org/apache/commons/beanutils2/locale/converters/BigIntegerLocaleConverter.java": [
232
],
"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/locale/converters/StringLocaleConverter.java": [
"commons-beanutils:src/main/java/org/apache/commons/beanutils2/locale/converters/StringLocaleConverter.java": [
244,
250,
257
Expand Down
Loading
Loading