Debian下如何进行JS代码审查
小樊
43
2025-12-09 04:28:04
Debian下的JS代码审查实践
一 环境准备
- 更新系统与基础工具
- 执行:
sudo apt update && sudo apt upgrade
- 安装构建与版本管理:
sudo apt install -y build-essential git
- 安装 Node.js 与 npm
- 执行:
sudo apt install -y nodejs npm
- 建议用 nvm 管理版本:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash,随后 nvm install --lts && nvm use --lts
- 初始化项目与依赖
npm init -y
- 安装本地开发依赖:
npm i -D eslint prettier eslint-config-airbnb-base eslint-plugin-import eslint-plugin-security
二 静态检查与安全审查
- 初始化 ESLint 配置
- 交互式:
npx eslint --init(选择 ESModules、TypeScript/否、Browser/Node、Airbnb、JSON/JS 格式)
- 或手动创建
.eslintrc.js 并扩展 Airbnb 与安全插件
- 推荐配置示例
- 文件:
.eslintrc.js
- 说明:启用 Airbnb 基础规则、import 插件、security 插件;按需开启 Prettier 联动
- 文件:
.prettierrc
- 文件:
package.json 脚本
- 常用命令
- 全量检查:
npx eslint . --ext .js,.jsx,.mjs,.cjs
- 自动修复:
npx eslint . --ext .js,.jsx,.mjs,.cjs --fix
- 与 Prettier 配合:在
package.json 的 lint 脚本中先 prettier --write,再 eslint --fix
- 安全规则关注点
- 使用 eslint-plugin-security 检测常见隐患:eval、child_process、不安全的 RegExp、可控的 require/fs 路径、对象注入、不安全的随机数、双向字符攻击 等,适合在提交前阻断高风险模式
- 示例配置片段:
- .eslintrc.js
- module.exports = {
env: { browser: true, es2021: true, node: true },
extends: [
‘airbnb-base’,
‘plugin:import/errors’,
‘plugin:import/warnings’,
‘plugin:security/recommended’
],
rules: {
‘security/detect-eval-with-expression’: ‘error’,
‘security/detect-child-process’: ‘error’,
‘security/detect-unsafe-regex’: ‘error’,
‘security/detect-non-literal-fs-filename’: ‘error’,
‘security/detect-object-injection’: ‘warn’
}
};
- .prettierrc
- { “semi”: true, “singleQuote”: true, “tabWidth”: 2, “trailingComma”: “es5” }
- package.json
- { “scripts”: { “lint”: “prettier --write . && eslint . --ext .js,.jsx,.mjs,.cjs --fix” } }
三 提交前与CI审查流程
- 本地 Git 钩子
- 安装 Husky + lint-staged
npm i -D husky lint-staged
- 启用:
npx husky install
- 添加钩子:
npx husky add .husky/pre-commit "npx lint-staged"
- 配置
package.json
- 持续集成示例 GitHub Actions
- 文件:
.github/workflows/lint.yml
- 说明:在 Debian 环境运行,安装依赖并执行审查,失败则阻断合并
- 示例工作流:
- name: Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: { node-version: ‘18’ }
- run: npm ci
- run: npm run lint – --max-warnings=0
- 对应 package.json 脚本:
- { “scripts”: { “lint”: “prettier --check . && eslint . --ext .js,.jsx,.mjs,.cjs” } }
四 运行时与性能审查
- 本地与浏览器侧问题定位
- 前端:使用浏览器 开发者工具 Console/Network 查看报错、资源加载与请求状态
- 服务端 Node.js:检查应用日志与输出;必要时使用 node --inspect 配合 Chrome DevTools 进行断点与性能分析
- 服务器与环境排查
- 查看 Nginx/Apache 日志(如:/var/log/nginx/error.log),确认静态资源与反向代理是否正常
- 资源与依赖:用
top/htop/free 观察 CPU/内存;核对 package.json 依赖版本与安装完整性
- 性能瓶颈分析
- Node.js 侧:使用 clinic.js、pm2 等工具进行 CPU/内存/事件循环分析
- 系统侧:结合 vmstat/iostat 判断 I/O 与系统瓶颈;优化 DOM 操作、减少 HTTP 请求、压缩资源、使用 CDN 等
- 代码侧:审查是否存在 长任务阻塞主线程、内存泄漏、正则灾难(ReDoS) 等模式