  We developed a plugin for IntelliJ IDEA called AntiCopyPaster, which tracks
the pasting of code fragments inside the IDE and suggests the appropriate
Extract Method refactoring to combat the propagation of duplicates. Unlike the
existing approaches, our tool is integrated with the developer's workflow, and
pro-actively recommends refactorings. Since not all code fragments need to be
extracted, we develop a classification model to make this decision. When a
developer copies and pastes a code fragment, the plugin searches for duplicates
in the currently opened file, waits for a short period of time to allow the
developer to edit the code, and finally inferences the refactoring decision
based on a number of features.
  Our experimental study on a large dataset of 18,942 code fragments mined from
13 Apache projects shows that AntiCopyPaster correctly recommends Extract
Method refactorings with an F-score of 0.82. Furthermore, our survey of 59
developers reflects their satisfaction with the developed plugin's operation.
The plugin and its source code are publicly available on GitHub at
https://github.com/JetBrains-Research/anti-copy-paster. The demonstration video
can be found on YouTube: https://youtu.be/_wwHg-qFjJY.
