Java 方法有8个参数,大于7个
当我用sonar lint扫描代码时,下面的代码显示错误为“方法有8个参数,大于7个”Java 方法有8个参数,大于7个,java,sonarqube,sonarlint,sonarlint-eclipse,Java,Sonarqube,Sonarlint,Sonarlint Eclipse,当我用sonar lint扫描代码时,下面的代码显示错误为“方法有8个参数,大于7个” @PutMapping(“/something”) 公共列表更新方法(@PathVariable final SomeCode, @路径变量final SomeId id, @PathVariable最终字符串testId, @PathVariable最终字符串itemId, @请求体最终列表someList, @RequestHeader(“test”)最终字符串testHeader, 最终HttpServ
@PutMapping(“/something”)
公共列表更新方法(@PathVariable final SomeCode,
@路径变量final SomeId id,
@PathVariable最终字符串testId,
@PathVariable最终字符串itemId,
@请求体最终列表someList,
@RequestHeader(“test”)最终字符串testHeader,
最终HttpServletRequest请求,
最终部分标题(部分标题)
注意:这是一种控制器方法,我们不能跳过任何参数
仅供参考:Eclipse显示squid:S00107的快速修复
有人知道如何解决这个错误吗这里有两件事要考虑。
Order
:
public class Order {
private CountryCode countryCode;
private String orderId;
private User user;
private String orderId;
private String item;
private List<Person> persons;
private ShippingAddress address;
private PaymentMethod payment;
private Product product;
// ...
}
这是sonar中配置的默认规则所需的增强。根据sonar规则,使用@RequestMapping注释的方法不受上述“方法的参数不应超过7个”规则的约束。请查找调用异常的屏幕截图 声纳说,, 用Spring的@RequestMapping注释的方法可能有很多参数,可以进行封装。因此,这些方法被忽略 但声纳规则并未升级为跳过@POSTMapping、@PutMapping等。。当春天引入它们时。理想情况下,它们是@RequestMapping的子实现。适用于@RequestMapping的规则也应适用于这些 我打算用声纳来开罚单。一旦创建,将更新链接
目前,您可以编辑sonar规则或暂时忽略这些规则,直到sonar提供其默认规则集的解决方案部分。一般来说,这是一个好规则。您应该重构为参数对象或生成器。但是,当涉及到域模型对象(如@Entity)或不可变对象的创建时,我倾向于忽略此规则,其中值仅通过构造函数传入。首先,这是“违反规则”而不是错误。如果你需要它们,就把它们都留下。如果您希望在更少的参数中包含相同的信息:创建一个新的复合对象,其中至少包含两个参数。这不是Java bug,必须是内部代码“authorization”。该方法上有注释吗?如果是,请添加它们。@daniu这不是一个我也知道的java错误。这是一个声纳违规行为,正如我在声纳上已经提到的,你可以解决这种违规行为,因为“不会被修复”Mark Seemann有一篇很好的文章详细讨论了这一点:
public class Order {
private CountryCode countryCode;
private String orderId;
private User user;
private String orderId;
private String item;
private List<Person> persons;
private ShippingAddress address;
private PaymentMethod payment;
private Product product;
// ...
}
@GetMapping
public void updateSomething(Order order) { ... }