From dc332ea1f98bcc074c5e49dfe2d4f100c1ac823e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lien=20Coet?= Date: Mon, 2 Mar 2026 13:49:29 +0100 Subject: [PATCH 1/2] Fix FP on S5853 when "element" is called after "assertThat" --- .../tests/AssertJConsecutiveAssertionCheckSample.java | 6 ++++++ .../java/checks/tests/AssertJConsecutiveAssertionCheck.java | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/java-checks-test-sources/default/src/test/java/checks/tests/AssertJConsecutiveAssertionCheckSample.java b/java-checks-test-sources/default/src/test/java/checks/tests/AssertJConsecutiveAssertionCheckSample.java index 4eae4d82c29..366ab5e13b2 100644 --- a/java-checks-test-sources/default/src/test/java/checks/tests/AssertJConsecutiveAssertionCheckSample.java +++ b/java-checks-test-sources/default/src/test/java/checks/tests/AssertJConsecutiveAssertionCheckSample.java @@ -191,6 +191,12 @@ void assert_on_member_select_2() { assertThat(myList.get(1)).isEqualTo("42"); } + @Test + void assert_on_element() { + assertThat(myList).isNotNull().hasSize(2).element(0).isEqualTo("42"); // Compliant, assertions following the call to 'element' apply on a specific element + assertThat(myList).element(1).isEqualTo("10"); + } + @Test void assert_on_member_select_3() { diff --git a/java-checks/src/main/java/org/sonar/java/checks/tests/AssertJConsecutiveAssertionCheck.java b/java-checks/src/main/java/org/sonar/java/checks/tests/AssertJConsecutiveAssertionCheck.java index 768f73911e3..b5f936c6ec4 100644 --- a/java-checks/src/main/java/org/sonar/java/checks/tests/AssertJConsecutiveAssertionCheck.java +++ b/java-checks/src/main/java/org/sonar/java/checks/tests/AssertJConsecutiveAssertionCheck.java @@ -54,7 +54,7 @@ public class AssertJConsecutiveAssertionCheck extends IssuableSubscriptionVisito public static final MethodMatchers ASSERTJ_SET_CONTEXT_METHODS = MethodMatchers.create() .ofSubTypes("org.assertj.core.api.AbstractAssert") .name(name -> name.startsWith("extracting") || name.startsWith("using") || name.startsWith("filtered") - || "flatExtracting".equals(name) || "map".equals(name) || "flatMap".equals(name)) + || "flatExtracting".equals(name) || "map".equals(name) || "flatMap".equals(name) || "element".equals(name)) .withAnyParameters() .build(); From 8088e36a9b5f49a49bfc366562da216837dd577c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lien=20Coet?= Date: Tue, 3 Mar 2026 15:59:43 +0100 Subject: [PATCH 2/2] Apply suggestion from @rombirli Co-authored-by: rombirli <56340680+rombirli@users.noreply.github.com> --- .../checks/tests/AssertJConsecutiveAssertionCheckSample.java | 1 - 1 file changed, 1 deletion(-) diff --git a/java-checks-test-sources/default/src/test/java/checks/tests/AssertJConsecutiveAssertionCheckSample.java b/java-checks-test-sources/default/src/test/java/checks/tests/AssertJConsecutiveAssertionCheckSample.java index 366ab5e13b2..8c37a642373 100644 --- a/java-checks-test-sources/default/src/test/java/checks/tests/AssertJConsecutiveAssertionCheckSample.java +++ b/java-checks-test-sources/default/src/test/java/checks/tests/AssertJConsecutiveAssertionCheckSample.java @@ -197,7 +197,6 @@ void assert_on_element() { assertThat(myList).element(1).isEqualTo("10"); } - @Test void assert_on_member_select_3() { assertThat(getList()).hasSize(2); // Compliant