Published
May 31, 2024
Updated
May 31, 2024

Can AI Help You Write Cleaner Code? New Tool Automates Refactoring

EM-Assist: Safe Automated ExtractMethod Refactoring with LLMs
By
Dorin Pomian|Abhiram Bellur|Malinda Dilhara|Zarina Kurbatova|Egor Bogomolov|Andrey Sokolov|Timofey Bryksin|Danny Dig

Summary

Writing clean, maintainable code is a constant struggle for developers. Long, complex methods are a common culprit, making code hard to understand, debug, and modify. The solution? A refactoring technique called "Extract Method," which breaks down these unwieldy methods into smaller, more manageable chunks. While modern IDEs support this, knowing *what* to extract is the tricky part. Existing tools often miss the mark, proposing refactorings that don't align with real-world developer practices. But what if AI could lend a hand? Researchers have developed EM-Assist, a new IntelliJ IDEA plugin that uses Large Language Models (LLMs) to suggest intelligent Extract Method refactorings. EM-Assist analyzes your code, proposes refactorings that mirror how human developers think, and then uses the IDE's power to safely apply the changes. Unlike previous tools that rely on rigid rules, EM-Assist learns from massive codebases, generating suggestions that are more likely to be accepted by developers. In tests replicating real-world refactorings, EM-Assist significantly outperformed existing tools, boasting a 53.4% recall rate compared to 39.4% for the previous best. A survey of professional developers also confirmed its usability, with a 94.4% positive rating. This points to a future where AI seamlessly integrates into our coding workflows, helping us write cleaner, more efficient code. While challenges remain, such as handling proprietary code and improving response times, EM-Assist represents a significant step towards AI-assisted refactoring. As LLMs continue to evolve, we can expect even more sophisticated tools that empower developers to write better code with less effort.
🍰 Interesting in building your own agents?
PromptLayer provides the tools to manage and monitor prompts with your whole team. Get started for free.

Question & Answers

How does EM-Assist's Extract Method refactoring process work technically?
EM-Assist uses Large Language Models to analyze code and suggest intelligent method extractions within IntelliJ IDEA. The process involves analyzing existing code structure, identifying potential extraction points based on patterns learned from massive codebases, and then leveraging the IDE's built-in refactoring capabilities to safely apply changes. Unlike traditional rule-based approaches, EM-Assist's LLM-powered system achieves a 53.4% recall rate by learning from real developer practices. For example, when faced with a 100-line method handling user authentication, EM-Assist might suggest extracting the validation logic into a separate method, matching how experienced developers would naturally organize the code.
What are the main benefits of using AI-assisted code refactoring tools in software development?
AI-assisted code refactoring tools help developers maintain cleaner, more maintainable codebases with less manual effort. These tools can automatically identify complex or problematic code sections and suggest improvements that align with best practices. The main benefits include increased productivity, more consistent code quality, and reduced technical debt. For example, developers can quickly break down large, complex methods into smaller, more manageable pieces without spending hours manually analyzing the code. This technology is particularly valuable for large development teams working on extensive codebases where maintaining code quality is crucial.
How is artificial intelligence changing the way we write and maintain software?
Artificial intelligence is revolutionizing software development by automating routine tasks and providing intelligent assistance during coding. It helps developers write cleaner code, catch potential bugs earlier, and maintain consistent coding standards across projects. Modern AI tools can analyze code patterns, suggest improvements, and even generate code snippets based on context. This technological advancement is particularly beneficial for both individual developers and large teams, as it reduces the time spent on repetitive tasks and allows more focus on creative problem-solving. The integration of AI into development workflows represents a significant shift toward more efficient and higher-quality software production.

PromptLayer Features

  1. Testing & Evaluation
  2. EM-Assist's performance validation through real-world refactoring tests and developer surveys aligns with PromptLayer's testing capabilities
Implementation Details
Set up batch tests comparing LLM-suggested refactorings against known good examples, implement regression testing to ensure quality across model versions, establish metrics for recall rate tracking
Key Benefits
• Quantifiable performance tracking of refactoring suggestions • Systematic validation against real developer preferences • Early detection of degraded model performance
Potential Improvements
• Integrate automated code quality metrics • Add developer feedback collection pipeline • Implement cross-project consistency checks
Business Value
Efficiency Gains
Reduce time spent manually validating refactoring suggestions
Cost Savings
Minimize technical debt from poor refactoring decisions
Quality Improvement
Ensure consistent code quality across teams
  1. Workflow Management
  2. EM-Assist's integration with IDE workflows for code analysis and refactoring application maps to PromptLayer's workflow orchestration capabilities
Implementation Details
Create reusable templates for code analysis prompts, establish version tracking for different refactoring strategies, integrate with IDE APIs
Key Benefits
• Standardized refactoring workflows across teams • Traceable history of refactoring decisions • Seamless integration with existing development tools
Potential Improvements
• Add custom workflow triggers based on code complexity • Implement team-specific refactoring templates • Create automated documentation generation
Business Value
Efficiency Gains
Streamline code maintenance processes
Cost Savings
Reduce time spent on manual code restructuring
Quality Improvement
More consistent and maintainable codebase

The first platform built for prompt engineering