阿里代码规范插件的使用

1、idea安装
preferences -> plugins,搜索 alibaba 即可
image.png

2、如何使用
第一步:选择自己想要扫描的文件夹(可以是project、module、package)

第二步:鼠标右键,点击编码规范扫描。例如下图将扫描tutor-某工程service下的所有类
image.png

3、查看违反规范情况和解决方法
扫描之后,会有三种级别,Blocker -> critical -> major 级别依次降低

image.png

双击可展示违反规范的细节,原因和地点

image.png
image.png

例如:对于线程池的创建,阿里规范规定不能使用 Executors去创建,而是通过ThreadPoolExecutor的方式。Executor的方式创建的线程池,允许的队列长度为Integer.MAX_VALUE,可能会堆积大量的请求,从而造成OOM的风险。

推荐使用自定义线程池,根据业务需求,请求量,定制核心线程、最大线程、拒绝策略和缓存队列大小

规范插件也给出了正确的使用方式,如下所示

Positive example 1:
   //org.apache.commons.lang3.concurrent.BasicThreadFactory
   ScheduledExecutorService executorService = new ScheduledThreadPoolExecutor(1,
       new BasicThreadFactory.Builder().namingPattern("example-schedule-pool-%d").daemon(true).build());
           
Positive example 2:
   ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
      .setNameFormat("demo-pool-%d").build();

   //Common Thread Pool
   ExecutorService pool = new ThreadPoolExecutor(5, 200,
       0L, TimeUnit.MILLISECONDS,
       new LinkedBlockingQueue(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());

   pool.execute(()-> System.out.println(Thread.currentThread().getName()));
   pool.shutdown();//gracefully shutdown
参考链接:
https://developer.aliyun.com/article/224817

Copyright: 采用 知识共享署名4.0 国际许可协议进行许可

Links: https://www.fengpt.cn/archives/2020-09-10-20-35-27