Facebook’s hybrid AI tools for finding and fixing software bugs
“Debugging the code is a chore”
-Facebook engineers Yue Jia, Ke Mao and Mark Harman
To dramatically reduce the time developers spend debugging code and deploying new software, engineers at Facebook have come up with an ingenious tool called âSapFixâ. Sapfix, which is still under development, can automatically generate fixes for specific bugs identified by Sapienz. He will then propose these fixes to the engineers for approval and deployment in production.
SapFix will eventually be able to operate independently of Sapienz, Facebook’s intelligent automated software testing tool. For now, this is a proof of concept that relies on this latest tool to locate bugs.
How does SapFix work?
This AI hybrid tool will generate bug fixes based on the type of bug encountered. For example:
For simpler bugs: SapFix will create fixes that override the code submission that introduced these bugs.
For complicated bugs: The tool uses a collection of “template fixes” that were created by human engineers based on previous bug fixes.
If the patches of man-made models don’t measure up: The tool attempts a “mutation-based fix”, which works by continuously making small changes to the code that caused the software to crash, until a solution is found.
SapFix generates several potential fixes for each bug. This is then submitted to engineers for evaluation. Patches are tested in advance so engineers can check if they can cause issues like compilation errors and other crashes.
With end-to-end automated testing and repair, SapFix is ââa milestone in the deployment of hybrid AI tools. Facebook intends to open both SapFix and Sapienz, once the additional engineering work is completed. You can read more about this tool on the Facebook blog.
Facebook Introduces Rosetta, A Scalable OCR System That Understands Text Over Images Using Faster-RCNN and CNN
How AI will transform the Data Center
Facebook Reality Labs Launches SUMO Challenge to Improve Understanding of 3D Scenes and Modeling Algorithms