阿里代码规范插件的使用

过去的,未来的
2020-09-16 / 0 评论 / 0 点赞 / 577 阅读 / 1,686 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2020-09-16,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

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

0

评论区