As a developer, do you spend countless hours deciphering a complex codebase? If yes, then Persistent’s WingMate is the much-needed code assistant that you need as it can understand and analyze deep-seated knowledge within a codebase, even if it contains thousands of code files. This revolutionary code assistant extracts the requisite context for any query about a codebase, helping you streamline your development tasks.
In this blog, we review how WingMate is ushering in a paradigm-shift in the software development life cycle and how you can leverage Persistent.AI to unlock your business values.
Challenges in Software Development
- Knowledge of code: Brownfield coding involves building upon an existing codebase, making it difficult to handle the different facets of software development. Developers struggle to grasp the intricate code details, including architecture and dependencies for smooth code integration.
- Lack of documentation: Inadequate and outdated documentation, along with missing comments in code, makes project understanding cumbersome. This impacts project collaboration and maintenance, exacerbated further by a lack of readily available expertise in legacy technologies.
- Code search and bug fixing: Searching for code and fixing bugs can be inefficient, as code search with “Ctrl+F” is slow. Searching solutions in online forums can be time-consuming and sometimes irrelevant.
- Knowledge gap and developer onboarding: New developers often struggle with complex projects due to inadequate documentation. As a result, they continuously rely on experienced developers, resulting in inefficient resource utilization.
Code Knowledge at Your Fingertips
WingMate enables you to chat with code using natural language queries from your IDE.
WingMate explains:
- High and low-level architectural components
- Behavior of function, class, module, object, etc.
- Project-level dependencies and their relationships
- File path and relative code location with examples for reference
WingMate retrieves deepseated answers through natural language queries such as:
- Which controller handles request for the endpoint /top-utility-list?
- Which React component is rendered for the route path=/utilities?
- Can you explain the behavior of the service class PaginationAndSorting?
Contextual Search over Literal Search
Let’s assume that you’re searching for a code that stores user-selected values from a search dropdown list. Typically, you would begin by conducting keyword search such as “dropdown,” “searchdropdown,” “selection,” “store” and then look for the requisite components. This process usually takes at least 10 minutes (Fig. 2). WingMate finds it in less than 60 seconds by considering the intent and relevance of parts of code based on the query through a ranking of relevant context (Fig. 3).
Generates Documentation
WingMate understands codebase even if documentation or comments are absent. It can generate up-to-date documentation, saving time on revision and maintenance, with queries such as:
- Can you provide high-level architecture for the project?
- How do I set up to run the project?
- Can you provide a list of tables in the database and explain their schema?
Going Beyond Code Search
The obtained context of dependencies such as parameters, datatypes, etc. can be fed to code migration skill for accurate migration and code generation:
- Which component is rendered after I click on a search result?
- What would be the impact of removing the getAddresses method from the AddressController class?
- Explain dependency of the module documenter on the /job endpoint?
WingMate also guides you through step-by-step procedures for building and running projects successfully and fixing bugs in the context of code dependencies:
- Where should I add an endpoint for sorting members in my codebase?
- Where in the repo can I add an additional endpoint for employee ESOPs?
- Guide me to resolve the given error <error_traceback>
WingMate offers developers a self-paced learning experience. They can ask multiple questions to clarify doubts, filling in the knowledge gaps and reducing time of training.
How WingMate understands your codebase?
WingMate leverages Generative AI (GenAI) in software development in the apsect of analyzing a codebase before generating responses. It garners this functionality through multiple layers of Persistent’s IP, synthesizing knowledge out of the codebase and storing it in a knowledge database through vectorization (Fig. 4).The process of Generating an answer to every query (with GenAI for code generation) involves retrieval of context to augment the query followed by retrieval to generate the response from the knowledge database. These retrievals are further contextualized for the query to produce the final response.
Future Roadmap
WingMate, by virtue of its ability to ingest all of an entire codebase’s knowledge, is a true 24×7 tireless code assistant. It effectively saves developers’ time and promotes confidence in project development. Also, it enables effective code analysis, contributing to a seamless training experience.
As we continue to evolve WingMate into a holistic chat companion, we’ll soon integrate WingMate with a robust understanding of code complexities (aka dependencies). This will make chat-with-code the context source bed for other WingMate skills such as code migration, test generation, and more.
The WingMate roadmap includes:
- Leveraging Knowledge Graph of a codebase for accurate context and in-depth knowledge of project–level dependencies. This enables better cognition of the context and signature of every code piece.
- Using the Knowledge Graph provided context, to comment upon vulnerabilities of a code piece for future changes or additions in other parts of project code.
If you are looking to optimize your coding efforts, contact us to learn how WingMate can propel your development efforts to new heights.