The Codebase Analyzer is a utility for analyzing codebases. It helps in gathering file information, counting tokens, and ensuring memory usage stays within specified limits.
To use the Codebase Analyzer in your project, install it via npm:
npm install @husniadil/codebase-analyzer
Here is an example of how to use the Codebase Analyzer in your application:
First, import the CodebaseAnalyzer class and configure it according to your needs:
import { CodebaseAnalyzer } from "codebase-analyzer";
import { Config } from "codebase-analyzer/types";
const config: Config = {
directory: "./src",
relevantExtensions: [".ts", ".js"],
maxFileSize: 200_000,
maxTokens: 50_000,
ignorePatterns: ["node_modules", "dist"],
ignoreFilesWithNoExtension: true,
memoryLimitMB: 128,
};
const analyzer = new CodebaseAnalyzer(config);
To analyze the codebase, call the analyze method:
analyzer.analyze().then((output) => {
console.log("Analysis Output:", output);
}).catch((error) => {
console.error("Error during analysis:", error);
});
Here is a more detailed example configuration:
const config: Config = {
directory: "./my-project",
relevantExtensions: [".ts", ".js", ".jsx", ".tsx"],
maxFileSize: 100_000,
maxTokens: 100_000,
ignorePatterns: ["node_modules", "build", "dist"],
ignoreFilesWithNoExtension: true,
memoryLimitMB: 64,
};
const analyzer = new CodebaseAnalyzer(config);
analyzer.analyze().then((output) => {
console.log("Analysis Output:", output);
}).catch((error) => {
console.error("Error during analysis:", error);
});
CodebaseAnalyzer
new CodebaseAnalyzer(config: Config)
config
: Configuration object for the analyzer.
analyze(): Promise<Output>
: Analyzes the codebase and returns the analysis output.
directory (string)
: The root directory to analyze.relevantExtensions (string[])
: List of file extensions to include in the analysis.maxFileSize (number)
: Maximum file size (in bytes) to process.maxTokens (number)
: Maximum number of tokens to process.ignorePatterns (string[])
: List of directory patterns to ignore.ignoreFilesWithNoExtension (boolean)
: Whether to ignore files with no extension.memoryLimitMB (number)
: Memory limit in megabytes.
The analyze method returns a Promise that resolves to an Output object containing the analysis results.
If the memory usage exceeds the specified limit, an error will be thrown. Ensure to handle this in your application:
analyzer.analyze().catch((error) => {
console.error("Error during analysis:", error);
});
This project is licensed under the MIT License. See the LICENSE file for details.
For more details, refer to the source code and documentation in the src directory.