PyCodar: A Radar for Your Code
A simple tool for auditing and understanding your (python) codebase.
pip install pycodar
pycodar stats: Summarizes the most basic stats of your directory in a single table. 📊pycodar strct: Displays the file structure of all the files, their functions, classes, and methods in a nicely colored tree. 🗂️pycodar files: Shows a table of all the files with counts of the lines of code, comments, empty lines, total lines, and file size. 📋pycodar calls: Counts how often elements (modules, functions, methods) of your code are called within the code. 📞pycodar deps: Shows which external packages and standard library modules are used in your code. 📦pycodar dead: Finds (likely) unused code. ☠️
General Overview
Type
pycodar stats
in your terminal to get the most basic statistics of your directory printed out:
📊 Basic Metrics
╭─────────────────────┬───────────╮
│ Total Size │ 54.21KB │
│ Total Files │ 6 │
│ Total Directories │ 2 │
│ Total Lines │ 1,394 │
│ Code Lines │ 885 │
│ Comment Lines │ 26 │
│ Empty Lines │ 208 │
│ Functions │ 38 │
│ Classes │ 2 │
╰─────────────────────┴───────────╯
Structure
pycodar strct
gives you something like:
🌳 File Structure
📁 Root
├── 📄 README.md
├── 📄 pyproject.toml
├── 📄 setup.py
└── 📁 pycodar
├── 📄 __init__.py
├── 📄 analyze.py
│ ├── 🔷 CodeElementVisitor
│ │ ├── 🔹 __init__
│ │ ├── 🔹 visit_FunctionDef
│ │ ├── 🔹 visit_ClassDef
│ │ ├── 🔹 visit_Import
│ │ ├── 🔹 visit_ImportFrom
│ │ ├── 🔹 visit_Call
│ │ ├── 🔹 visit_Assign
│ │ ├── 🔹 visit_Name
│ │ ├── 🔹 visit_Attribute
│ │ ├── 🔹 visit_Return
│ │ └── 🔹 visit_Decorator
│ ├── 🔸 count_functions_and_classes
│ ├── 🔸 get_file_size_kb
│ ├── 🔸 count_lines
│ ├── 🔸 analyze_code_connections
│ ├── 🔸 analyze_directory
│ └── 🔸 generate_report
└── 📄 cli.py
├── 🔷 TestClass
│ ├── 🔹 __init__
│ └── 🔹 test_method
├── 🔸 extract_code_structure
├── 🔸 create_structure_tree
├── 🔸 parse_ignore_file
├── 🔸 should_ignore
├── 🔸 get_ignore_patterns
├── 🔸 format_size
├── 🔸 count_code_metrics
├── 🔸 create_metrics_table
├── 🔸 create_code_connections_table
├── 🔸 create_dead_code_table
├── 🔸 create_code_connections_tree
├── 🔸 create_file_table
├── 🔸 print_stats
├── 🔸 print_structure
├── 🔸 print_files
├── 🔸 print_calls
├── 🔸 print_dead_code
├── 🔸 process_directory
└── 🔸 main
File Statistics
Typing
pycodar files
will give you an overview of the lines of code, comments, empty lines, total lines and file sizes:
📁 File Distribution
╭───────────┬──────────────────┬────────┬────────────┬─────────┬─────────┬───────────╮
│ Path │ File │ Code │ Comments │ Empty │ Total │ Size │
├───────────┼──────────────────┼────────┼────────────┼─────────┼─────────┼───────────┤
│ Root │ pyproject.toml │ 0 │ 0 │ 0 │ 43 │ 1.37KB │
│ Root │ README.md │ 0 │ 0 │ 0 │ 95 │ 3.37KB │
│ Root │ setup.py │ 45 │ 0 │ 1 │ 46 │ 1.72KB │
│ pycodar │ __init__.py │ 7 │ 1 │ 3 │ 11 │ 0.22KB │
│ pycodar │ cli.py │ 384 │ 18 │ 90 │ 492 │ 18.62KB │
│ pycodar │ analyze.py │ 449 │ 7 │ 114 │ 570 │ 22.27KB │
╰───────────┴──────────────────┴────────┴────────────┴─────────┴─────────┴───────────╯
Calls
To check how much the modules, functions and methods in your code are actually being used, type:
pycondar calls
which will give you another table like:
📊 Most Called Elements
╭────────────┬─────────────────────────┬──────────╮
│ Type │ Name │ Called │
├────────────┼─────────────────────────┼──────────┤
│ Function │ isinstance │ 28 │
│ Function │ print │ 22 │
│ Function │ defaultdict │ 17 │
│ Function │ set │ 11 │
│ Function │ sorted │ 10 │
│ Function │ len │ 10 │
│ Function │ str │ 9 │
│ Function │ open │ 7 │
│ Function │ Path │ 4 │
│ Function │ sum │ 4 │
│ Method │ console.print │ 22 │
│ Method │ table.add_row │ 15 │
│ Method │ table.add_column │ 14 │
│ Method │ self.generic_visit │ 8 │
│ Method │ ast.walk │ 5 │
│ Method │ subparsers.add_parser │ 5 │
│ Method │ ast.parse │ 4 │
│ Method │ tree.add │ 4 │
│ Method │ method.startswith │ 4 │
│ Method │ file.read │ 3 │
╰────────────┴─────────────────────────┴──────────╯
Dead Code
And finally, to see if there is any code that's not even used, type
💀 Potentially Unused Code
╭─────────┬─────────────────────────╮
│ Type │ Name │
├─────────┼─────────────────────────┤
│ Class │ pycodar.cli.TestClass │
╰─────────┴─────────────────────────╯
which will point you at whatever code seems to be unused.
If you need any help / a quick reminder, type:
pycodar help
and if you just want to see everything all at once, type:
pycodar all
Thank you and enjoy! 😜
Release files for pycodar 0.1.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pycodar-0.1.7-py3-none-any.whl | Python 3 | none | any | Details |
Release files / pycodar-0.1.7-py3-none-any.whl
| Download URL | pycodar-0.1.7-py3-none-any.whl |
|---|---|
| Size | 15.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bff5fbb5b73db235331e5f58d336fdf8712029fb3ae423a8fe75813f92538f97
|
|
BLAKE2b-256 checksum How to use checksums |
1404a8d6d26275e40fb3f228b42a2bdf7a1ab83dd0e5f7d31106c8cb2e53b9c8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.7
|