规范驼峰命名使用:

提示信息

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. 15种pod的状态

    15种pod的状态 调度失败 常见错误状态(Unschedulable) pod被创建后进入调度阶段,k8s调度器依据pod声明的资源请求量和调度规则,为pod挑选一个适合运行的节点.当集群节点不满足 ...

  2. while适用于不确定循环次数

      // 当前有一个随机数,是生成100-999的随机数值         // 需要生成数值666,需要知道循环了多少次,才生成的666这个数值         // 我们可以通过循环来实现     ...

  3. react类组件

    使用ES6语法的class创建的组件(有状态组件) 类名称必须要大写字母开头 类组件要继承React.Component父类,从而可以使用父类中提供的方法或者属性 类组件必须提供 render 方法, ...

  4. vue移动端 滚动

    better-scroll: https://better-scroll.github.io/docs/zh-CN/guide/ 影院列表数据使用better-scroll来完成数据的展示,此插件对于 ...

  5. echarts柱状图横(x)轴文字显示不全,一招解决

    柱状图底部X轴文字过长时,将会出现文字显示不全的问题,这是echarts为了美观默认的设置 现在我们把文章倾斜旋转点角度即可全部显示 以下是代码 scale() { var chartDom = do ...

  6. php des加密用java解析不了 改个模式 加个IV php密钥/IV要求都是8位

    php des加密用java解析不了 改个模式 加个IV  php密钥/IV要求都是8位 php des加密用java解析不了 Wrong IV length: must be 8 bytes lon ...

  7. CloseableHttpClient 连接超时导致XxlJob调度阻塞,影响调度任务的执行

    CloseableHttpClient 连接超时导致XxlJob调度阻塞,影响调度任务的执行 问题原因1.分析日志发现,xxlJob后台界面没有执行时间和执行结果,在某一个时间点之后,某一个任务因为阻 ...

  8. Mysql int类型字段插入表达式,值为0或1

    CREATE TABLE `t_user` ( `uId` INT(11) DEFAULT NULL, `uName` VARCHAR(20) DEFAULT NULL, `uPwd` VARCHAR ...

  9. kubernetes安装Prometheus

    安装 在目标集群上,执行如下命令: kubectl apply -f https://github.com/512team/dhorse/raw/main/conf/kubernetes-promet ...

  10. 用 Visual C++ 2022 和 CMake 编译 CUnit 静态库

    准备工作 源代码获取 CUnit 是知名的 C 语言单元测框架,其源代码最初发布在 sourceforge 上,网址为:https://sourceforge.net/projects/cunit/ ...