首页 > 其他分享 >android sonar 库扫描 sonarlint扫描的问题

android sonar 库扫描 sonarlint扫描的问题

时间:2024-11-12 11:40:32浏览次数:1  
标签:return String 代码 扫描 private time sonar android 构造函数

android sonar 库扫描 sonarlint扫描的问题


今天要进行代码检查,所以我就装了一个插件SonarLint,先自己看看有啥问题,进行优化一下,并对遇到的问题做一个汇总

SonarLint安装

我用的是SonarLint,安装很好安装,我用的idea,找到setting里边的

android sonar 库扫描 sonarlint扫描的问题_android sonar 库扫描

我这是安装完的,你选择下载就行,下载完了需要重启一下idea,用的时候也非常方便,在你想检查的类或者服务上右键选择如图所示就可以了

问题

1、Replace this if-then-else statement by a single return statement .

代码

if(!matcher.matches()){
                    return false;
                }else{
                    return true;
                }
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

看着好像没啥问题

提示

android sonar 库扫描 sonarlint扫描的问题_构造函数_02

分析

说返回封装在if-then-else语句中的布尔文字语句应该简化。类似地,封装在if-then-else中的方法调用应该简化为单个调用,而if-then-else只与布尔文本不同。

下边给了兼容解决方案

android sonar 库扫描 sonarlint扫描的问题_Java_03

解决

对于本身就可直接return 、不要定义变量接收再返回、不要判断再返回,本身结果就是true或false。

return !matcher.matches();
  • 1.

2、This block of commented-out lines of code should be removed.

代码

/*public static void main(String[] args) {
        String time = System.currentTimeMillis()+"";
        String sufTime = time.substring(time.length()-6,time.length());
        System.out.println(time);
        System.out.println(sufTime);
        String md5Str = md5("TMS_175"+sufTime);
        System.out.println(md5Str);
        System.out.println(md5Str.substring(1,10));
    }*/
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.

这里注释掉的一段代码

提示

android sonar 库扫描 sonarlint扫描的问题_Java_04

分析

程序员不应该注释掉代码,因为它会膨胀程序并降低可读性。应该删除未使用的代码,如果需要,可以从源代码管理历史记录中检索。

解決

这里我们可以根据自己的需要进行留还是删除,关于注释的信息我们也可以自己进行设置检查还是不检查

3、Add a private constructor to hide the implicit public one

代码

android sonar 库扫描 sonarlint扫描的问题_Java_05

提示

android sonar 库扫描 sonarlint扫描的问题_构造函数_06

分析

实用程序类是静态成员的集合,不需要实例化。即使是可以扩展的抽象实用程序类也不应该有公共构造函数。

Java为每个类添加了一个隐式公共构造函数,而这些类至少没有显式定义一个。因此,至少应该定义一个非公共构造函数。

解决

定义一个私有的构造函数

4、Lower the visibility of this setter or remove it altogether .

代码

android sonar 库扫描 sonarlint扫描的问题_bug_07

 枚举类里边,我加了get,set方法

提示

android sonar 库扫描 sonarlint扫描的问题_构造函数_08

分析 

枚举通常被认为是常量,但带有公共字段或公共setter的枚举是非常量的。理想情况下,枚举中的字段是私有的,并在构造函数中设置,但如果不可能,则应尽可能降低它们的可见性。

解决

将没用到的删除

5、Define a constant instead of duplicating this literal " I invalid . " 3 time

代码

android sonar 库扫描 sonarlint扫描的问题_Java_09

 提示

android sonar 库扫描 sonarlint扫描的问题_Java_10

分析 

重复的字符串文字使重构过程容易出错,因为必须确保更新所有出现的内容。
另一方面,常数可以从许多地方引用,但只需要在一个地方更新。

解决

当一个类中存在重复的字符串,超过3次时、需要使用常量、或者枚举。

private final static String INVALID = "] invalid.";
  • 1.

android sonar 库扫描 sonarlint扫描的问题_java_11

6、Replace charset name argument with Standardcharsets . UTF 8 

代码

android sonar 库扫描 sonarlint扫描的问题_bug_12

 提示

android sonar 库扫描 sonarlint扫描的问题_构造函数_13

分析 

JDK7引入了类java.nio.charset.StandardCharsets。它为保证在Java平台的每个实现上可用的所有字符集提供常量。

解决

将"UTF-8"替换为StandardCharsets.UTF_8

android sonar 库扫描 sonarlint扫描的问题_android sonar 库扫描_14

 7、Reorder the modifiers to comply with the Java Language Specification

代码

看代码,刚才定义的常量

android sonar 库扫描 sonarlint扫描的问题_Java_15

 提示

android sonar 库扫描 sonarlint扫描的问题_Java_16

Java语言规范建议按以下顺序列出修饰符:

Annotations——public——protected——private——abstract——static——final——transient——volatile——synchronized——native——strictfp
不遵循此约定没有技术影响,但会降低代码的可读性,因为大多数开发人员都习惯于标准顺序。

解决:

按照规范建议、对Java关键字重新排序。

//Annotations——public——protected——private——abstract——static——final——transient——volatile——synchronized——native——strictfp
    private static final String INVALID = "] invalid.";
  • 1.
  • 2.
原文链接:https://blog.51cto.com/u_16099327/7122015

标签:return,String,代码,扫描,private,time,sonar,android,构造函数
From: https://www.cnblogs.com/sunny3158/p/18541529

相关文章

  • System File Checker(简称 SFC)是 Windows 操作系统中的一个内置工具,用于扫描和修复损坏
    SystemFileChecker(简称SFC)是Windows操作系统中的一个内置工具,用于扫描和修复损坏或丢失的系统文件。它帮助用户恢复Windows操作系统中重要的文件和组件,以确保操作系统能够正常运行。什么是SFC(SystemFileChecker)?SFC是一个命令行工具,通过扫描Windows系统中的保护文件......
  • SonarQube 10.5 for macOS, Linux, Windows 下载 - 代码质量、安全与静态分析工具
    SonarQube10.5(macOS,Linux,Windows)-代码质量、安全与静态分析工具SonarQubeDataCenterEdition(JavaAppformacOS,Linux,Windows)请访问原文链接:https://sysin.org/blog/sonarqube-10/查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgSonarCleanCo......
  • 如何轻松从 Android 打印通话记录 [3 个详细提示]
    “我可以直接从Android手机打印通话记录吗?但是我的Android手机上的数据在哪里?”这个问题很多人都问过。事实上,如果没有任何有用的方法,您无法直接在Android手机上打印通话记录。为了解决如何从Android打印通话记录,我们在本文中总结了3个实用技巧。因此,您可以轻松打印Android通......
  • Rust 在 Android 的编程实践——技术驱动的车云一体化解决方案探索
    Rust在Android的编程实践——技术驱动的车云一体化解决方案探索Greptime车云一体化解决方案颠覆了从前传统的车云协同模式,采用更加低成本、高效率的方案来满足当前的市场需求。其中GreptimeDBEdge作为核心组件,专为车机环境量身打造。本文旨在详尽探讨在Android平台利用......
  • 更新教程:如何以 6 种新方式将视频从 Android 传输到 Mac
    概括我们的生活充满了多媒体内容,在设备之间无缝传输视频的需求变得越来越重要。对于寻求将其珍贵视频转移到Mac生态系统的Android用户,本指南提供了多种方法的全面概述,确保该过程既高效又用户友好。无论是传统的USB连接还是无线替代方案,我们都将探索分步说明,使您能够轻松......
  • AI与OCR:数字档案馆图像扫描与文字识别技术实现与项目案例
    一、扫描与图像预处理技术实现过程在纸质档案的数字化过程中,首先需要使用高精度扫描仪对纸质文档进行扫描,生成高清的数字图像。这一步骤是整个OCR流程的基础,图像的质量直接影响到后续识别的准确性。图像预处理技术包括去噪、增强对比度、校正倾斜和图像增强等,这些操作有助于提......
  • jsonargparse python cli 开发库
    jsonargparse是一个pythoncli库,尽管不如其他库火(click)目前Lightningcli就使用了此库包含的特性自动创建cli类似Fire,typer,Clize以及Tyro支持类型校验支持通过配置文件或者环境变量的配置解析(集成confuse,configargparse,dynaconf,omegaconf)dataclass支持说明jsonargpa......
  • JAVA自动化扫描并使用Driver进行小型DDOS-----JAVA
    packagecom.alatus.searchinfo.config;importcom.alatus.searchinfo.Entity.AccountEntity;importcom.alatus.searchinfo.utils.HttpUtils;importcom.alibaba.excel.context.AnalysisContext;importcom.alibaba.excel.metadata.CellExtra;importcom.alibaba.excel......
  • CST参数扫描设置细节
    cst参数扫描的细节 点开参数扫描对话框,新建扫描参数,例如参数a进行扫描1-2,0.5的步长,这样最后会出现3个参数的仿真结果。 这时如果增加参数b的扫描,在同一sequence下,同样1-2,0.5的步长,这样最后会出现9个结果,结果是交叉进行的。  如果增加一个sequence,同样1-2,0.5的步长......
  • Android13 修改设备的density(dpi)
    DPIDPI,全称DotsPerInch,是一个衡量屏幕密度的关键指标。其中,Inch(英寸)作为物理单位,在任何设备上的大小都是恒定不变的。因此,DPI具体指的是在一英寸的物理长度内所能容纳的像素点(Dot)数量。例如,160DPI的屏幕意味着在一英寸的长度内包含160个像素点,而320DPI的屏幕则表明一英寸......