SuperAPI AI 工具集

code-analyzer

编程与开发

查看项目

更新于 10-16 05:26

技能介绍

用途

code-analyzer 用于分析代码中的模式、复杂度、依赖关系、质量指标和潜在问题,为代码审查和重构提供结构化洞察。

主要能力

  • 代码审查自动化
  • 识别重构机会
  • 理解不熟悉的代码库
  • 质量指标报告
  • 依赖分析

使用方式

基础分析

const { analyzeCode } = require('/job/.pi/skills/code-analyzer/analyzer.js');

const result = await analyzeCode('src/index.js', {
  language: 'javascript'
});

console.log(result);

目录分析

const result = await analyzeCode('src/', {
  analyzeAllFiles: true,
  pattern: '**/*.js',
  exclude: ['**/node_modules/**', '**/*.test.js']
});

console.log(result.summary);

复杂度分析

const result = await analyzeCode('src/', {
  complexityMetrics: true,
  maxCyclomaticComplexity: 10,
  maxFunctionLength: 50
});

console.log(result.complexity);

依赖分析

const result = await analyzeCode('src/', {
  dependencyGraph: true,
  detectCircularDependencies: true
});

console.log(result.dependencies);

代码质量报告

const { generateQualityReport } = require('/job/.pi/skills/code-analyzer/analyzer.js');

const report = await generateQualityReport('src/', {
  languages: ['javascript', 'typescript'],
  metrics: ['complexity', 'duplication', 'maintainability'],
  thresholds: {
    complexity: 10,
    duplication: 5,
    maintainability: 50
  }
});

console.log(report);

模式检测

const result = await analyzeCode('src/', {
  detectPatterns: [
    'singleton',
    'factory',
    'observer',
    'decorator',
    'strategy',
    'adapter'
  ]
});

console.log(result.detectedPatterns);

安全分析

const result = await analyzeCode('src/', {
  securityScan: true,
  detectVulnerabilities: [
    'sqlInjection',
    'xss',
    'pathTraversal',
    'commandInjection',
    'insecureRandomness'
  ]
});

console.log(result.securityIssues);

代码重复检测

const result = await analyzeCode('src/', {
  detectDuplication: true,
  minTokenMatch: 30
});

console.log(result.duplicates);

Bash CLI

# 分析单个文件
node /job/.pi/skills/code-analyzer/analyzer.js \
  --file src/index.js

# 分析目录
node /job/.pi/skills/code-analyzer/analyzer.js \
  --dir src/ \
  --exclude "**/node_modules/**"

# 生成质量报告
node /job/.pi/skills/code-analyzer/analyzer.js \
  --dir src/ \
  --quality-report \
  --output report.json

# 检查安全问题
node /job/.pi/skills/code-analyzer/analyzer.js \
  --dir src/ \
  --security-scan

CI/CD 集成

// .github/workflows/code-quality.yml
// 在 PR 上运行代码分析
const { analyzeCode } = require('/job/.pi/skills/code-analyzer/analyzer.js');

const result = await analyzeCode('src/', { qualityMetrics: true });

if (result.overall.score < 70) {
  console.error('Code quality below threshold');
  process.exit(1);
}

与其他技能集成

// 与 content-search 配合查找模式
const { contentSearch } = require('../content-search/search.js');
const { analyzeCode } = require('./code-analyzer/analyzer.js');

const matches = await contentSearch('TODO.*refactor', { include: '*.js' });
for (const match of matches) {
  const analysis = await analyzeCode(match.file);
  console.log(`Issues in ${match.file}:`, analysis.issues);
}

// 与 git-structured 配合处理变更文件
const { git } = require('../git-structured/git.js');
const diff = await git('diff', { cached: true });

const changedFiles = diff.files.map(f => f.path);
for (const file of changedFiles) {
  const analysis = await analyzeCode(file);
  if (analysis.issues.length > 0) {
    console.log(`Review needed: ${file}`);
  }
}

输出结构

{
  file: "src/processor.js",
  language: "javascript",
  loc: { total: 234, code: 189, comments: 35, blank: 10 },
  
  functions: [
    {
      name: "processData",
      line: 42,
      params: 5,
      length: 78,
      cyclomaticComplexity: 12,
      cognitiveComplexity: 15
    }
  ],
  
  classes: [
    {
      name: "DataProcessor",
      line: 10,
      methods: 8,
      properties: 5
    }
  ],
  
  imports: [
    { path: "./utils", names: ["helper1", "helper2"] },
    { path: "lodash", names: ["_"] }
  ],
  
  exports: [
    { name: "processData", type: "function" },
    { name: "DataProcessor", type: "class" }
  ],
  
  patterns: {
    asyncAwait: 5,
    promises: 2,
    callbacks: 1,
    decorators: 0
  },
  
  issues: [
    {
      line: 45,
      type: "complexity",
      severity: "warning",
      message: "Function has high cyclomatic complexity (12)"
    }
  ]
}

指标

圈复杂度

衡量代码中独立路径的数量:

  • 1-10:低复杂度 ✓
  • 11-20:中等
  • 21-50:高
  • 50+:非常高 ⚠️

认知复杂度

衡量代码理解难度:

  • 1-10:易于阅读 ✓
  • 11-20:中等难度
  • 21-50:困难
  • 50+:非常困难 ⚠️

可维护性指数

0-100 分制:

  • 85-100:高度可维护 ✓
  • 65-84:可维护
  • 50-64:困难
  • 0-49:非常困难 ⚠️

API

analyzeCode(path, options = {})

选项:

  • language - javascript|typescript|python|java|etc
  • analyzeAllFiles - Boolean
  • pattern - 文件 Glob 模式
  • exclude - 排除模式
  • complexityMetrics - Boolean
  • dependencyGraph - Boolean
  • detectCircularDependencies - Boolean
  • maxCyclomaticComplexity - 数字阈值
  • maxFunctionLength - 数字阈值
  • includeTests - Boolean

返回值:见上方输出结构。

语言支持

语言 扩展名 复杂度 依赖 质量
JavaScript .js, .mjs ✅ ✅ ✅
TypeScript .ts, .tsx ✅ ✅ ✅
Python .py ✅ ✅ ✅
Java .java ✅ ✅ ✅
Go .go ✅ ✅ ✅
Rust .rs ✅ ✅ ✅
C/C++ .c, .h, .cpp ✅ ✅ ✅
Ruby .rb ✅ ✅ ✅

适用场景

  • 代码审查自动化
  • 识别重构机会
  • 理解不熟悉的代码库
  • 质量指标报告
  • 依赖分析

限制

以下情况不应使用本技能:

  • 仅检查语法错误(应使用 linting)
  • 运行时行为(应使用测试工具)
  • 二进制分析