Analyses C/C++ build output for code size, static variables, and stack usage.
Project description
[![GitHub Link](https://img.shields.io/badge/GitHub-HBehrens/puncover-8da0cb?style=flat-square&logo=github)](https://github.com/HBehrens/puncover)
[![GitHub Workflow Status (branch)](https://img.shields.io/github/actions/workflow/status/HBehrens/puncover/ci.yml?style=flat-square&branch=master)](https://github.com/HBehrens/puncover/actions?query=branch%3Amaster+)
[![Codecov branch](https://img.shields.io/codecov/c/github/HBehrens/puncover/master?style=flat-square)](https://codecov.io/gh/HBehrens/puncover)
[![PyPI](https://img.shields.io/pypi/v/puncover?style=flat-square)](https://pypi.org/project/puncover)
[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/puncover?style=flat-square)](https://pypi.org/project/puncover)
[![License - MIT](https://img.shields.io/github/license/HBehrens/puncover?color=blue&style=flat-square)](https://github.com/HBehrens/puncover)
# puncover
![image](https://raw.githubusercontent.com/HBehrens/puncover/master/images/overview.png)
Analyzes C/C++ binaries for code size, static variables and stack usages. It creates a report with disassembler and call-stack analysis per directory, file, or function.
# Installation and Usage
Install with pip:
`bash pip install puncover `
Run it by passing the binary to analyze:
`bash puncover --elf_file project.elf ... * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) `
Open the link in your browser to view the analysis.
# Running Tests Locally
To run the tests locally, you need to install the development dependencies:
install pyenv: <https://github.com/pyenv/pyenv>
`bash curl https://pyenv.run | bash `
install all the python environments, using this bashism (this can take a few minutes):
`bash for _py in $(<.python-version ); do pyenv install ${_py}; done `
install the development dependencies:
`bash pip install -r requirements-dev.txt `
Then you can run the tests with:
`bash tox `
# Publishing Release
Update the version in puncover/__version__.py.
Commit the version update:
`bash git add . && git commit -m "Bump version to x.y.z" `
Create an annotated tag:
`bash git tag -a {-m=,}x.y.z `
Push the commit and tag:
`bash git push && git push --tags `
Either wait for the GitHub Action to complete and download the release artifact for uploading: <https://github.com/HBehrens/puncover/actions> OR Build the package locally: python setup.py sdist bdist_wheel
Upload the package to PyPI:
`bash twine upload dist/* `
Create GitHub releases:
gh release create –generate-notes x.y.z
attach the artifacts to the release too: gh release upload x.y.z dist/*
## Release Script
See release.sh for a script that automates the above steps. This example will work with the PyPi tokens (now required):
`bash PUNCOVER_VERSION=0.3.5 TWINE_PASSWORD="<pypi token>" TWINE_USERNAME=__token__ ./release.sh `
# Contributing
Contributions are welcome! Please open an issue or pull request on GitHub.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.