VOOZH about

URL: https://thenewstack.io/ai-and-ides-walking-through-how-jetbrains-is-approaching-ai/

⇱ AI and IDEs: Walking Through How JetBrains Is Approaching AI - The New Stack


TNS
SUBSCRIBE
Join our community of software engineering leaders and aspirational developers. Always stay in-the-know by getting the most important news and exclusive content delivered fresh to your inbox to learn more about at-scale software development.
REQUIRED
It seems that you've previously unsubscribed from our newsletter in the past. Click the button below to open the re-subscribe form in a new tab. When you're done, simply close that tab and continue with this form to complete your subscription.
The New Stack does not sell your information or share it with unaffiliated third parties. By continuing, you agree to our Terms of Use and Privacy Policy.
Welcome and thank you for joining The New Stack community!
Please answer a few simple questions to help us deliver the news and resources you are interested in.
REQUIRED
REQUIRED
REQUIRED
REQUIRED
REQUIRED
Great to meet you!
Tell us a bit about your job so we can cover the topics you find most relevant.
REQUIRED
REQUIRED
REQUIRED
REQUIRED
REQUIRED
Welcome!

We’re so glad you’re here. You can expect all the best TNS content to arrive Monday through Friday to keep you on top of the news and at the top of your game.

What’s next?

Check your inbox for a confirmation email where you can adjust your preferences and even join additional groups.

Follow TNS on your favorite social media networks.

Become a TNS follower on LinkedIn.

Check out the latest featured and trending stories while you wait for your first TNS newsletter.

PREV
1 of 2
NEXT
VOXPOP
As a JavaScript developer, what non-React tools do you use most often?
Angular
0%
Astro
0%
Svelte
0%
Vue.js
0%
Other
0%
I only use React
0%
I don't use JavaScript
0%
Thanks for your opinion! Subscribe below to get the final results, published exclusively in our TNS Update newsletter:
NEW! Try Stackie AI
From clobbered drafts to real-time sync
Apr 14th 2026 10:00am, by David Moore
TypeScript 6.0 RC arrives as a bridge to a faster future
Mar 14th 2026 9:00am, by Darryl K. Taft
Mastra empowers web devs to build AI agents in TypeScript
Jan 28th 2026 11:00am, by Loraine Lawson
2024-07-18 06:29:07
AI and IDEs: Walking Through How JetBrains Is Approaching AI
tutorial,
AI / Software Development

AI and IDEs: Walking Through How JetBrains Is Approaching AI

We test out JetBrains AI, a new multi-LLM AI assistant for its collection of integrated development environments (IDE).
Jul 18th, 2024 6:29am by David Eastman
👁 Featued image for: AI and IDEs: Walking Through How JetBrains Is Approaching AI
Image via Unsplash+. 
Editor’s note: our writer, David Eastman, was given free access to JetBrains AI by the company in order to test out its functionality.
Colleagues using Java have always rated IntelliJ, and more recently Rider for C#. So when I was given the opportunity to try JetBrains AI, which is an AI service that refers to itself as “AI Assistant,” I was intrigued. Apparently “It is powered by OpenAI and Google as the primary third-party providers”. I’m not sure trying to match different LLM abilities to certain tasks is a good idea when they are changing so regularly, but not depending on one vendor does make sense. Now when it comes to using LLMs, professional developers all have slightly varying needs — none of which is “write my code for me.” But the two modes that stand out are code completion and “explain this code,” which is useful for consultants facing an unfamiliar codebase. Generating unit tests is also potentially a fit, even though not taking responsibility for your own unit tests breaks the Agile canon somewhat. I don’t personally rate having examples within the IDE when I could just browse for them — but I know some people do. For instance, most developers have discovered that Time and Date functions can become quite unintuitive; sometimes complex systems can’t be made simpler. Examples of these are very useful. While this post is a review of the AI Assistant, this will be the first time I’ve had a JetBrains IDE on my Mac, so I have to go through the administration for the first time. I have a “license key” for their AI service, which I will try to graft onto the community edition or equivalent. Whereas ReSharper seems to sit on Visual Studio, Rider is a separate IDE — so I chose that, in order to look at C#. I was hoping the AI service would attach to it; this wasn’t made entirely clear. I ended up installing a trial version of Rider. Full marks for starting off by importing settings. 👁 Image
In the next section, my question is answered immediately. Hurrah. 👁 Image
This gives me a great deal more trust that customer paths have been considered. It might seem obvious to do this at the start, but I’ve seen enough products that don’t give their own services enough attention. JetBrains emailed me back to get an account once I registered, and I was given a free license for the purposes of testing. 👁 Image
It should be noted that LLM services are very much treated as an add-on, which makes “AI” feel like an add-on. I don’t think this is the fault of the IDE makers at the moment — eventually, this type of offering will exist a bit further back in the OS stack. Right now, we have to wait for the big companies to battle over LLM dominance, which pushes individual users into an explicit consumer position.

Code Explanations

I’ve opened some code from a game project, and we’ll ask for an explanation:
...
static private List<Archetype> archetypes = new List<Archetype>(); 
... 
public static List<Archetype> FetchArchetypes() { 
 if (!archetypes.Any()) { 
 ArchetypeTemplates tt = BackEnd.DataLoader<ArchetypeTemplates>.LoadGameData("Archetypes.json"); 
 foreach (ArchetypeTemplate t in tt.Archetypes) { 
 archetypes.Add(new Archetype(t)); 
 } 
 } 

 return archetypes; 
}
An Archetype is just an arbitrary structure from the game. Initially, I read this in as an array from a JSON file, and recreated the structure locally in the list. If the list has already been created, I just pass the list. So what does the AI think this is doing? It returns a very comprehensive answer, with these two highlights:
  • “At the end, the method returns the Archetypes List which contains Archetype instances created based on the templates from the JSON file. The Archetype class seems to represent a specific archetype in a game and this method is used to populate the list of all archetypes based on the data in the JSON file.”
  • ”In this particular method, it’s worth noting that data loading and object instantiation are only performed when the Archetypes List is empty. This means once the Archetypes have been fetched once, subsequent calls to this method will return the same List without any additional processing. This is a common pattern for instances where loading or object creation is a taxing process and the resulting data doesn’t change over the lifecycle of the application.”
So there are several good things here. It has worked out that the Archetype in question is probably for a game. That’s important — understanding the intention as well as the utility is important when quickly trying to grok code. It has recognized that I’ve used late instantiation, why I’ve used that, and that it is a bonafide pattern. It also understands that reading the JSON file is done elsewhere, but we depend on the input. I then asked for suggested refactoring, also directly from the context menu: 👁 Image
It suggested separating the loading action into a separate method, to simplify the code. I think almost every developer would agree to that improvement. It could have also have complained about the lack of error detection. If you want a simple contrast, doing coding creation with JSON persistence using Meta’s Llama 3 wasn’t entirely successful. Mind you, three months is an age in LLM progress.

Code Completion

Let’s try some code completion. I’ll try a similar example to that which I tried for Copilot using the C# FlagsAtribute. From that post: “The FlagsAttribute in C# is used when you want to efficiently store a flag set — that is, a set of boolean values manipulated with bitwise arithmetic.” Here is a simple example:
[Flags] public enum Pets 
{
 None = 0, 
 Dog = 1, 
 Cat = 2, 
 Bird = 4, 
 Rabbit = 8, 
 Other = 16 
}
As long as the flag values go up in binary powers, you can build up a binary flag set. Check that article for a bit more explanation. I deleted my actual code and asked the assistant to regenerate it with just the signature. I got the purple squiggle and it gave me the option to generate. First, the method to check whether a flag was in the current set. It gave this function body:
public bool CheckFullGameFlags(FullGameFlags flag) 
{ 
 return (InGameFullFlags & flag) != 0; 
}
Here is what I had originally:
public bool CheckGameFlag(FullGameFlags flag) => (InGameFullFlags.HasFlag(flag));
While it missed the existing C# method HasFlag, it correctly worked out that I wanted to compare the incoming flag with the set. It found the local set InGameFullFlags from the code above. I then gave it the complimentary signature for SetFullGameFlag. Again, there is enough in the naming conventions for a cue that I want to add the new flag: 👁 Image
I clicked on the squiggle again and used “Implement with AI” and it generated the code below. Again, it came with a full explanation.
void SetFullGameFlag(FullGameFlags flag) 
{ 
 InGameFullFlags = InGameFullFlags | flag; 
}
This is the same (bar the expression body token ⇒) as what I had:
public void SetGameFlag(FullGameFlags flag) => InGameFullFlags |= flag;
And finally the same for the ClearGameFlag. This just does the bitwise opposite of the set. Again it got this precisely correct. I would have been happy for the result to be written directly into the editor, or as a code completion, but by writing the assistance in the side panel it came with a good deal of explanation.

Conclusion

All in all I think the AI Assistant performed admirably; for many developers, AI may already be just an expectation for an IDE. Treating AI Assistant as a registration signup is still a minor nuisance, but that will change eventually. I got the whole IDE and AI Assistant up and running pretty quickly, and it ran appreciably quickly. To some degree, the “Hey! Look! We have AI” is a current business necessity for IDEs as the environment expands and while agreed expectations are still forming. By next year, much of this will exist as part of the IDE experience, just as Cut and Paste does today.
TRENDING STORIES
David has been a London-based professional software developer with Oracle Corp. and British Telecom, and a consultant helping teams work in a more agile fashion. He wrote a book on UI design and has been writing technical articles ever since....
Read more from David Eastman
SHARE THIS STORY
TRENDING STORIES
TNS owner Insight Partners is an investor in: OpenAI.
SHARE THIS STORY
TRENDING STORIES
TNS DAILY NEWSLETTER Receive a free roundup of the most recent TNS articles in your inbox each day.
The New Stack does not sell your information or share it with unaffiliated third parties. By continuing, you agree to our Terms of Use and Privacy Policy.