Pmd规则:过多的静态导入可能导致unitTest中的代码混乱不违反

我有一个疑问,我有一个类,在其中我对导入常量使用不同的静态导入,我的问题是我收到错误消息:Too many static imports may lead to messy code。但在单元测试中看起来这并不是一个坏习惯。例如,在单元测试类中,我使用此导入来解决任何问题:


import static com.rccl.middleware.kidsclub.engine.web.controller.KidController.KID_FIND_PATH;

import static com.rccl.middleware.kidsclub.engine.web.controller.KidController.KID_LIST_PATH;

import static com.rccl.middleware.kidsclub.engine.web.controller.KidController.KID_PATH;

import static com.rccl.middleware.kidsclub.engine.web.controller.KidController.KID_REGISTER_ALL_PATH;

import static org.hamcrest.Matchers.hasSize;

import static org.hamcrest.Matchers.is;

import static org.mockito.ArgumentMatchers.any;

import static org.mockito.ArgumentMatchers.anyString;

import static org.mockito.BDDMockito.given;

import static org.mockito.BDDMockito.then;

import static org.mockito.Mockito.times;

import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;

import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;

import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request;

import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;```

相反,在我的课堂上:


import static org.springframework.http.HttpStatus.BAD_REQUEST;

import static org.springframework.http.HttpStatus.INTERNAL_SERVER_ERROR;

import static org.springframework.http.HttpStatus.NOT_FOUND;

import static org.springframework.http.HttpStatus.UNPROCESSABLE_ENTITY;

这些导入给我带来了问题,我收到错误消息:太多静态导入可能会导致代码混乱。我不太确定为什么。


我无法访问 pmd 文件来找出此问题的真正原因。有什么线索吗?


Cats萌萌
浏览 159回答 5
5回答

Qyouu

我已经使用 @SuppressWarnings("PMD.TooManyStaticImports") 来避免在我的班级中出现此问题。

慕盖茨4494581

如果您使用maven-pmd-plugin,它默认会忽略测试。您可以将其配置为includeTests.     <plugin>        <artifactId>maven-pmd-plugin</artifactId>        <executions>            <execution>                <phase>package</phase>                    <goals>                        <goal>check</goal>                    </goals>            </execution>       </executions>       <configuration>           <rulesets>               <ruleset>/my-custom-rules.xml</ruleset>  // Your own rules here           </rulesets>           <includeTests>true</includeTests> // Default value is false       </configuration>    </plugin>关于TooManyStaticImports规则,就像任何其他 PMD 规则一样,它可能是主观的,并且不一定适合所有用例或代码风格。这就是为什么它说“可能导致混乱的代码”。一般来说,如果您想静音一个类的规则,您可以使用:@SuppressWarnings("PMD.TooManyStaticImports")或者,如果您想微调规则,您可以提供自己的自定义配置,例如:<rule ref="category/java/codestyle.xml/TooManyStaticImports">    <properties>        <property name="maximumStaticImports" value="6" /> // Default is 4    </properties></rule>

蝴蝶刀刀

这似乎是令人反感的 PMD 配置或规则;特别是在测试中,这种静态导入是可以预料的。应更改 PMD 设置以完全禁用此检查或不将其应用于测试代码。

陪伴而非守候

基本上这是不好的做法,因为您引用另一个类的静态字段,在某种程度上您可以从当前文件中寻址静态属性。为了防止出现此 PMD 错误,您必须进行合格的调用。代替:BAD_REQUEST;INTERNAL_SERVER_ERROR;NOT_FOUND;UNPROCESSABLE_ENTITY;称呼:HttpStatus.BAD_REQUEST;HttpStatus.INTERNAL_SERVER_ERROR;HttpStatus.NOT_FOUND;HttpStatus.UNPROCESSABLE_ENTITY;

波斯汪

您可以尝试导入上一级。例如,使用Constant.MY_VAR而不是直接使用MY_VAR.&nbsp;因此,您不必在 Constant 中单独导入每个变量,只需导入 Constant 并使用Constant.MY_VAR.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java