温馨提示×

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.jsnpm
    • 执行: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(选择 ESModulesTypeScript/否Browser/NodeAirbnbJSON/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.jsonlint 脚本中先 prettier --write,再 eslint --fix
  • 安全规则关注点
    • 使用 eslint-plugin-security 检测常见隐患:evalchild_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.jspm2 等工具进行 CPU/内存/事件循环分析
    • 系统侧:结合 vmstat/iostat 判断 I/O 与系统瓶颈;优化 DOM 操作、减少 HTTP 请求、压缩资源、使用 CDN
    • 代码侧:审查是否存在 长任务阻塞主线程内存泄漏正则灾难(ReDoS) 等模式

0