Structured peer-review of academic papers.
The English summary is being prepared. Showing the original description.
Inspect codebases: LOC, languages, ratios via pygount.
The English summary is being prepared. Showing the original description.
See how to installReview the instructions the agent will receive before you install.
Analyze repositories for lines of code, language breakdown, file counts, and
code-vs-comment ratios using pygount.
pip install pygount
cd /path/to/repo
pygount --format=summary \
--folders-to-skip=".git,node_modules,venv,.venv,__pycache__,.cache,dist,build,.next,.tox,.eggs,*.egg-info" \
.
IMPORTANT: Always use --folders-to-skip to exclude dependency/build
directories, otherwise pygount will crawl them and take a very long time.
# Python project
--folders-to-skip=".git,__pycache__,venv,.venv,.tox,.eggs,*.egg-info,.pytest_cache,.mypy_cache,.ruff_cache"
# Node.js project
--folders-to-skip=".git,node_modules,dist,build,.next,.cache,coverage"
# General (safe default)
--folders-to-skip=".git,node_modules,venv,.venv,__pycache__,.cache,dist,build,.tox,.eggs,*.egg-info,.pytest_cache,.mypy_cache"
pygount --format=summary \
--folders-to-skip=".git,node_modules,.venv,__pycache__" \
--names-to-skip="*.pyc,*.pyo,*.so,*.dylib" \
/path/to/repo
pygount --format=summary /path/to/repo 2>/dev/null | grep -E "^\s+\w" | sort -t$'\t' -k2 -rn
pygount --format=json \
--folders-to-skip=".git,node_modules,.venv,__pycache__" \
/path/to/repo > codebase_stats.json
python3 -c "
import json
with open('codebase_stats.json') as f:
data = json.load(f)
# Aggregate by language
from collections import defaultdict
by_lang = defaultdict(lambda: {'code': 0, 'files': 0})
for entry in data:
lang = entry.get('language', 'unknown')
by_lang[lang]['code'] += entry.get('code', 0)
by_lang[lang]['files'] += 1
for lang, stats in sorted(by_lang.items(), key=lambda x: -x[1]['code']):
print(f'{lang:20s} {stats[\"code\"]:8d} lines {stats[\"files\"]:4d} files')
"
If pygount isn't available, use find + wc:
# Count lines in all Python files (excluding venvs)
find . -name "*.py" -not -path "*/venv/*" -not -path "*/.venv/*" -not -path "*/__pycache__/*" | xargs wc -l | tail -1
# Count by language
echo "Python: $(find . -name '*.py' -not -path '*/.venv/*' | xargs wc -l 2>/dev/null | tail -1)"
echo "JavaScript: $(find . -name '*.js' -not -path '*/node_modules/*' | xargs wc -l 2>/dev/null | tail -1)"
echo "TypeScript: $(find . -name '*.ts' -not -path '*/node_modules/*' | xargs wc -l 2>/dev/null | tail -1)"
# Count files by extension
find . -type f -not -path "*/.git/*" -not -path "*/node_modules/*" -not -path "*/.venv/*" | \
sed 's/.*\.//' | sort | uniq -c | sort -rn | head -20
node_modules, venv, .venv,
__pycache__, dist, build — otherwise pygount hangs or counts millions
of irrelevant lines.find + wc doesn't. Use
--names-to-skip for pygount, or filter with grep -I for find.*.min.js, *_pb2.py, auto-generated code inflates
counts. Exclude with --names-to-skip.--encoding=utf-8
or --encoding=chardet for mixed-encoding repos.No reviews yet. Tell others what you thought.
No login needed. Share how it worked for you, ask a question, or note where it did not run.
No comments yet. Be the first to write one.
Structured peer-review of academic papers.
The English summary is being prepared. Showing the original description.
Dark-themed SVG architecture/cloud/infra diagrams as HTML.
The English summary is being prepared. Showing the original description.
Search arXiv papers by keyword, author, category, or ID.
The English summary is being prepared. Showing the original description.
Monitor blogs and RSS/Atom feeds via blogwatcher-cli.
The English summary is being prepared. Showing the original description.
Onboarding conversation to generate a user profile.
The English summary is being prepared. Showing the original description.
Generate charts: select type, extract data, render image.
The English summary is being prepared. Showing the original description.