区块链——代码格式检查(prettier、solhint)
一、引入依赖
// 导入prettier prettier-plugin-solidity
yarn add --dev prettier prettier-plugin-solidity
yarn add --dev solhint
二、创建.prettierrc文件
{"tabWidth": 2,"semi": false,"useTabs": false,"singleQuote": false
}
三、创建忽略文件.prettierignore文件
node_modules
package.json
img
artifacts
cache
coverage
.env
.*
README.md
coverage.json
三、prettierrc配置解释
.prettierrc 文件(或其 JavaScript 版本 .prettierrc.js)是用于配置 Prettier 代码格式化工具的规则文件。Prettier 是一个流行的代码格式化工具,旨在通过提供一致的代码风格来简化开发人员的工作流程。以下是 .prettierrc 文件中一些常见的配置项及其含义:
-
printWidth:
类型:整数
默认值:80
含义:指定一行代码的最大字符数,超过此数则会自动换行。 -
tabWidth:
类型:整数
默认值:2
含义:指定一个制表符(Tab)应该等于多少个空格。 -
useTabs:
类型:布尔值
默认值:false
含义:是否使用制表符(Tab)进行缩进,而不是空格。 -
semi:
类型:布尔值
默认值:true
含义:是否在语句末尾添加分号。 -
singleQuote:
类型:布尔值
默认值:false(在 .prettierrc.js 示例中可能是 true,但默认是 false)
含义:是否使用单引号而不是双引号。 -
quoteProps:
类型:字符串
默认值:“as-needed”
含义:属性名是否使用引号,可选值为 “as-needed”(必要时加引号)或 “consistent”(保持一致性)。 -
trailingComma:
类型:字符串
默认值:“none”
含义:对象或数组最后一个元素后是否加逗号,可选值为 “none”(不加逗号)、“es5”(在ES5中有效的地方加逗号)、“all”(所有地方都加逗号)。 -
bracketSpacing:
类型:布尔值
默认值:true
含义:对象字面量的括号间是否加空格。 -
jsxBracketSameLine:
类型:布尔值
默认值:false
含义:在JSX中,是否将 ‘>’ 符号与标签的最后一行末尾对齐。 -
arrowParens:
类型:字符串
默认值:“avoid”
含义:是否总是给箭头函数的参数加上括号,可选值为 “avoid”(只在需要时添加括号)或 “always”(总是添加括号)。 -
endOfLine:
类型:字符串
默认值:“lf”
含义:换行符的样式,可选值为 “lf”(\n)、“crlf”(\r\n)、“cr”(\r)或 “auto”(根据文件中的第一行决定)。 -
embeddedLanguageFormatting:
类型:字符串
默认值:“auto”
含义:是否格式化内嵌的代码语言,可选值为 “auto”(自动)、“off”(不格式化内嵌的代码语言)、“on”(始终格式化内嵌的代码语言)。 -
proseWrap:
类型:字符串
默认值:“preserve”
含义:在 Markdown 中,是否要换行符折行,可选值为 “preserve”(保持原样)、“always”(始终折行)、“never”(从不折行)。
四、创建.solhint.json配置文件
{"extends": "solhint:recommended", // 继承推荐的规则集"rules": {"avoid-sha3": "warn", // 警告使用 SHA3 函数"compiler-version": ["error", "^0.8.0"], // 错误:编译器版本必须为 0.8.x"no-unused-vars": "off", // 禁用未使用变量的规则"no-global-import": "off", // 禁止全局导入"func-visibility": ["warn",{"ignoreConstructors":false}] // 函数的可见性,构造函数排除},"plugins": [] // 目前没有加载任何插件
}
五、创建.solhintignore,设置需要忽视的文件
六、在命令行中,使用yarn solhint contract/*.sol来查看代码是否合规
相关文章:
区块链——代码格式检查(prettier、solhint)
一、引入依赖 // 导入prettier prettier-plugin-solidity yarn add --dev prettier prettier-plugin-solidity yarn add --dev solhint二、创建.prettierrc文件 {"tabWidth": 2,"semi": false,"useTabs": false,"singleQuote": fals…...
搭建自动化 Web 页面性能检测系统 —— 部署篇
作为一个前端想去做全栈的项目时,可能第一个思路是 node vue/react。一开始可能会新建多个工程目录去实现,假设分别为 web 和 server,也许还有管理后台的代码 admin,那么就有了三个工程的代码。此时为了方便管理就需要在远程仓库…...
知识图谱增强的RAG(KG-RAG)详细解析
转自:知识图谱科技 这是一个与任务无关的框架,它将知识图谱(KG)的显性知识与大型语言模型(LLM)的隐含知识结合起来。这是该工作的arXiv预印本 https://arxiv.org/abs/2311.17330 。 我们在这里利用一个名为…...
python中list的深拷贝和浅拷贝
其实这还是涉及到python中的可变对象和不可变对象的概念。 https://www.cnblogs.com/poloyy/p/15073168.html # -*- coding: utf-8 -*-person [name, [savings, 100.00]] hubby person[:] # slice copy wifey list(person) # fac func copy a [id(x) for x in person] b …...
【LeetCode】字母异位词分组
题目描述: 给你一个字符串数组,请你将字母异位词组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 示例 1: 输入: strs [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”] 输出: [[“bat”…...
Golang | Leetcode Golang题解之第295题数据流的中位数
题目: 题解: type MedianFinder struct {nums *redblacktree.Treetotal intleft, right iterator }func Constructor() MedianFinder {return MedianFinder{nums: redblacktree.NewWithIntComparator()} }func (mf *MedianFinder) AddNum(…...
【C语言】C语言期末突击/考研--数据的输入输出
目录 一、printf()输出函数介绍 二、scanf读取标准输入 (一)scanf函数的原理 (二)多种数据类型混合输入 三、练习题 今天我们学习printf和scanf读取标准输入。下面我们开始正式的学习吧。 C语言中有很多内置函数,今…...
How can I fix my Flask server‘s 405 error that includes OpenAi api?
题意:解决包含OpenAI API的Flask服务器中出现的405错误(Method Not Allowed,即方法不允许) 问题背景: Im trying to add an API to my webpage and have never used any Flask server before, I have never used Java…...
LeetCode Hot100 将有序数组转换为二叉搜索树
给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 平衡 二叉搜索树。 示例 1: 输入:nums [-10,-3,0,5,9] 输出:[0,-3,9,-10,null,5] 解释:[0,-10,5,null,-3,null,9] 也将被视为正确…...
【Linux】线程的控制
目录 线程等待 线程退出 线程的优缺点 线程独占和共享的数据 我们说Linux是用进程模拟的线程,所以Linux中只有轻量级进程的概念,但是,用户是只认线程的,所以我们有一个叫原生线程库的东西,它就负责把轻量级进程的系…...
Vue3自研开源Tree组件:人性化的拖拽API设计
针对Element Plus Tree组件拖拽功能API用的麻烦,小卷开发了一个API使用简单的JuanTree组件。拖拽功能用起来非常简单! 文章目录 使用示例allowDragallowDrop支持节点勾选支持dirty检测后台API交互 源码实现 使用示例 组件的使用很简单: 通过…...
MYSQL--触发器详解
触发器 1.触发器简介 触发器(trigger)是一个特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delete, update…...
C++实用指南:Lambda 表达式的妙用
Lambda 表达式的灵活性和强大功能确实为编程提供了许多便利。但是我们发现许多开发者仍然无法灵活运用其便利,于是写了这篇文章。 Lambda 允许我们编写更简洁和灵活的代码。例如在处理网络请求时,我们经常需要确保响应与当前的状态或需求仍然相关。通过…...
FastAPI(七十八)实战开发《在线课程学习系统》接口开发-- 评论
源码见:"fastapi_study_road-learning_system_online_courses: fastapi框架实战之--在线课程学习系统" 梳理下思路 1.判断是否登录 2.课程是否存在 3.如果是回复,查看回复是否存在 4.是否有权限 5.发起评论 首先新增pydantic模型 class Cour…...
基于springboot+vue+uniapp的居民健康监测小程序
开发语言:Java框架:springbootuniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包&#…...
TypeScript基础【学习笔记】
一、TypeScript 开发环境搭建 下载并安装 Node.js使用 npm 全局安装 typescript 进入命令行输入:npm i -g typescript 创建一个 ts 文件使用 tsc 对 ts 文件进行编译 进入命令行进入 ts 文件所在目录执行命令:tsc xxx.ts 二、基本类型 类型声明 通过类型…...
树莓派物联网服务器搭建流程:集成 Node.js、InfluxDB、Grafana 和 MQTT 协议
目录 一、搭建准备 1. 硬件要求 2. 软件要求 二、技术栈概述 三、搭建步骤 1. 安装操作系统 2. 启动树莓派 3. 更新系统 4. 安装必要的软件 4.1 安装 Python 和 Flask 4.2 安装 Node.js 4.3 安装 Mosquitto(MQTT Broker) 4.4 安装 InfluxDB…...
typescript 断言
/* 断言 确定后期一定是某种格式 可用于表单大对象初始化是空,赋值时有具体字段。前期断言是会是某种格式 */interface obj {name: stringlocation: stringage?: number }// 会报错 // let data: obj { // // } let data: obj {} as obj; // 断言data会有obj里…...
期刊评价指标及其查询方法
1、期刊评价体系一 科睿唯安《期刊引证报告》(Journal Citation Reports, JCR) 科睿唯安每年发布的《期刊引证报告》(Journal Citation Reports, JCR)是一个独特的多学科期刊评价工具。JCR数据库提供基于引文数据的统计信息的期…...
巴斯勒相机(Basler) ACE2 dart 系列说明和软件
巴斯勒相机(Basler) ACE2 dart 系列说明和软件...
避开这些坑!Sigma-Delta调制器设计中最容易忽略的5个稳定性问题(附MASH级联实测数据)
避开这些坑!Sigma-Delta调制器设计中最容易忽略的5个稳定性问题(附MASH级联实测数据) 在高速高精度ADC设计中,Sigma-Delta调制器因其优异的噪声整形特性成为首选方案。但当工程师们沉浸在理论计算的理想世界时,实验室示…...
保姆级教程:用seqtk、bwa和bedtools从零绘制GC-depth图,诊断测序污染
从零构建GC-depth分析全流程:手把手教你诊断测序数据污染 刚拿到测序数据的生物信息学新手,常常会面临一个灵魂拷问:我的数据干净吗?GC-depth分析就像给测序数据做"体检",通过一张图就能快速发现细菌污染、样…...
Llama-3.2V-11B-cot部署案例:中小企业低成本构建AI图文分析工作台
Llama-3.2V-11B-cot部署案例:中小企业低成本构建AI图文分析工作台 1. 项目概述 Llama-3.2V-11B-cot是基于Meta最新多模态大模型开发的专业级视觉推理工具,专为中小企业打造的低成本AI图文分析解决方案。该工具针对双卡RTX 4090环境进行了深度优化&…...
vLLM-v0.17.1在专利分析系统中的应用:权利要求生成与比对
vLLM-v0.17.1在专利分析系统中的应用:权利要求生成与比对 1. 技术背景与需求分析 专利分析是知识产权领域的重要工作,其中权利要求书的生成与比对是核心环节。传统方法依赖人工撰写和比对,效率低下且一致性难以保证。随着大语言模型技术的发…...
RustFS实战:5分钟在Linux服务器上搭个私有S3兼容存储(保姆级配置+避坑指南)
RustFS实战:5分钟在Linux服务器上搭个私有S3兼容存储(保姆级配置避坑指南) 最近在折腾一个需要私有文件存储的Side Project,既不想用公有云S3(太贵),又嫌MinIO配置繁琐。偶然发现RustFS这个基于…...
Qwen3.5-9B+OpenClaw组合方案:3类高性价比自动化场景实测
Qwen3.5-9BOpenClaw组合方案:3类高性价比自动化场景实测 1. 为什么选择这个组合? 去年夏天,我花了整整两周时间在本地部署各种开源大模型,试图找到一个既能在预算内运行、又能稳定执行自动化任务的方案。经过反复测试࿰…...
2026论文降重神器盘点!毕业论文“AIGC痕迹”怎么破?
【CSDN技术引言:拒绝“开源背调”式的学术翻车】 哈喽各位同行和科研圈的战友们。最近后台私信快炸了,今年这届硕博生仿佛遭遇了“灭顶之灾”。某985高校前天出炉的抽检结果直接把大家看傻了:明明自己逐字逐句手敲的论文,知网查重…...
Systemd配置文件修改后不生效?试试这个命令比重启更高效
Systemd配置热更新实战:如何用daemon-reexec替代服务重启 在Linux系统管理中,systemd作为现代init系统的代表,其配置调整是管理员日常工作的核心部分。但许多工程师在修改/etc/systemd/system.conf这类全局配置后,往往陷入两难&am…...
从防火墙到AI:企业级网络异常检测方案选型指南(2024最新版)
从防火墙到AI:企业级网络异常检测方案选型指南(2024最新版) 当某跨国零售企业遭遇持续3天的DDoS攻击导致线上业务瘫痪时,技术团队发现传统防火墙规则库已48小时未更新;而当某金融机构因AI模型误判正常促销流量为异常导…...
AI性能测试:TPS之外还要关注什么?
在AI驱动的时代,性能测试已成为软件测试从业者的核心技能。传统软件测试中,TPS(Transactions Per Second,每秒事务处理量)常被视为黄金指标,用于衡量系统的吞吐能力。然而,AI系统因其独特的计算…...
