【Java】SonarLint 疑难语法修正
规范驼峰命名使用:
提示信息
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 疑难语法修正的更多相关文章
- Java语言基本语法
Java语言基本语法 一.标识符和关键字 标识符 在java语言中,用来标志类名.对象名.变量名.方法名.类型名.数组名.包名的有效字符序列,称为“标识符”: 标识符由字母.数字.下划线.美元符号组成 ...
- Pascal、VB、C#、Java四种语法对照表
因为工作原因,自学会了vb后陆续接触了其它语言,在工作中经常需要与各家使用不同语言公司的开发人员做程序对接,初期特别需要一个各种语法的对照比,翻看了网络上已有高人做了整理,自己在他基础上也整理了一下, ...
- Java正则表达式的语法与示例
Java正则表达式的语法与示例 java 正则表达式 正则表达式语法 java正则表达式语法 java正则表达式 概要: Java正则表达式的语法与示例 | |目录 1匹配验证-验证Email是否正确 ...
- Java, C#, Swift语法对比速查表
原文:Java, C#, Swift语法对比速查表 Java 8 C# 6 Swift 变量 类型 变量名; 类型 变量名; var 变量名 : 类型; 变量(类型推断) N/A var 变量名= ...
- Java初认识--Java中的语法结构
Java中的语法结构(程序流程控制) Java的语法结构有四种: 1.顺序结构. 顺序结构很简单,就是按顺序执行,输出就可以了. 2.判断结构. 判断结构的一个代表性的语句是if:if语句有三种格式体 ...
- Java 中的语法糖
百度百科对语法糖的定义 语法糖(Syntactic sugar),也译为糖衣语法,是由英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语,指计算机语言中添加的某种语法,这 ...
- (转)Java正则表达式的语法与示例
转自:http://www.cnblogs.com/lzq198754/p/5780340.html 概要: Java正则表达式的语法与示例 | |目录 1匹配验证-验证Email是否正确 2在字符串 ...
- Java高阶语法---transient
背景:听说transient Java高阶语法是挺进BAT必经之路. transient: Java中transient 关键字的作用,简单的说就是让某些被修饰的成员属性变量不被序列化. 这又扯到了序 ...
- Java高阶语法---static
背景:听说static Java高阶语法是挺进BAT必经之路. static: 静态static,很多时候会令我望文生义,但是get到了static最重要的一点,其他的理解都还ok. static最重 ...
- 二、JAVA基础、语法
第二节:JAVA基础.语法 1.修饰符.变量: Java中主要有如下几种类型的变量 局部变量 ...
随机推荐
- React事件处理 事件绑定 事件对象
React 元素的事件处理和 DOM 元素的很相似,但是有一点语法上的不同: React 事件的命名采用小驼峰式,而不是纯小写. onClick onChange 使用 JSX 语法时你需要传入一个 ...
- kettle从入门到精通 第五十二课 ETL之kettle Avro output
1.上一节课我们学习了avro input,本节课我们一起学习下avro out步骤. 本节课通过json input 加载json文件,通过avro out 生成avro二进制文件,写日志步骤打印日 ...
- The solution of P5339
problem 容斥好题,结果题解里面一堆 \(\text{NTT}\). 如果我们去掉有多少个人喜欢什么东西的条件,那么这个题就直接枚举有 \(i\) 组同学会一起讨论蔡徐坤.这一个问题十分容易. ...
- vm ware 安装 ubuntu server linux
在:https://ubuntu.com/download/server 中下拉找到"Ubuntu Server 20.04 LTS",下载ISO. 在VM WARE 中,如果鼠标 ...
- AnkhSVN For Visual Studio 2022
AnkhSVN For VS2022 AnkhSVN 2.9.87 - Visual Studio 2022 support https://github.com/AmpScm/AnkhSVN/rel ...
- sshd服务部署
sshd服务部署 软件安装修改配置文件启动使用 1.搭建所有服务的套路 关闭防火墙和selinux(实验环境都先关闭掉) 配置yum源(公网源或者本地源) 软件安装和检查 了解并修改配置文件 启动服 ...
- Wireshark基础教程
Wireshark是非常流行的网络封包分析软件,可以截取各种网络数据包,并显示数据包详细信息.常用于开发测试过程各种问题定位.本文主要内容包括: 1.Wireshark软件下载和安装以及Wiresha ...
- FFmpeg开发笔记(三十一)使用RTMP Streamer开启APP直播推流
RTMP Streamer是一个安卓手机端的开源RTMP直播推流框架,可用于RTMP直播和RTSP直播,其升级版还支持SRT直播(腾讯视频云就采用SRT协议).RTMP Streamer支持的视频编 ...
- 01-Linux系统介绍、安装与入门
关于Linux 背景 最先出现的是Unix操作系统,这种操作系统收费,而且适用于大型机上面. Linus想做一个免费的,传播自由的操作系统.他就仿照Unix的操作,做了一个类Unix系统:Linux内 ...
- EthernetIP IO从站设备数据 转opc ua项目案例
1 案例说明 设置网关采集EthernetIP IO设备数据 把采集的数据转成opc ua协议转发给其他系统. 2 VFBOX网关工作原理 VFBOX网关是协议转换网关,是把一种协议转换成另外一种协议 ...