code-auditor-mcp
Version:
Multi-language code quality auditor with MCP server - Analyze TypeScript, JavaScript, and Go code for SOLID principles, DRY violations, security patterns, and more
82 lines • 2.52 kB
TypeScript
/**
* Universal Data Access Analyzer
* Works across multiple programming languages using the adapter pattern
* Analyzes database access patterns and data layer interactions
*/
import { UniversalAnalyzer } from '../../languages/UniversalAnalyzer.js';
import type { Violation } from '../../types.js';
import type { AST, LanguageAdapter } from '../../languages/types.js';
/**
* Configuration for Data Access analyzer
*/
export interface DataAccessAnalyzerConfig {
checkOrgFilters?: boolean;
checkSQLInjection?: boolean;
databases?: {
[key: string]: {
name: string;
importPatterns: string[];
queryPatterns: string[];
ormPatterns?: string[];
};
};
organizationPatterns?: string[];
tablePatterns?: {
orm?: RegExp[];
sql?: RegExp[];
queryBuilder?: RegExp[];
};
performanceThresholds?: {
complexQueryCount?: number;
unfilteredQueryCount?: number;
joinedTableCount?: number;
};
securityPatterns?: {
sqlInjectionRisks?: string[];
parameterizedQueries?: string[];
};
}
export declare const DEFAULT_DATA_ACCESS_CONFIG: DataAccessAnalyzerConfig;
export declare class UniversalDataAccessAnalyzer extends UniversalAnalyzer {
readonly name = "data-access";
readonly description = "Analyzes database access patterns and data layer interactions";
readonly category = "security";
protected analyzeAST(ast: AST, adapter: LanguageAdapter, config: DataAccessAnalyzerConfig, sourceCode: string): Promise<Violation[]>;
/**
* Map imports to database types
*/
private mapDatabaseImports;
/**
* Extract database calls from AST
*/
private extractDatabaseCalls;
/**
* Analyze a database query
*/
private analyzeQuery;
/**
* Check for violations in a database call
*/
private checkViolations;
/**
* Check general data access patterns
*/
private checkGeneralPatterns;
/**
* Helper methods
*/
private isFunctionCall;
private isTemplateLiteral;
private isVariableAssignment;
private containsSQLKeywords;
private isOrmPattern;
private isDatabaseCall;
private extractTables;
private hasOrganizationFilter;
private checkQuerySecurity;
private extractMethodName;
private requiresOrgFilter;
private isStringLiteral;
private isConnectionString;
}
//# sourceMappingURL=UniversalDataAccessAnalyzer.d.ts.map