奈雪开发平台
功能简介
奈雪开发平台是一个全面的 VS Code 扩展,提供代码安全检查和代码格式化配置功能。
主要功能
- 敏感信息检测:自动识别硬编码的密码信息
- 灵活的扫描模式:支持全局扫描和登录页面扫描
- Prettier 代码格式化:快速配置和管理代码格式化选项
- 可配置的扫描选项:通过设置快速调整扫描行为
- 侧边栏界面:在活动栏提供便捷的操作面板
注意:此扩展旨在帮助识别潜在的安全问题,但不应作为保护代码安全的唯一方法。
环境要求
- Visual Studio Code 版本 1.100.0 或更高版本
第一部分:敏感信息检测
功能说明
本功能帮助您在开发过程中识别代码中的硬编码密码敏感信息。当检测到潜在的硬编码密码时,扩展会提供警告通知。
扫描模式
扩展提供两种灵活的扫描模式:
- 全局扫描:扫描项目中的所有支持文件类型
- 登录页扫描:仅扫描与登录相关的文件
支持的文件类型
- JavaScript (.js)
- TypeScript (.ts)
- TypeScript React (.tsx)
- JavaScript React (.jsx)
- HTML (.html)
- Vue (.vue)
- JSON (.json)
排除的文件类型
扩展会自动排除以下类型的文件,提高扫描精准度:
- 静态资源文件(.jpg, .png, .gif, .svg, .ico 等)
- 样式文件(.css, .scss, .less, .sass, .styl 等)
- 字体文件(.woff, .woff2, .ttf, .eot 等)
- 国际化配置文件(文件名包含 i18n、locale、messages、lang 或 zh.json、en.json)
- 压缩文件和媒体文件
排除的代码结构
为了减少误报,以下代码结构中的敏感信息被视为非硬编码信息而被排除:
- 常量定义:全大写名称的常量定义(如 USER_ROLES、PERMISSIONS 等)
- 接口/类型定义:interface 和 type 关键字定义的接口或类型(整个定义块)
- 嵌套对象中的变量:当值为变量标识符或函数调用时(而非字面量)
- 注释:代码注释中的内容
- 占位符:包含 ${} 或 {} 格式的占位符变量
- 代码示例:完全等于 your、placeholder、example、test、dummy、xxxx、****、password 等示例关键字的内容
检测的敏感信息模式
扩展检测以下硬编码敏感信息:
- 密码字段:password、pass、pwd、psd(仅检测字面量常量值)
检测示例
以下情况会被检测为敏感信息:
// ❌ 对象中的硬编码密码字面量(会被检测)
const oo = {
password: '22222222222',
pwd: '2222222'
}
const config = {
auth: {
password: 'admin123',
pwd: 'secret123'
}
}
// ❌ 直接赋值硬编码密码
const loginPassword = 'MySecretPassword123'
let pwd = 'userPassword'
以下情况会被排除(不会触发警告):
// ✅ 普通对象中的变量赋值(排除)
const oo = {
password: adminPassword, // 变量,不是字面量
pwd: getPassword() // 函数调用,不是字面量
}
// ✅ 接口定义(排除)
interface LoginForm {
password: string
pwd: string
}
type UserInput = {
password: string
}
// ✅ 注释中的内容(排除)
// This is the password field
const password = adminPassword
// ✅ 占位符变量(排除)
const password = '${PASSWORD_VALUE}'
const pwd = `${PASSWORD_VAR}`
// ✅ 示例/测试关键字(排除)
const password = 'example'
const pwd = 'test'
使用敏感信息检测
方式一:侧边栏面板(推荐)
- 点击左侧活动栏中的奈雪图标打开侧边面板
- 侧边栏提供以下功能:
- 状态信息:实时显示扫描状态和当前扫描模式
- 扫描操作:一键执行全局扫描或登录页扫描
- 设置选项:快速更改扫描模式或打开详细设置
- 点击标题栏的刷新图标可刷新侧边栏状态
- 点击任意扫描选项即可立即执行对应的扫描
方式二:命令面板
- 按
Ctrl+Shift+P 打开命令面板
- 输入"奈雪开发平台"查找相关命令:
- 全局扫描敏感信息:扫描整个项目中的所有文件
- 扫描登录页敏感信息:仅扫描与登录相关的文件
- 更改扫描模式:更改默认扫描模式
- 打开扩展设置:打开扩展配置设置
方式三:快捷键
扩展提供了便捷的快捷键来快速执行扫描功能:
- 全局扫描敏感信息:
Ctrl+Shift+F7 (Windows/Linux) 或 Cmd+Shift+F7 (macOS)
- 扫描登录页敏感信息:
Ctrl+Shift+F8 (Windows/Linux) 或 Cmd+Shift+F8 (macOS)
快捷键仅在编辑器获得焦点时有效。如果快捷键与其他扩展冲突,可以通过 VS Code 的键盘快捷方式设置进行自定义。
敏感信息扫描配置
启用/禁用扫描
- nayuki-development-platform.enableScan:启用敏感信息扫描功能
扫描模式设置
- nayuki-development-platform.scanMode:设置默认扫描模式
full:全局扫描(默认)
login:仅扫描登录相关文件
当禁用扫描功能时,扩展不会自动扫描项目文件,也不会响应手动扫描命令。
自动扫描
扩展在以下情况下会自动扫描:
- VS Code 打开项目时
- 根据配置的默认扫描模式执行相应扫描
- 仅当启用扫描功能时才会执行
第二部分:Prettier 代码格式化
功能说明
Prettier 代码格式化功能让您能够快速配置和管理 Prettier 代码格式化选项。无需手动编辑配置文件,通过友好的用户界面即可设置所有常用的格式化参数。
配置方式
Prettier 配置提供四种灵活的配置方式,您可以根据需求选择最适合的方式:
方式一:使用默认配置
快速应用预设的 Prettier 配置,包含以下默认参数:
editor.formatOnSave:true(保存时自动格式化)
editor.defaultFormatter:esbenp.prettier-vscode
prettier.printWidth:80(每行最大字符数)
prettier.semi:false(不添加分号)
prettier.singleQuote:true(使用单引号)
prettier.trailingComma:es5(尾部逗号)
prettier.bracketSpacing:true(对象空格)
prettier.arrowParens:always(箭头函数括号)
方式二:通过文本框输入 JSON
在文本输入框中直接输入 Prettier 配置的 JSON 格式,支持自定义修改默认配置。扩展会自动解析 JSON 并与默认配置合并。
示例:
{
"prettier.semi": false,
"prettier.singleQuote": true,
"prettier.printWidth": 100
}
方式三:从文件导入
从项目中选择现有的配置文件(通常是 .prettierrc 或 prettier.config.js 的导出 JSON)进行导入。导入的配置将与默认配置合并。
方式四:逐项配置
通过交互式问卷逐项设置 Prettier 配置参数,包括:
- printWidth:每行最大字符数(默认 80)
- semi:句尾是否添加分号(默认 false)
- singleQuote:使用单引号还是双引号(默认单引号)
- formatOnSave:保存时自动格式化(默认 true)
- trailingComma:尾部逗号处理(none/es5/all)
- bracketSpacing:对象文字前后是否添加空格(默认 true)
配置存储位置
Prettier 配置会被保存到项目工作目录下的 .vscode/settings.json 文件中,这样所有团队成员在打开项目时都能获得一致的代码格式化配置。
使用 Prettier 配置
- 按
Ctrl+Shift+P 打开命令面板
- 搜索"配置 Prettier"或"Configure Prettier"
- 选择希望的配置方式
- 按照提示输入或选择配置参数
- 配置将自动保存到
.vscode/settings.json
- VS Code 会立即应用新的 Prettier 配置
Prettier 配置示例
严格模式(添加分号、双引号)
{
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"prettier.semi": true,
"prettier.singleQuote": false,
"prettier.printWidth": 100
}
宽松模式(不添加分号、单引号)
{
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"prettier.semi": false,
"prettier.singleQuote": true,
"prettier.printWidth": 120
}
扩展设置
可以通过以下方式访问扩展设置:
- 按
Ctrl+, 打开 VS Code 设置
- 搜索"奈雪开发平台"
- 修改相关配置项
或者使用命令面板中的"打开扩展设置"命令。
已知问题
- 常量定义整个块会被排除,但其中的变量赋值不会报警
- 每个文件的扫描性能与文件大小有关
更新日志
0.0.2
- 优化密码检测功能,只检查密码字段,不检查用户名
- 添加对 .tsx 和 .jsx 文件的支持
- 改进了字面量常量区分:值为变量时通过,值为字面量时报警
- 优化常量定义排除策略:只排除大写常量,普通对象也会检测
- 添加对常量名称检测,自动不排除大写常量
0.0.2
奈雪开发平台的初始版本,具备基本的敏感信息检测功能和 Prettier 代码格式化配置功能,支持全局扫描和登录页扫描两种扫描模式。