java – Method有8个参数,大于7个授权

当我使用声纳lint扫描代码时,以下代码显示错误为“方法有8个参数,大于7个授权”

@PutMapping("/something")
public List<SomeList> updateSomeThing(@PathVariable final SomeCode code,
                                            @PathVariable final SomeId id, 
                                            @PathVariable final String testId,
                                            @PathVariable final String itemId,
                                            @RequestBody final List<Test> someList,
                                            @RequestHeader("test") final String testHeader,
                                            final HttpServletRequest request,
                                            final SomeHeaders someHeaders)

注意:这是一个控制器方法,我们不能跳过任何参数

仅供参考:Eclipse显示快速修复为鱿鱼:S00107

任何人都知道如何解决这个错误?

解决方法:

这里有两件事需要考虑.

>您可以在Sonar中调整此规则并增加授权参数的数量.比如把它设为10而不是默认(?)7.

UPD:以下建议基于旧问题版本.它可能不再适用于新的问题背景.

>但通常你应该重新考虑你的方法界面.拥有许多参数意味着您的架构中可能存在错误,Single responsibility principle可能会被破坏.

在您的特定示例中,我希望您可以拥有一个聚合类订单:

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) { ... }
上一篇:win32多线程(三) 死锁


下一篇:Python“TypeError: 'NoneType' object is not iterable"的原因