Skip to content

Issue #14625: fix noinspectionreason for TestMethodWithoutAssertion#14812

Closed
MANISH-K-07 wants to merge 1 commit into
checkstyle:masterfrom
MANISH-K-07:fixIdea3
Closed

Issue #14625: fix noinspectionreason for TestMethodWithoutAssertion#14812
MANISH-K-07 wants to merge 1 commit into
checkstyle:masterfrom
MANISH-K-07:fixIdea3

Conversation

@MANISH-K-07

@MANISH-K-07 MANISH-K-07 commented Apr 19, 2024

Copy link
Copy Markdown
Contributor

Resolves #14625

TestMethodWithoutAssertion inspection is a permanent suppression for XdocsJavaDocsTest & XdocsPagesTest.

Reason being same as for inspection JUnitTestMethodWithNoAssertions.

     * @noinspectionreason JUnitTestMethodWithNoAssertions - asserts in callstack,
     *      but not in this method

Ideally, in this case, both inspections function the same, I believe.

<problems is_local_tool="true">
<problem>
<file>file://$PROJECT_DIR$/src/test/java/com/puppycrawl/tools/checkstyle/internal/XdocsJavaDocsTest.java</file>
<line>134</line>
<module>project</module>
<package>com.puppycrawl.tools.checkstyle.internal</package>
<entry_point TYPE="method" FQNAME="com.puppycrawl.tools.checkstyle.internal.XdocsJavaDocsTest void testAllCheckSectionJavaDocs()"/>
<problem_class id="TestMethodWithoutAssertion" severity="ERROR" attribute_key="ERRORS_ATTRIBUTES">Test method without assertions</problem_class>
<description>Test method <code>testAllCheckSectionJavaDocs()</code> contains no assertions #loc</description>
<highlighted_element>testAllCheckSectionJavaDocs</highlighted_element>
<language>JAVA</language>
<offset>16</offset>
<length>27</length>
</problem>

<problem>
<file>file://$PROJECT_DIR$/src/test/java/com/puppycrawl/tools/checkstyle/internal/XdocsPagesTest.java</file>
<line>594</line>
<module>project</module>
<package>com.puppycrawl.tools.checkstyle.internal</package>
<entry_point TYPE="method" FQNAME="com.puppycrawl.tools.checkstyle.internal.XdocsPagesTest void testAllCheckSectionsEx()"/>
<problem_class id="TestMethodWithoutAssertion" severity="ERROR" attribute_key="ERRORS_ATTRIBUTES">Test method without assertions</problem_class>
<description>Test method <code>testAllCheckSectionsEx()</code> contains no assertions #loc</description>
<highlighted_element>testAllCheckSectionsEx</highlighted_element>
<language>JAVA</language>
<offset>16</offset>
<length>22</length>
</problem>
</problems>

@romani romani left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Question

* but not in this method
* @noinspectionreason TestMethodWithoutAssertion - until issue #14625
* @noinspectionreason TestMethodWithoutAssertion - asserts in callstack,
* but not in this method

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We already have similar rule in some other tools, can you recheck if we suppressed this already for other tools maybe pmd or ....

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@romani , pmd yes....

| //ClassOrInterfaceDeclaration[@SimpleName='XdocsPagesTest']
//MethodDeclaration[@Name='testAllChecksPresentOnAvailableChecksPage']
| //ClassOrInterfaceDeclaration[@SimpleName='XdocsJavaDocsTest']
//MethodDeclaration[@Name='testAllCheckSectionJavaDocs']

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@romani , ping please.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can it help if we rename examineCheckSection to assertCheckSection ? May be we can extend config to register this method name as asset.

@MANISH-K-07 MANISH-K-07 Apr 22, 2024

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can it help if we rename examineCheckSection to assertCheckSection ? May be we can extend config to register this method name as asset.

theoretically, It should, but we would be extending config just for satisfying 2 methods

@romani , just pointing out, we have our methods named in chains.
examineCheckSection is followed by examineCheckSectionChildren and again examineCheckSubSection

private static void examineCheckSection(ModuleFactory moduleFactory, String fileName,

private static void examineCheckSectionChildren(Node section) {

private static void examineCheckSubSection(Node subSection, String subSectionName) {

Do we really want to extend our config to new method and hack all these just to workaround for one inspection that won't even impact users as much?

Please do correct me if I'm wrong, I don't mean to cross your suggestion 😃

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@romani , ping please.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

examineCheckSection is actually do assert by execution of
checker.process(files);

All Junit asserts are Custom Check that helps to parse java files.
We can add assert for checker to have no violations or errors after execution to testAllCheckSectionJavaDocs() as it is a field of class, so no suppression will be required.

@MANISH-K-07 MANISH-K-07 requested a review from romani April 20, 2024 02:50

@romani romani left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ques

* but not in this method
* @noinspectionreason TestMethodWithoutAssertion - until issue #14625
* @noinspectionreason TestMethodWithoutAssertion - asserts in callstack,
* but not in this method

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can it help if we rename examineCheckSection to assertCheckSection ? May be we can extend config to register this method name as asset.

@MANISH-K-07

Copy link
Copy Markdown
Contributor Author

@romani , please see post above at #14812 (comment)

@MANISH-K-07 MANISH-K-07 requested a review from romani April 22, 2024 17:08
@MANISH-K-07

MANISH-K-07 commented Apr 30, 2024

Copy link
Copy Markdown
Contributor Author

@romani , could you please assign this PR to yourself while we discuss how to proceed..

@romani

romani commented May 11, 2024

Copy link
Copy Markdown
Member

@MANISH-K-07, ping, please find time to finish this PR.

@romani

romani commented Jun 9, 2024

Copy link
Copy Markdown
Member

@MANISH-K-07, ping, please find time to finish this PR.

@romani romani removed their assignment Jun 23, 2024
@romani

romani commented Sep 17, 2024

Copy link
Copy Markdown
Member

How to configure inspection:
https://stackoverflow.com/q/48034643/1015848

https://www.jetbrains.com.cn/en-us/help/inspectopedia/TestMethodWithoutAssertion.html

We just need change name of method examineCheckSection only, suggestion assertCheckSection

@romani

romani commented Oct 18, 2024

Copy link
Copy Markdown
Member

Everyone is welcome to continue this work.

@romani

romani commented Nov 6, 2024

Copy link
Copy Markdown
Member

@MohanadKh03, while I am working on n your PR with write tag.
Can you help us to move this fix across finish line ?

@MohanadKh03

Copy link
Copy Markdown
Contributor

Sure
Just for clarifications on what is left to do , it seems the only change needed is to just change the method's name and we can test this by configuring jetbrains' inspection right ?

@romani

romani commented Nov 6, 2024

Copy link
Copy Markdown
Member

Yes

@MohanadKh03

MohanadKh03 commented Nov 6, 2024

Copy link
Copy Markdown
Contributor

Actually we do not need to rename do we ? I tried with and without renaming and since it was suppressed , both work since this is suppressed anyway so unless we are removing the suppression and extending it to config then we could also extend the old name right ? Also by extending the config does this mean adding it to the whitelist or what kind of extension exactly ?

Can it help if we rename examineCheckSection to assertCheckSection ? May be we can extend config to register this method name as asset.

As it stands right now this can be merged if we are going to keep the suppression I dont really see any point of renaming

@romani

romani commented Nov 6, 2024

Copy link
Copy Markdown
Member

we should remove suppression, this is whole reason of issue.
after removal, CI will start to fail, and complain on method, method need to be renamed, and possibly adjust inspection config if required.

@romani

romani commented Nov 6, 2024

Copy link
Copy Markdown
Member

Moved to #15884

@romani romani closed this Nov 6, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

IDEA inspection suppressions resulted from migration to v2022.3.3

3 participants