UNPKG

ubon

Version:

Security scanner for AI-generated React/Next.js and Python apps. Catches hardcoded secrets, accessibility issues, and vulnerabilities that traditional linters miss.

40 lines (39 loc) 2.01 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.initializeConfig = initializeConfig; const fs_1 = require("fs"); const path_1 = require("path"); const __1 = require(".."); async function initializeConfig(options) { console.log('🔍 Analyzing project...'); const scanner = new __1.UbonScan(false, true); const results = await scanner.diagnose({ directory: process.cwd(), profile: 'auto' }); const analysis = analyzeProject(results); const config = generateOptimalConfig(analysis, options); const configPath = (0, path_1.join)(process.cwd(), 'ubon.config.json'); (0, fs_1.writeFileSync)(configPath, JSON.stringify(config, null, 2)); console.log('✅ Generated ubon.config.json'); console.log(`📊 Profile: ${analysis.detectedProfile}`); console.log(`🎯 Recommended min confidence: ${config.minConfidence ?? 'none'}`); if (config.disabledRules?.length) console.log(`🚫 Disabled noisy rules: ${config.disabledRules.join(', ')}`); if (analysis.baselineRecommended) console.log('💡 Run `ubon check --update-baseline` to suppress existing issues'); } function analyzeProject(results) { const detectedProfile = results.some(r => (r.file || '').endsWith('.py')) ? 'python' : 'next'; const noisy = new Map(); for (const r of results) noisy.set(r.ruleId, (noisy.get(r.ruleId) || 0) + 1); const suggestedDisabledRules = Array.from(noisy.entries()).filter(([id, count]) => id === 'SEC018' && count > 5).map(([id]) => id); const recommendedMinConfidence = 0.7; return { detectedProfile, commonFalsePositives: [], recommendedMinConfidence, suggestedDisabledRules, baselineRecommended: results.length > 20 }; } function generateOptimalConfig(analysis, options) { return { profile: options.profile || analysis.detectedProfile, minConfidence: analysis.recommendedMinConfidence, failOn: 'error', disabledRules: analysis.suggestedDisabledRules }; }