@moikas/code-audit-mcp
Version:
AI-powered code auditing via MCP using local Ollama models for security, performance, and quality analysis
126 lines • 4.29 kB
TypeScript
/**
* Base auditor abstract class with common functionality
*/
import type { AuditRequest, AuditResult, AuditIssue, AuditorConfig, AuditError, AuditType, Severity, AuditSummary, AuditCoverage, AuditSuggestions } from '../types.js';
import type { OllamaClient } from '../ollama/client.js';
import { ModelManager } from '../ollama/models.js';
export declare abstract class BaseAuditor {
protected auditType: AuditType;
protected config: AuditorConfig;
protected ollamaClient: OllamaClient;
protected modelManager: ModelManager;
constructor(config: AuditorConfig, ollamaClient: OllamaClient, modelManager: ModelManager);
/**
* Main audit method - implements the core audit workflow
*/
audit(request: AuditRequest): Promise<AuditResult>;
/**
* Validate the audit request
*/
protected validateRequest(request: AuditRequest): void;
/**
* Check if this auditor should run for the given request
*/
protected shouldAudit(request: AuditRequest): boolean;
/**
* Detect or validate the programming language
*/
protected detectLanguage(code: string, declaredLanguage: string): string;
/**
* Analyze basic code metrics
*/
protected analyzeCodeMetrics(code: string, _language: string): Promise<{
lineCount: number;
functionCount: number;
complexity: number;
}>;
/**
* Select the best model for this audit
*/
protected selectModel(request: AuditRequest, language: string): string | null;
/**
* Get temperature for model generation
*/
protected getTemperature(): number;
/**
* Get max tokens for model generation
*/
protected getMaxTokens(): number;
/**
* Parse AI response into structured issues
*/
protected parseAIResponse(response: string): Promise<Partial<AuditIssue>[]>;
/**
* Fallback parsing when JSON parsing fails
*/
protected fallbackParseResponse(response: string): Partial<AuditIssue>[];
/**
* Post-process and validate issues from AI
*/
protected postProcessIssues(rawIssues: Partial<AuditIssue>[], request: AuditRequest, _language: string): Promise<AuditIssue[]>;
/**
* Validate and normalize a single issue
*/
protected validateAndNormalizeIssue(raw: Partial<AuditIssue>, request: AuditRequest, _language: string): AuditIssue | null;
/**
* Normalize severity to valid values
*/
protected normalizeSeverity(severity?: string): Severity;
/**
* Extract code snippet around a specific line
*/
protected extractCodeSnippet(code: string, line: number, context?: number): string;
/**
* Filter issues based on configuration and request
*/
protected filterIssues(issues: AuditIssue[], request: AuditRequest): AuditIssue[];
/**
* Sort issues by severity and line number
*/
protected sortIssues(issues: AuditIssue[]): AuditIssue[];
/**
* Create audit result
*/
protected createResult(requestId: string, issues: AuditIssue[], model: string, startTime: number, aiResponseTime: number, codeMetrics: {
lineCount: number;
functionCount: number;
complexity: number;
}): AuditResult;
/**
* Create audit summary
*/
protected createSummary(issues: AuditIssue[]): AuditSummary;
/**
* Create coverage information
*/
protected createCoverage(codeMetrics: {
lineCount: number;
functionCount: number;
complexity: number;
}, _issues: AuditIssue[]): AuditCoverage;
/**
* Create suggestions based on issues
*/
protected createSuggestions(issues: AuditIssue[]): AuditSuggestions;
/**
* Create empty result for disabled auditors
*/
protected createEmptyResult(requestId: string, startTime: number): AuditResult;
/**
* Create standardized error
*/
protected createError(code: string, message: string, details?: unknown): AuditError;
/**
* Get audit type
*/
getAuditType(): AuditType;
/**
* Update configuration
*/
updateConfig(config: Partial<AuditorConfig>): void;
/**
* Get current configuration
*/
getConfig(): AuditorConfig;
}
//# sourceMappingURL=base.d.ts.map