【规范一】JAVA静态代码规范

news2025/2/25 6:22:57

1.规范的划分

        将Java代码规范分为 风格规范 和 质量规范 ,主要是因为这两种规范关注的方面不同,各自解决的问题也不同。下面详细解释为什么需要将代码规范分为这两种

1.1 风格规范(Coding Style Guidelines)

        风格规范主要关注代码的外观和表达方式,确保代码的一致性和可读性

 风格规范细则icon-default.png?t=O83Ahttps://xiaohui.blog.csdn.net/article/details/144291983

1.2 质量规范(Code Quality Guidelines)

        质量规范则更侧重于代码的内在质量和逻辑正确性,旨在提高代码的健壮性、可靠性和性能。

质量规范细则icon-default.png?t=O83Ahttps://blog.csdn.net/luChenH/article/details/144295458

2. 风格规范(Coding Style Guidelines)

        遵循一致的命名约定、缩进风格、注释规则和代码组织方式,提高代码的可读性,减少阅读和维护代码时的困惑和误解。

2.1 规范规则

依据业内《JAVA开发规范(黄山版)》整理出总计42条规则,划分为9大类,详情如下:

序号

校验分类

规则数

1

命名检查

10

2

常量定义

2

3

代码格式

5

4

OOP规约

4

5

数量检查

6

6

控制语句

4

7

导入检查

3

8

注释规约

4

9

其他

4

 2.2 规范说明

        风格规范不设置代码的问题分级,开发负责人根据团队的实际情况,制定详尽且切实可行的落地计划,按照风格规范进行代码编写和修改。在代码提交至远程仓库之前,进行代码风格规范的自检,及时发现并纠正不符合规范的代码片段。

3. 质量规范(Code Quality Guidelines)

        关注代码的质量和内在逻辑的正确性,编写健壮的异常处理逻辑、确保代码的可测试性、遵循SOLID原则进行代码设计和架构、以及进行性能优化等。

3.1规范规则

依据《JAVA开发规范(黄山版)》和质量监测平台sonarqube内置规则,整理出规范校验规则总计534条规则,依据类型划分4类,详情如下:

序号

类型

规则数

1

BUG

139

2

漏洞

29

3

异味

329

4

安全热点

37

并依据严重程度划分了五个层级:

  1. 阻断:通常表示代码中存在严重错误,阻止了开发或测试工作的正常进行。这些问题可能导致系统崩溃、死循环、数据库数据丢失等严重后果。
  2. 严重:表示系统的主要功能部分已经丧失,或者数据库保存调用出现错误,用户数据可能丢失。
  3. 主要:通常与功能设计和需求严重不符,或者模块无法启动或调用。
  4. 次要:通常是一些较小的错误或不符合最佳实践的地方。
  5. 提示:最低级别的问题,通常是一些建议或提醒,帮助开发人员改进代码质量。

3.2 规范说明

        对于阻断、严重和主要问题,建议进行统一的修改。以确保这些问题得到及时解决,从而提高系统的整体稳定性。对于次要和提示类的问题,开发负责人根据当前系统的实际情况来决定是否进行整改。具体的规则和案例可参考附件《JAVA静态代码质量规范》。

        代码提测前,通过SonarQube平台进行代码质量的检测。确保提测前的代码符合质量规范,确保本次因质量规范而修改的代码不会影响到功能逻辑。

        新增类代码,保障代码的无阻断、严重、主要类问题。编写新代码时,必须严格遵守质量规范,确保代码的质量符合要求。对于存量代码,由于可能涉及到历史遗留问题和复杂的业务逻辑,整改工作可能更为复杂和耗时,开发负责人根据团队的实际情况和实际需求制定相应的整改计划,明确整改的目标、时间表和责任人,逐步解决存量代码中的问题。

4.  规范指标

序号

指标类型

单位

推荐值

1

代码风格检查

数值

0

2

代码总行数

数值

3

代码总文件数

数值

4

函数代码行数

数值

小于80

5

文件代码行数

数值

小于500

6

Bugs(阻断、严重)

数量

0

7

漏洞(阻断、严重、主要)

数量

0

8

异味(阻断、严重)

数量

0

9

代码重复率

比例

小于10%

7

平均代码圈复杂度

数值

小于10

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2258560.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Angular由一个bug说起之十二:网页页面持续占用CPU过高

随着网络日益发达,网页的内容也更加丰富,形式也更加多样化。而随之而来的性能问题也不容小觑。这篇文章我会根据我在实践中遇到的一个问题来总结,我在面对性能问题的一些解决步骤,希望能对大家有所启发。 查找问题原因 我接触的…

WordPress全能CDN插件_自动刷新预热_缓存优化|国内国外集成CDN配置

WordPress全网独家原创CDN插件 自动刷新预热 缓存优化 国内国外集成CDN配置 支持白山云 cdnfly Cloudflare PS:目前国内集成了CDNfly,白山云国外集成了Cloudflare,更新手动刷新,全站刷新,优化提交线程,根据网友建议适配阿里云,le…

唇形同步视频生成工具:Wav2Lip

一、模型介绍 今天介绍一个唇形同步的工具-Wav2Lip;Wav2Lip是一种用于生成唇形同步(lip-sync)视频的深度学习算法,它能够根据输入的音频流自动为给定的人脸视频添加准确的口型动作。 (Paper) Wav2Lip模型…

【汽车】-- 燃油发动机3缸和4缸

3缸和4缸燃油发动机是小轿车常见的发动机配置。以下从结构特点、性能、经济性等方面对两者进行对比,并分析优缺点及使用注意事项: 1. 结构与运行原理 3缸发动机 特点:少一个气缸,内部零部件更少,整体结构更紧凑。优点…

[NeurlPS 2022] STaR 开源代码实现解读

STaR 方法代码开源,这里给出一个中文代码解读地址:repo入口点:iteration_train.py;关键代码:device_train.py, device_inference.py, and create_finetune_tfrecords.py;基于 JAX、RAY,在 Googl…

欢迪迈手机商城设计与实现

文末获取源码和万字论文,制作不易,感谢点赞支持。 题目:欢迪迈手机商城设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管…

【鸿蒙实战开发】数据的下拉刷新与上拉加载

本章介绍 本章主要介绍 ArkUI 开发中最常用的场景下拉刷新, 上拉加载,在本章中介绍的内容在实际开发过程当中会高频的使用,所以同学们要牢记本章的内容。下面就让我们开始今天的讲解吧! List 组件 在 ArkUI 中List容器组件也可以实现数据滚动的效果&a…

UnityShaderLab 实现程序化形状(一)

1.实现一个长宽可变的矩形: 代码: fixed4 frag (v2f i) : SV_Target{return saturate(length(saturate(abs(i.uv - 0.5)-0.13)))/0.03;} 2.实现一个半径可变的圆形: 代码: fixed4 frag (v2f i) : SV_Target{return (distance(a…

高阶数据结构--B树B+树实现原理B树模拟实现--Java

目录 一、B-树概念 二、B-树插入分析 1.用序列{53, 139, 75, 49, 145, 36, 101}构建B树的过程如下: 2.插入过程总结 三、B树插入实现 四、B树 1.B树概念 2.B树的特性 五、B树应用 1.索引 2.Mysql索引 3.InnoDB 一、B-树概念 1970 年, R.Bayer 和…

网络安全——防火墙

基本概念 防火墙是一个系统,通过过滤传输数据达到防止未经授权的网络传输侵入私有网络,阻止不必要流量的同时允许必要流量进入。防火墙旨在私有和共有网络间建立一道安全屏障,因为网上总有黑客和恶意攻击入侵私有网络来破坏,防火…

基于Qwen2-VL模型针对LaTeX OCR任务进行微调训练 - 多图推理

基于Qwen2-VL模型针对LaTeX OCR任务进行微调训练 - 多图推理 flyfish 基于Qwen2-VL模型针对LaTeX_OCR任务进行微调训练_-_LoRA配置如何写 基于Qwen2-VL模型针对LaTeX_OCR任务进行微调训练_-_单图推理 基于Qwen2-VL模型针对LaTeX_OCR任务进行微调训练_-_原模型_单图推理 基于Q…

Ant Design Pro实战--day01

下载nvm https://nvm.uihtm.com/nvm-1.1.12-setup.zip 下载node.js 16.16.0 //非此版本会报错 nvm install 16.16.0 安装Ant Design pro //安装脚手架 npm i ant-design/pro-cli -g //下载项目 pro create myapp //选择版本 simple 安装依赖 npm install 启动umi yarn add u…

一、为什么要学习麒麟?

麒麟认证:开启职业晋升之门 当前,就业难已经成为一个普遍的社会问题。许多大学生毕业后面临着找工作的困境,他们往往发现自己很难找到满意的职位。即使有幸找到了工作,也经常需要应对工作压力大、薪资低等问题。除此之外&#xff…

python如何减小维度

ravel():将多维数组拉平(一维)。 flatten():将多维数组拉平,并拷贝一份。 squeeze():除去多维数组中,维数为1的维度&…

未来已来:人工智能如何重塑我们的生活与工作

引言 未来的生活和工作场景正从想象走向现实。想象一下,一个清晨,语音助手已经为你安排好一天的任务,自动驾驶汽车准时送你上班,智能冰箱提醒你需要补充的食材。曾经只存在于科幻小说中的场景,如今正在我们的身边实现。…

Adminer源码编译 精简语言中英文和基本使用方法

Adminer是一个小而强悍的基于web的数据库管理工具, 官方默认支持几十种语言,但是对于中国的用户而言只需要有中文和英文就够了,其他语言基本无用。这就需要我们下载Adminer源码自己编译 Adminer.php , 如下图所示 adminer 中英文语言精简版本…

字符编码讲解(C#)

在学习和编码的过程中,极容易遇到如下概念,他们有些是字符编码,有些是涉及的相关概念,接下来我将围绕下面的熟悉又陌生的概念做详细解释,并且梳理其之间的关系 UTF8, Unicode ,ASCII&#xff0…

Mac备忘录表格中换行(`Option` + `Return`(回车键))

在Mac的ARM架构设备上,如果你使用的是Apple的原生“备忘录”应用来创建表格,换行操作可以通过以下步骤来实现: 在单元格中换行: 双击你想要编辑的单元格你可以输入文本,按Option(⌥) Enter来插…

Windows中将springboot项目运行到docker的容器中

0,先打包好项目,再启动docker 1,在Java项目根目录下创建一个名为Dockerfile的文件(没有扩展名),并添加以下内容。 # 使用OpenJDK的基础镜像 FROM openjdk:8-jdk-alpine# 设置工作目录 WORKDIR /app# 将项…

HBU深度学习实验14.5-循环神经网络(1.5)

梯度爆炸实验 造成简单循环网络较难建模长程依赖问题的原因有两个:梯度爆炸和梯度消失。一般来讲,循环网络的梯度爆炸问题比较容易解决,一般通过权重衰减或梯度截断可以较好地来避免;对于梯度消失问题,更加有效的方式…