UNPKG

comment-analysis

Version:

Code comment rate analysis tool with multi-language support

147 lines (111 loc) โ€ข 6.44 kB
# Code Comment Rate Analysis Tool A command-line tool for analyzing comment rates in code files, supporting multiple programming languages and file formats. ## Features - ๐ŸŽฏ Support for multiple file types: Vue, JavaScript, TypeScript, JSX, TSX, Python, HTML, CSS, SCSS, LESS, Go, Rust, Java - ๐Ÿ“Š Statistics for multiple comment types: single-line comments, multi-line comments, inline comments - ๐Ÿ“ˆ Generate detailed statistics tables with file types, file counts, comment lines, empty lines, total lines, and comment rates - ๐ŸŽจ Beautiful colored output using chalk library - ๐Ÿ“ Support for recursive analysis of folders and subfolders - ๐ŸŒ Multi-language support (English/Chinese) ## Installation ### Method 1: Install from source 1. Clone or download the project to your local machine 2. Install dependencies: ```bash pnpm install ``` ### Method 2: Global installation (Recommended) ```bash npm install -g comment-analysis ``` ## Usage ### Basic Usage ```bash # Analyze specified folder comment-analysis /path/to/your/project # Or run from source node index.js /path/to/your/project pnpm start /path/to/your/project ``` ### Language Options ```bash # Use English (default) comment-analysis /path/to/your/project # Use Chinese comment-analysis /path/to/your/project --lang zh-CN comment-analysis /path/to/your/project -l zh-CN ``` ### Examples ```bash # Analyze current directory comment-analysis . # Analyze specific project folder comment-analysis /home/user/my-project # Analyze relative path comment-analysis ./src # Analyze with Chinese output comment-analysis . --lang zh-CN ``` ## Output Example ``` Starting analysis of folder: /path/to/project Analyzing 3 files... โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•คโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•คโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•คโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•คโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•คโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•— โ•‘ File Type โ”‚ File Count โ”‚ Comments โ”‚ Empty โ”‚ Total โ”‚ Comment Rate โ•‘ โ•Ÿโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ข โ•‘ Vue โ”‚ 1 โ”‚ 24 โ”‚ 19 โ”‚ 141 โ”‚ 17.02% โ•‘ โ•Ÿโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ข โ•‘ Python โ”‚ 1 โ”‚ 90 โ”‚ 33 โ”‚ 172 โ”‚ 52.33% โ•‘ โ•Ÿโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ข โ•‘ JavaScript โ”‚ 1 โ”‚ 25 โ”‚ 11 โ”‚ 70 โ”‚ 35.71% โ•‘ โ•Ÿโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ข โ•‘ Total โ”‚ 3 โ”‚ 139 โ”‚ 63 โ”‚ 383 โ”‚ 36.29% โ•‘ โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•งโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•งโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•งโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•งโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•งโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• Comment Rate Guide: Excellent (>30%) | Good (15-30%) | Needs Improvement (<15%) ``` ## Supported File Types | File Type | Extension | Supported Comment Types | | ---------- | --------- | ---------------------------------------------------------- | | Vue | .vue | // single-line, /\* \*/ multi-line, <!-- --> HTML comments | | JavaScript | .js | // single-line, /\* \*/ multi-line | | TypeScript | .ts | // single-line, /\* \*/ multi-line | | JSX | .jsx | // single-line, /\* _/ multi-line, {/_ \*/} JSX comments | | TSX | .tsx | // single-line, /\* _/ multi-line, {/_ \*/} JSX comments | | Python | .py | # single-line, """ """ multi-line, ''' ''' multi-line | | HTML | .html | <!-- --> HTML comments | | CSS | .css | // single-line, /\* \*/ multi-line | | SCSS | .scss | // single-line, /\* \*/ multi-line | | LESS | .less | // single-line, /\* \*/ multi-line | | Go | .go | // single-line, /\* \*/ multi-line | | Rust | .rs | // single-line, /\* \*/ multi-line | | Java | .java | // single-line, /\* _/ multi-line, /\*\* _/ documentation | ## Statistics Description - **File Count**: Total number of files of this type - **Comments**: Number of lines containing comments (including single-line, multi-line, and inline comments) - **Empty**: Number of completely empty lines or lines containing only whitespace - **Total**: Total number of lines in the file - **Comment Rate**: Percentage of comment lines to total lines ## Project Structure ``` comment-analysis/ โ”œโ”€โ”€ index.js # Main program file โ”œโ”€โ”€ package.json # Project configuration and dependencies โ”œโ”€โ”€ README.md # English documentation โ”œโ”€โ”€ README.zh-CN.md # Chinese documentation โ”œโ”€โ”€ .gitignore # Git ignore file configuration โ””โ”€โ”€ tests/ # Test files folder โ”œโ”€โ”€ README.md # Test files description โ”œโ”€โ”€ test-example.js # JavaScript test file โ”œโ”€โ”€ test-example.vue # Vue test file โ”œโ”€โ”€ test-example.py # Python test file โ”œโ”€โ”€ test-example.go # Go test file โ”œโ”€โ”€ test-example.rs # Rust test file โ””โ”€โ”€ test-example.java # Java test file ``` ## Dependencies - `commander`: Command line argument parsing - `glob`: File pattern matching - `chalk`: Terminal color output - `cli-table3`: Beautiful table output ## License MIT License