FauxPy (pronounced: "foh pie") is an automated fault localization tool for Python programs. This repository includes FauxPy's source code and instructions to install and use the tool.
- For comprehensive documentation, visit FauxPy documentation.
- You can also participate in our Discussions section for questions, feedback, and more.
- If you encounter any issues, feel free to open an issue on our GitHub repository.
FauxPy supports seven classic fault-localization techniques in four families:
- SBFL (spectrum-based) techniques Tarantula, Ochiai, and DStar.
- MBFL (mutation-based) techniques Metallaxis and Muse.
- PS (predicate switching) fault localization.
- ST (stack-trace) fault localization.
It supports fault localization at the level of statements (statement-level granularity) and at the level of functions (function-level granularity).
FauxPy is based on dynamic analysis and can use tests written in the format of Pytest, Unittest, and Hypothesis.
FauxPy is available on
PyPI,
so you can install it using pip
:
pip install fauxpy
To install the latest (unreleased) version, use the following command:
pip install git+https://github.com/atom-sw/fauxpy
We have mainly tested FauxPy with Python 3.6, 3.7, and 3.8, but it should also work on later Python versions.
Check out this short demo video of FauxPy in action (~16 minutes).
The directory
examples/triangle_area
includes a tutorial example of
using FauxPy.
Follow the instructions in the
README.md
.
Here is a demo video
of part of this
example (~ 5 minutes).
The technical report FauxPy: A Fault Localization Tool for Python presents FauxPy in detail, including its implementation, architecture, and instructions on how to use it. You can cite this technical report as follows:
@misc{PythonFL-FauxPy-Tool,
title={{FauxPy}: A Fault Localization Tool for {P}ython},
author={Mohammad Rezaalipour and Carlo A. Furia},
year={2024},
eprint={2404.18596},
archivePrefix={arXiv},
primaryClass={cs.SE},
url={https://arxiv.org/abs/2404.18596}
}
The paper An Empirical Study of Fault Localization in Python Programs presents an empirical study where we applied FauxPy to 135 bugs across 13 real-world Python programs from the curated collection BugsInPy. This paper is published in the Empirical Software Engineering (EMSE) journal. You can cite this empirical work as follows:
@article{Rezaalipour:2024,
title={An empirical study of fault localization in {P}ython programs},
author={Rezaalipour, Mohammad and Furia, Carlo A.},
journal={Empirical Software Engineering},
volume={29},
number={4},
pages={92},
year={2024},
publisher={Springer}
}
This repository is a public mirror of (part of) FauxPy's private development repository. There are two public mirrors, whose content is identical: