Tip A list of AI powered tools for C# Developers. What do you think?

Edwin Klesman

Member
Joined
Mar 7, 2023
Messages
9
Programming Experience
10+
Hi all,

Since ChatGPT kicked everyone into an AI era of asorts, I thought it would be fun to sum out some tools that are around to either:
- make a developer more productive by speeding up repetitive tasks
- act as a second pair of eyes
- helps us by logically append our minds objectively

Don't worry, it will still take quite some time before an AI can replace our crafsmanship. In the meanwhile, I'd love to show you some AI tools that are around, and get your feedback on this trend, if you're using any of these tools, and if you think of this as useful additions or not.

Without further ado, here is my list.

AI Powered Developer Tools
  • IntelliCode: Developed by Microsoft, IntelliCode is an AI-powered extension for Visual Studio that provides intelligent code completion suggestions. IntelliCode provides AI-assisted code completion suggestions, which can help C# developers write code faster and with fewer errors. It can also detect code smells and suggest refactoring options, making it a valuable tool for code maintenance.
    Pricing: It is available for free in the Visual Studio Marketplace
    Where to find it: here's the link to the marketplace page

  • DeepCode:
    DeepCode uses AI to analyze C# code and identify potential bugs and vulnerabilities. It can also suggest code improvements and highlight areas of the code that could benefit from refactoring.
    Pricing: It offers a free plan as well as paid plans with additional features. More information can be found on the official website.
    Where to find it: DeepCode: Semantic static code analysis for better software - powered by AI

  • Codota:
    Developed by Codota Inc., Codota is an AI-powered autocomplete tool that suggests code snippets based on the context of your code. It can help C# developers write code faster and with fewer errors by offering suggestions based on similar code found in millions of repositories.More information can be found on the official website.
    Pricing: It offers a free plan as well as paid plans with additional features.
    Where to find it: AI Assistant for software developers | Tabnine

  • TabNine:
    While this used to be a separate company, TabNine was acquired by Codota back in 2020. TabNine has similar features to Codota, but one recently announced cool feature that this tool has is generating unit tests using AI, which can really help to create some basic testing stuff for your application.
    Pricing: It offers a free plan as well as paid plans with additional features.
    Where to find it: AI Assistant for software developers | Tabnine

  • CodeRush:
    Developed by DevExpress, CodeRush is a productivity plugin for Visual Studio that uses AI to help you write code faster. It provides a variety of AI-assisted coding tools, including code generation, intelligent navigation, and refactorings. It can help C# developers write code faster and with fewer errors, as well as maintain existing code more easily.
    Pricing: It offers a 30-day free trial and a variety of pricing options for both individuals and teams.
    Where to find it: CodeRush: Free IDE Productivity Extension for Visual Studio | DevExpress

  • GitHub Copilot:
    Developed by GitHub and OpenAI, GitHub Copilot is an AI-powered code completion tool that uses GPT (Generative Pre-trained Transformer) to suggest code snippets based on the context of the code. It can be integrated into Visual Studio Code and other popular code editors, and can help C# developers write code faster and with fewer errors. GitHub Copilot is available as a technical preview.
    Pricing: it's still in preview and free.
    Where to find it: Generic info > GitHub Copilot · Your AI pair programmer, Visual Studio plugin > link to the marketplace page

    >>disclaimer: the author created the following product <<

  • LINQ Me Up:
    With OpenAI's release, a lot of tools are being created to harnass the power of AI. LINQ Me Up helps developers save time by converting SQL into LINQ code. This is useful to learn LINQ or to migrate projects to use the advantages of LINQ (easier to debug, compile-time checks, etc.).
    Pricing: You get free credits at registration. There's the possibility to buy credits, or a $8 p/month subscription
    Where to find it: LINQ Me Up - Convert SQL queries into C# LINQ code using AI
What are your experiences / what is your stance on using AI tools?
I've personally only recently used Copilot for a couple of quick tests, and started to use intellicode. Furthermore, I've created LINQ Me Up to convert some stuff for a project.
My opinion is that tools like this are good to save time by not having to write things from scratch over and over, and it saves time compared to googling on nice ways to set up specific code parts. Although I still believe things are at a young stage, and reviewing, testing and common sense are still needed before pushing code into production.
But I do say this: any tool that can help you provide value towards others by letting you focus on value instead of syntax, is a good one.

Let me know what your take is on this, and what experience you've had (if any) with these tools.

My credo: Code Hard, Ship Harder
 
Looks like LINQ ME Up can't handle the following:
SQL:
with folder_tree (id, name, parent_id, level, path) as 
(
    select 
        id,
        name,
        parent_id,
        0,
        cast('/' + name + '/' as nvarchar(max))
    from folders 
    where parent_id is null and active = 1 -- the anchor query. 

    union all

    select 
        f.id,
        f.name,
        f.parent_id,
        ft.level + 1,
        ft.path + f. name + '/'
    from folders f
    join folder_tree ft
        on 1 = 1
    where f.parent_id = ft.id 
)

select * from folder_tree;

It just returned:
C#:
var query = from ft in folder_tree
            select ft;

var result = query.ToList();

It didn't actually write the LINQ code to match up with the CTE.
 
Looks like LINQ ME Up can't handle the following:
SQL:
with folder_tree (id, name, parent_id, level, path) as
(
    select
        id,
        name,
        parent_id,
        0,
        cast('/' + name + '/' as nvarchar(max))
    from folders
    where parent_id is null and active = 1 -- the anchor query.

    union all

    select
        f.id,
        f.name,
        f.parent_id,
        ft.level + 1,
        ft.path + f. name + '/'
    from folders f
    join folder_tree ft
        on 1 = 1
    where f.parent_id = ft.id
)

select * from folder_tree;

It just returned:
C#:
var query = from ft in folder_tree
            select ft;

var result = query.ToList();

It didn't actually write the LINQ code to match up with the CTE.

Thanks for this, I really appreciate you taking the time to test it out.

It appears to be focussing on the last statement solely, indeed. I'll train it to behave better.
 
Back
Top Bottom