规范驼峰命名使用:

提示信息

Local variable and method parameter names should comply with a naming convention

代码片段

        Map<String, List<ExcelExportColumn>> ColumnMap = new HashMap<>(16);
ColumnMap.put("客诉权重KPI", exportColumnList);
excelGenerator.generateExcelSheet(excelData, ColumnMap, "客诉权重KPI.xls", request, response);

绿色警告:

SonarLint: Rename this local variable to match the regular expression '^[a-z][a-zA-Z0-9]*$'.

使用正确的命名规则来更改变量即可

常量重复风险问题

提示信息:

String literals should not be duplicated

代码片段就不展示了,就是一些字符串常量出现过于频繁

IDEA中 双击选中任意其中一个,Ctrl + Alt + C 进行常量快速提取

红色警告:

SonarLint: Define a constant instead of duplicating this literal "首次重启数" 3 times. [+3 locations] 

移除多余的泛型参数类型

提示信息:

The diamond operator ("<>") should be used

应该使用钻石操作符来表示

代码片段:

List<ExcelExportColumn> exportColumnList = new ArrayList<ExcelExportColumn>();

绿色警告:

SonarLint: Replace the type specification in this constructor call with the diamond operator ("<>").

删除对象的参数类型即可

不应该使用SOUT打印信息

提示信息

Standard outputs should not be used directly to log anything

代码片段

System.out.println("SXSSF Page Thread 导出数据,花费:" + second + "s/ " + millisEnd + "ms");

红色警告:

SonarLint: Replace this use of System.out or System.err by a logger.

替换成日志对象调用即可

日志对象的严谨调用

问题来自Controller层的日志打印调用:

    /**
* 投诉率统计(厂端)
* 1.通过售后小区分组统计
* 2.通过经销商分组统计
* @param kpiComplaintRateQueryVO 查询参数
* @return 投诉率统计数据
*/
@ApiOperation(value = "厂端投诉率统计维度查询")
@PostMapping("/vcdc/ratestatis")
public List<KpiComplaintRateVO> findKpiComplaintRateVOsByParams(@RequestBody KpiComplaintRateQueryVO kpiComplaintRateQueryVO) {
logger.info("厂端投诉率统计传入查询参数kpiComplaintRateQueryVO={}", JSON.toJSONString(kpiComplaintRateQueryVO));
return kpiComplaintRateService.findKpiComplaintRateVOsByParams(kpiComplaintRateQueryVO);
}

SonarLint提示红色警告:

SonarLint: Invoke method(s) only conditionally.

大概意思是,此方法的调用需要符合条件的前提

除了打印对象要做判空处理,比较难找到的是这个日志对象要需要做一个条件判断

解决方案参考爆栈网的处理:

https://stackoverflow.com/questions/44324597/sonarqube-invoke-methods-only-conditionally#

需要先判断log对象和打印对象

if(logger.isInfoEnabled() && us != null){
logger.info("Log this: {}", us.toString());
}

解决处理:

    /**
* 投诉率统计(厂端)
* 1.通过售后小区分组统计
* 2.通过经销商分组统计
* @param kpiComplaintRateQueryVO 查询参数
* @return 投诉率统计数据
*/
@ApiOperation(value = "厂端投诉率统计维度查询")
@PostMapping("/vcdc/ratestatis")
public List<KpiComplaintRateVO> findKpiComplaintRateVOsByParams(@RequestBody KpiComplaintRateQueryVO kpiComplaintRateQueryVO) {
if (null != kpiComplaintRateQueryVO && logger.isInfoEnabled()) {
logger.info("厂端投诉率统计传入查询参数kpiComplaintRateQueryVO={}", JSON.toJSONString(kpiComplaintRateQueryVO));
}
return kpiComplaintRateService.findKpiComplaintRateVOsByParams(kpiComplaintRateQueryVO);
}

日志格式化输出要求

提示信息:

"Preconditions" and logging arguments should not require evaluation
Printf-style format strings should be used correctly

代码片段:

logger.info("SXSSF Page Thread 导出数据,花费:" + second + "s/ " + millisEnd + "ms");

红色警告:

SonarLint: Use the built-in formatting to construct this argument.
SonarLint: Format specifiers should be used instead of string concatenation.

解决语法:

String format = String.format("SXSSF Page Thread 导出数据,花费:%s s/ %s ms", second, millisEnd);
logger.info(format);

Controller映射路径简化声明

提示信息:

Composed "@RequestMapping" variants should be preferred

应首选组合的“@RequestMapping”变体

代码片段:

@RequestMapping(value = "/selectKPIWeight", method = RequestMethod.POST)

更改为:

@PostMapping("/selectKPIWeight")

绿色警告:

SonarLint: Replace "@RequestMapping(method = RequestMethod.POST)" with "@PostMapping"

【Java】SonarLint 疑难语法修正的更多相关文章

  1. Java语言基本语法

    Java语言基本语法 一.标识符和关键字 标识符 在java语言中,用来标志类名.对象名.变量名.方法名.类型名.数组名.包名的有效字符序列,称为“标识符”: 标识符由字母.数字.下划线.美元符号组成 ...

  2. Pascal、VB、C#、Java四种语法对照表

    因为工作原因,自学会了vb后陆续接触了其它语言,在工作中经常需要与各家使用不同语言公司的开发人员做程序对接,初期特别需要一个各种语法的对照比,翻看了网络上已有高人做了整理,自己在他基础上也整理了一下, ...

  3. Java正则表达式的语法与示例

    Java正则表达式的语法与示例 java 正则表达式 正则表达式语法 java正则表达式语法 java正则表达式 概要: Java正则表达式的语法与示例 | |目录 1匹配验证-验证Email是否正确 ...

  4. Java, C#, Swift语法对比速查表

    原文:Java, C#, Swift语法对比速查表   Java 8 C# 6 Swift 变量 类型 变量名; 类型 变量名; var 变量名 : 类型; 变量(类型推断) N/A var 变量名= ...

  5. Java初认识--Java中的语法结构

    Java中的语法结构(程序流程控制) Java的语法结构有四种: 1.顺序结构. 顺序结构很简单,就是按顺序执行,输出就可以了. 2.判断结构. 判断结构的一个代表性的语句是if:if语句有三种格式体 ...

  6. Java 中的语法糖

    百度百科对语法糖的定义 语法糖(Syntactic sugar),也译为糖衣语法,是由英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语,指计算机语言中添加的某种语法,这 ...

  7. (转)Java正则表达式的语法与示例

    转自:http://www.cnblogs.com/lzq198754/p/5780340.html 概要: Java正则表达式的语法与示例 | |目录 1匹配验证-验证Email是否正确 2在字符串 ...

  8. Java高阶语法---transient

    背景:听说transient Java高阶语法是挺进BAT必经之路. transient: Java中transient 关键字的作用,简单的说就是让某些被修饰的成员属性变量不被序列化. 这又扯到了序 ...

  9. Java高阶语法---static

    背景:听说static Java高阶语法是挺进BAT必经之路. static: 静态static,很多时候会令我望文生义,但是get到了static最重要的一点,其他的理解都还ok. static最重 ...

  10. 二、JAVA基础、语法

    第二节:JAVA基础.语法 1.修饰符.变量:    Java中主要有如下几种类型的变量    局部变量                                                 ...

随机推荐

  1. React事件处理 事件绑定 事件对象

    React 元素的事件处理和 DOM 元素的很相似,但是有一点语法上的不同: React 事件的命名采用小驼峰式,而不是纯小写. onClick  onChange 使用 JSX 语法时你需要传入一个 ...

  2. kettle从入门到精通 第五十二课 ETL之kettle Avro output

    1.上一节课我们学习了avro input,本节课我们一起学习下avro out步骤. 本节课通过json input 加载json文件,通过avro out 生成avro二进制文件,写日志步骤打印日 ...

  3. The solution of P5339

    problem 容斥好题,结果题解里面一堆 \(\text{NTT}\). 如果我们去掉有多少个人喜欢什么东西的条件,那么这个题就直接枚举有 \(i\) 组同学会一起讨论蔡徐坤.这一个问题十分容易. ...

  4. vm ware 安装 ubuntu server linux

    在:https://ubuntu.com/download/server 中下拉找到"Ubuntu Server 20.04 LTS",下载ISO. 在VM WARE 中,如果鼠标 ...

  5. AnkhSVN For Visual Studio 2022

    AnkhSVN For VS2022 AnkhSVN 2.9.87 - Visual Studio 2022 support https://github.com/AmpScm/AnkhSVN/rel ...

  6. sshd服务部署

    sshd服务部署 软件安装修改配置文件启动使用​ 1.搭建所有服务的套路 关闭防火墙和selinux(实验环境都先关闭掉) 配置yum源(公网源或者本地源) 软件安装和检查 了解并修改配置文件 启动服 ...

  7. Wireshark基础教程

    Wireshark是非常流行的网络封包分析软件,可以截取各种网络数据包,并显示数据包详细信息.常用于开发测试过程各种问题定位.本文主要内容包括: 1.Wireshark软件下载和安装以及Wiresha ...

  8. FFmpeg开发笔记(三十一)使用RTMP Streamer开启APP直播推流

    ​RTMP Streamer是一个安卓手机端的开源RTMP直播推流框架,可用于RTMP直播和RTSP直播,其升级版还支持SRT直播(腾讯视频云就采用SRT协议).RTMP Streamer支持的视频编 ...

  9. 01-Linux系统介绍、安装与入门

    关于Linux 背景 最先出现的是Unix操作系统,这种操作系统收费,而且适用于大型机上面. Linus想做一个免费的,传播自由的操作系统.他就仿照Unix的操作,做了一个类Unix系统:Linux内 ...

  10. EthernetIP IO从站设备数据 转opc ua项目案例

    1 案例说明 设置网关采集EthernetIP IO设备数据 把采集的数据转成opc ua协议转发给其他系统. 2 VFBOX网关工作原理 VFBOX网关是协议转换网关,是把一种协议转换成另外一种协议 ...