mira-consciousness
Version:
Memory & Intelligence Retention Archive - Preserving The Spark
241 lines • 7.32 kB
TypeScript
/**
* Analyzer Configuration System
* Provides configurable rules and thresholds for all analyzers
*/
export interface AnalyzerConfig {
enabled: boolean;
severity: {
critical: number;
high: number;
medium: number;
low: number;
};
security?: SecurityAnalyzerConfig;
performance?: PerformanceAnalyzerConfig;
documentation?: DocumentationAnalyzerConfig;
codeQuality?: CodeQualityAnalyzerConfig;
crossPlatform?: CrossPlatformAnalyzerConfig;
unusedCode?: UnusedCodeAnalyzerConfig;
}
export interface SecurityAnalyzerConfig {
enabled: boolean;
rules: {
hardcodedSecrets: {
enabled: boolean;
severity: 'critical' | 'high' | 'medium' | 'low';
patterns?: RegExp[];
excludePatterns?: RegExp[];
};
vulnerableDependencies: {
enabled: boolean;
severity: 'critical' | 'high' | 'medium' | 'low';
checkDevDependencies: boolean;
auditLevel: 'low' | 'moderate' | 'high' | 'critical';
};
owaspCompliance: {
enabled: boolean;
minComplianceScore: number;
categories: string[];
};
entropyAnalysis: {
enabled: boolean;
minEntropy: number;
fileExtensions: string[];
excludePaths: string[];
};
};
thresholds: {
criticalIssuesMax: number;
highIssuesMax: number;
minSecurityScore: number;
entropyThreshold: number;
};
}
export interface PerformanceAnalyzerConfig {
enabled: boolean;
rules: {
bundleSize: {
enabled: boolean;
maxSizeKB: number;
warnSizeKB: number;
checkSourceMaps: boolean;
};
complexityAnalysis: {
enabled: boolean;
maxCyclomaticComplexity: number;
maxCognitiveComplexity: number;
maxFunctionLength: number;
maxFileLength: number;
};
memoryLeaks: {
enabled: boolean;
patterns: string[];
severity: 'critical' | 'high' | 'medium' | 'low';
};
caching: {
enabled: boolean;
minCacheableResponseTime: number;
recommendedCacheDuration: number;
};
};
thresholds: {
maxLoadTimeMs: number;
maxMemoryUsageMB: number;
minPerformanceScore: number;
};
}
export interface DocumentationAnalyzerConfig {
enabled: boolean;
rules: {
readmeQuality: {
enabled: boolean;
requiredSections: string[];
minWordCount: number;
requireExamples: boolean;
requireBadges: boolean;
};
apiDocumentation: {
enabled: boolean;
requireJSDoc: boolean;
requireParamDescriptions: boolean;
requireReturnDescriptions: boolean;
requireExamples: boolean;
minCoveragePercent: number;
};
changelog: {
enabled: boolean;
requireSemanticVersioning: boolean;
requireDates: boolean;
format: 'keepachangelog' | 'conventional' | 'custom';
};
codeComments: {
enabled: boolean;
minCommentRatio: number;
requireComplexFunctionComments: boolean;
complexityThreshold: number;
};
};
thresholds: {
minDocumentationScore: number;
minReadmeScore: number;
minAPIDocCoverage: number;
};
}
export interface CodeQualityAnalyzerConfig {
enabled: boolean;
rules: {
duplicateCode: {
enabled: boolean;
minTokens: number;
minLines: number;
threshold: number;
};
codeSmells: {
enabled: boolean;
detectLongMethods: boolean;
detectLargeClasses: boolean;
detectDeepNesting: boolean;
maxNestingDepth: number;
};
namingConventions: {
enabled: boolean;
variablePattern: RegExp;
functionPattern: RegExp;
classPattern: RegExp;
constantPattern: RegExp;
};
testCoverage: {
enabled: boolean;
minCoverage: number;
requireUnitTests: boolean;
requireIntegrationTests: boolean;
};
};
thresholds: {
maxDuplicatePercent: number;
maxComplexity: number;
minMaintainabilityIndex: number;
minTestCoverage: number;
};
}
export interface CrossPlatformAnalyzerConfig {
enabled: boolean;
targetPlatforms: Array<'windows' | 'macOS' | 'linux' | 'unix'>;
rules: {
pathHandling: {
enabled: boolean;
severity: 'critical' | 'high' | 'medium' | 'low';
requirePathModule: boolean;
};
shellCommands: {
enabled: boolean;
allowedCommands: string[];
requireCrossPlatformChecks: boolean;
};
filePermissions: {
enabled: boolean;
checkSymlinks: boolean;
checkExecutePermissions: boolean;
};
environmentVariables: {
enabled: boolean;
requireFallbacks: boolean;
platformSpecificVars: {
[key: string]: string[];
};
};
};
thresholds: {
minCompatibilityScore: number;
maxPlatformSpecificCode: number;
};
}
export interface UnusedCodeAnalyzerConfig {
enabled: boolean;
rules: {
unusedFunctions: {
enabled: boolean;
excludePatterns: string[];
checkPrivateMethods: boolean;
checkExports: boolean;
};
unusedImports: {
enabled: boolean;
checkTypeImports: boolean;
checkSideEffectImports: boolean;
};
unusedVariables: {
enabled: boolean;
checkGlobalVariables: boolean;
checkParameters: boolean;
allowUnusedCatchErrors: boolean;
};
deadCode: {
enabled: boolean;
checkUnreachableCode: boolean;
checkEmptyBlocks: boolean;
checkCommentedCode: boolean;
};
};
thresholds: {
maxUnusedPercent: number;
minActiveCodeRatio: number;
};
}
export declare const defaultAnalyzerConfig: AnalyzerConfig;
export declare class AnalyzerConfigLoader {
private config;
constructor(customConfig?: Partial<AnalyzerConfig>);
private mergeConfig;
private mergeAnalyzerConfig;
getConfig(): AnalyzerConfig;
getSecurityConfig(): SecurityAnalyzerConfig | undefined;
getPerformanceConfig(): PerformanceAnalyzerConfig | undefined;
getDocumentationConfig(): DocumentationAnalyzerConfig | undefined;
getCodeQualityConfig(): CodeQualityAnalyzerConfig | undefined;
getCrossPlatformConfig(): CrossPlatformAnalyzerConfig | undefined;
getUnusedCodeConfig(): UnusedCodeAnalyzerConfig | undefined;
static loadFromFile(configPath: string): Promise<AnalyzerConfigLoader>;
saveToFile(configPath: string): Promise<void>;
}
//# sourceMappingURL=analyzer-config.d.ts.map