Dr. Milan Milanoviฤ‡ Profile picture
Oct 10 โ€ข 3 tweets โ€ข 2 min read Twitter logo Read on Twitter
๐—™๐—ฎ๐—ฐ๐—ฒ๐—ฏ๐—ผ๐—ผ๐—ธ ๐—ฐ๐—ฟ๐—ฒ๐—ฎ๐˜๐—ฒ๐—ฑ ๐—ฎ ๐˜๐—ผ๐—ผ๐—น ๐˜„๐—ต๐—ถ๐—ฐ๐—ต ๐—ฑ๐—ฒ๐˜๐—ฒ๐—ฐ๐˜ ๐—ฎ๐—ป๐—ฑ ๐—ฟ๐—ฒ๐—ฝ๐—ฎ๐—ถ๐—ฟ ๐—ฏ๐˜‚๐—ด๐˜€ ๐—ฎ๐˜‚๐˜๐—ผ๐—บ๐—ฎ๐˜๐—ถ๐—ฐ๐—ฎ๐—น๐—น๐˜†

The recent document by engineers from Facebook explains how they wrote a tool that can automatically fix bugs. In the paper, they introduced ๐—ฆ๐—”๐—ฃ๐—™๐—œ๐—ซ, an automated tool designed to detect and repair bugs in software. The tool has suggested fixes for six essential Android apps in the Facebook App Family: Facebook, Messenger, Instagram, FBLite, Workplace, and Workchat.

How Does It Work?

๐—ฆ๐˜๐—ฒ๐—ฝ ๐Ÿญ: Detect a Crash - Another tool, ๐—ฆ๐—ฎ๐—ฝ๐—ถ๐—ฒ๐—ป๐˜‡, finds app crashes. When Sapienz identifies a crash, it is logged into a database.

๐—ฆ๐˜๐—ฒ๐—ฝ ๐Ÿฎ: Identify the Problem - SAPFIX pinpoints the exact line of code causing the issue. It first checks if the crash is reproducible. If it's not reproducible, the crash is discarded. It uses a technique called "spectrum-based fault localization" to identify the most likely lines of code responsible for the crash.

๐—ฆ๐˜๐—ฒ๐—ฝ ๐Ÿฏ: Suggest a Fix - Using predefined templates or code mutations, SAPFIX proposes a solution. After identifying the fault location, SAPFIX attempts to generate a patch. It employs two strategies:

๐Ÿ”น ๐—ง๐—ฒ๐—บ๐—ฝ๐—น๐—ฎ๐˜๐—ฒ-๐—ฏ๐—ฎ๐˜€๐—ฒ๐—ฑ ๐—™๐—ถ๐˜…๐—ถ๐—ป๐—ด: SAPFIX uses predefined templates to suggest fixes for common bugs. These templates are designed based on standard developer practices.

๐Ÿ”น ๐— ๐˜‚๐˜๐—ฎ๐˜๐—ถ๐—ผ๐—ป-๐—ฏ๐—ฎ๐˜€๐—ฒ๐—ฑ ๐—™๐—ถ๐˜…๐—ถ๐—ป๐—ด: SAPFIX resorts to a mutation-based system if the template-based approach fails. It systematically applies a series of code mutations to the fault location to generate potential fixes.

๐—ฆ๐˜๐—ฒ๐—ฝ ๐Ÿฐ: Test the Fix - The proposed solution is tested to ensure it's valid. It uses the test cases from ๐—ฆ๐—ฎ๐—ฝ๐—ถ๐—ฒ๐—ป๐˜‡ to check the validity of the patch. If the patch passes all tests, it's considered a good fix. After patch validation, SAPFIX uses ๐—œ๐—ป๐—ณ๐—ฒ๐—ฟย (a static analysis tool) to analyze the proposed fix further. Infer checks if the patch introduces any new potential issues.

๐—ฆ๐˜๐—ฒ๐—ฝ ๐Ÿฑ: Review - Developers get the final say, reviewing and approving the fix.

Check the entire document in the comments.

Image credits: Facebook.

What do you think about this?

_______
If you like my posts, please follow me, @milan_milanovic, and hit the ๐Ÿ”” on my profile to get a notification for all my new posts.

Grow with me ๐Ÿš€!

#technology #softwareengineering #programming #techworldwithmilan #coding
Image
If you want to expand your knowledge and personal growth, subscribe to my free weekly newsletter with 16,000+ people: .newsletter.techworld-with-milan.com

โ€ข โ€ข โ€ข

Missing some Tweet in this thread? You can try to force a refresh
ใ€€

Keep Current with Dr. Milan Milanoviฤ‡

Dr. Milan Milanoviฤ‡ Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @milan_milanovic

Jul 10
๐—ฆ๐—ผ๐—ณ๐˜๐˜„๐—ฎ๐—ฟ๐—ฒ ๐——๐—ฒ๐˜ƒ๐—ฒ๐—น๐—ผ๐—ฝ๐—บ๐—ฒ๐—ป๐˜ ๐—”๐—ป๐˜๐—ถ-๐—ฃ๐—ฎ๐˜๐˜๐—ฒ๐—ฟ๐—ป๐˜€

We are all familiar with GoF Design Patterns which represent a general reusable solution to some occurring problems in software design. They are templates for how to solve a problem that can be used many times,โ€ฆ https://t.co/BlBIOrYiQrtwitter.com/i/web/status/1โ€ฆ
If you want to learn more about software development, subscribe to my newsletter: newsletter.techworld-with-milan.com
Read 4 tweets
Jun 29
๐—›๐—ผ๐˜„ ๐—ง๐—ผ ๐——๐—ผ ๐—” ๐—š๐—ฟ๐—ฒ๐—ฎ๐˜ ๐—ฆ๐—ผ๐—ณ๐˜๐˜„๐—ฎ๐—ฟ๐—ฒ ๐——๐—ฒ๐˜€๐—ถ๐—ด๐—ป

In his latest talk at Clojure Conj 2023., Rick Hickey, a creator of Clojure, talked about some great techniques to create a great software design in practice.

Here are the most important ones:

๐Ÿญ. ๐—”๐—ฑ๐—ฑ ๐—ฎโ€ฆ https://t.co/4q7K1hjz3Ktwitter.com/i/web/status/1โ€ฆ
Decision matrix
Story
Read 6 tweets
Mar 18
๐—›๐—ผ๐˜„ ๐˜๐—ผ ๐—™๐—ถ๐—ป๐—ถ๐˜€๐—ต ๐— ๐—ผ๐—ฟ๐—ฒ ๐—ช๐—ผ๐—ฟ๐—ธ ๐—ง๐—ต๐—ฎ๐—ป ๐Ÿต๐Ÿฌ% ๐—ผ๐—ณ ๐—ฃ๐—ฒ๐—ผ๐—ฝ๐—น๐—ฒ

We all struggle with the things we should do next and what to prioritize. Here comes the ๐—š๐—ฒ๐˜๐˜๐—ถ๐—ป๐—ด ๐—ง๐—ต๐—ถ๐—ป๐—ด๐˜€ ๐——๐—ผ๐—ป๐—ฒ (๐—š๐—ง๐——) ๐—ณ๐—ฟ๐—ฎ๐—บ๐—ฒ๐˜„๐—ผ๐—ฟ๐—ธ to help.

๐Ÿงต

Image: @ehamberg.

#productivity
It was developed by David Allen in the 1990s and the main idea behind GTD is that by getting all of your tasks and commitments out of your head and into a trusted system, you can reduce stress, increase productivity, and free up mental space to focus on more important things.
So, how it works is to have the following ๐—น๐—ถ๐˜€๐˜๐˜€:

๐Ÿญ. ๐—œ๐—ป. Here we put all ideas we have as they occur. Write down every task, or idea that comes to mind, no matter how small or insignificant. When you are adding items here, you should ask yourself if this is actionable.
Read 14 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us on Twitter!

:(