GitHub Copilot with .Net
Published: 2024-01-22 09:31:20

## _Abstract_

Today’s world is getting all the forces from technology front, especially AI can be called as nuclear weapon in IT industry. AI is giving different perspective to Software and IT industry thus transforming the whole world. AI has entered almost all domains like Automotive, Banking, Accounting, Transport etc. Moreover, Generative AI is taking buzz these days, because of its simplicity for end user to use e.g image generation, video generation, Chat GPT and mostly focused topic of this article is “Code Generation”.
The term “Pair Programming” in software industry is very well known, where 2 developers work together to generate the working software. Imagine about only one developer doing the pair programming. This statement looks contradicting, but GitHub Copilot has made it possible. This Copilot has ability to generate the code from your comments in code, can explain you a code written by someone ages ago, has ability to stop developer to google each time for some language extension usage and seamlessly use IDE for all his work.
This white paper explores the integration of GitHub Copilot with .NET, a versatile and widely adopted framework for building applications. By combining the power of GitHub Copilot with the robustness of .NET, developers can enhance their productivity, streamline code creation, and foster collaboration within development teams.

## **_Introduction_**

Every software industry’s one of the growth factors is their engineer’s efficiency, consistency in writing code, unit testing and automation to make full-fledged product. The primary use case of of GitHub copilot is to provide facility to developer to code from plain English comments, auto completion, generate unit test cases.
GitHub Copilot is an AI-powered code completion tool developed by GitHub in collaboration with OpenAI. It uses machine learning models to analyze code patterns and generate context-aware code snippets, making it a valuable asset for developers seeking to boost their coding efficiency.
.NET is a free, open-source, cross-platform framework developed by Microsoft. It supports the development of a wide range of applications, including web, mobile, desktop, cloud, gaming, and IoT applications. With its rich set of libraries, language interoperability, and scalability, .NET is a preferred choice for many developers.














	

## 
**_Github Copilot Overview_**

Github copilot works as an extension of Visual Studio, can be integrated seamlessly into the Visual Studio IDE. This extension is supported on Visual Studio Code, Visual Studio, Vim, Neovim, the JetBrains suite of IDEs, and Azure Data Studio.
This works well with programming languages Python, JavaScript, TypeScript, Ruby, Go, C# and C++. Copilot suggests entire lines or blocks of code based on the context of the code being written, greatly accelerating the coding process.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zniu87y80vhnlc0c07ii.jpg)





 




## **_Integrating GitHub Copilot with .NET (Visual Studio):_**

For integrating the copilot with visual studio, pre-requisite is VS2022 Ver 17.4.4, and Copilot subscription.
Just a simple step to install is Manage Extension and then search for “Github Copilot”. This is ready and you are ready to go.
















**_Code Snippets_**

**Use Case #1:** Autocompletion and code generation from plain text developer prompt.

In the below code snippet, the only lines written by developer is line # 23 & 30 rest of the code is generated and suggested by copilot.
Developer just needs to press the Tab to accept the suggested code.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5iyg53jltb5d8h8hyv5y.png)


**Use Case #2:** Unit test cases.

For any enterprise project the Unit Test cases stands important for developer. This task is made simpler using Copilot, developer just has to comment to write a unit test case, unit test case will be written by copilot. Below is the snippet that shows unit test cases written for the controller functionality written above example.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i3yv4mkmieis4sdh6rfp.png)



 













Unit test case for negative scenario: 

Copilot writes negative test cases as well for your code.  Below code exception path is also covered for Division function.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m0uj5n1wotpurt77dk1x.png)



 


**Use Case #3:** Automation Testing

GitHub Copilot can also be integrated with VS git in which testing team can write their automations scripts.
1.	Functional Test scenarios.
2.	Functional test cases.
3.	API automation testing.
4.	UI automation – Here URL of website can be given. 

This saves lot of time of tester in writing test scenarios and test scripts.















## Benefits of GitHub Copilot with .NET:

1.	Increased Productivity: GitHub Copilot accelerates the coding process by suggesting code snippets, reducing the need for developers to write repetitive or boilerplate code.
Also, helps in writing unit test cases thus reducing time of developer.
2.	Enhanced Code Quality: Copilot's suggestions are context-aware, promoting adherence to best practices and coding standards. This can lead to more maintainable and readable code.
3.	Accelerated Learning: Copilot provides real-time examples and suggestions, helping developers learn new concepts and coding patterns.
4.	Team Collaboration: Copilot aids collaboration by generating consistent code, reducing the chances of errors caused by manual coding discrepancies.
5.	Pair Programming: Copilot acts as other programmer so no need of 2 resources for pair programming.
6.	Cross Skilling : Developers can be cross skilled on any other language easily with help of copilot.


## Statistics:
1.	Approximately 60–75% of users stated that utilizing GitHub Copilot allows them to focus on more fulfilling work, feel less frustrated when coding, and feel happier in their employment.
2.	According to developers, GitHub Copilot assisted them in maintaining focus throughout repetitive operations (87%) and staying in the zone (73%).



## Challenges and Considerations:
1.	Code Review: While Copilot can generate code efficiently, it is essential to review suggestions critically. Developers must ensure that the generated code aligns with project requirements and coding standards.
2.	Context Understanding: Copilot's effectiveness depends on its understanding of the developer's intent. Developers should be clear in their comments and documentation to receive accurate suggestions.







## Privacy Concerns:

Now working with this Copilot might concern the code security of code that we are writing for client. But that has been taken care, other than generating a proposal, GitHub Copilot for Business does not access the source code in your editor. The prompts used in this process are securely sent to the model. Your prompts are not saved after a proposal is generated. Various context-based prompts, such as file content in the file you are editing and nearby or related files within a project, can be used to generate a suggestion.
Only user engagement data like your interactions with the IDE, actions like accepting or dismissing suggestions, as well as general usage data and error information is currently stored for 24 months.


## Future Developments:
As GitHub Copilot continues to evolve, we can expect further improvements and enhancements to its integration with .NET development. Developers can look forward to more refined code suggestions, increased language support, and better contextual understanding.
GitHub Copilot can be integrated with pull request reviews as well.
Also whatever design patterns are there will be implemented by copilot.

## Conclusion:
The integration of GitHub Copilot with .NET presents a powerful synergy that can significantly impact the efficiency and quality of software development. By harnessing the capabilities of these technologies, developers can streamline their workflow, reduce coding time, and produce high-quality applications. Embracing GitHub Copilot in the .NET ecosystem is a step toward a more collaborative, productive, and innovative future in software development.


## References:
1.	https://resources.github.com/copilot-for-business/
2.	https://github.com/features/copilot
3.	https://visualstudio.microsoft.com/github-copilot/