JetBrains IDEs such as Rider or IntelliJ IDEA come with a set of inspections warning about potential code issues and recommendations about code style and organization.
Such inspections must be fully deterministic - you don’t want different members of a team to see different warnings and code style recommendations. However, they can often benefit from various heuristic limitations. For example, it’s usually more expressive to use new and more concise language features such as pattern matching or null-conditional access. However, combining multiple shiny new language features into a single expression might result in a smart, but hard to read and impossible to debug code. Maintaining the balance between readability, code style consolidation and correctness is a surprisingly difficult task, especially in quickly developing languages like C#.
In this project, the goal is to create a working internal tool that can analyse code modifications and come up with actionable improvement suggestions. The tool should try various inspections on multiple open source repositories, detect undesired results, weight and classify the reasons why an LLM thinks the change is undesired. Which particular language features won’t be easy to understand when used together? What is the minimum size of a code block that warrants consolidation when repeated? What kind of surrounding code might hint that a specific code block should be optimized for performance instead of readability or vice versa?
This is a research-oriented internal project - you might need to experiment with prompts, context collection for the request, classification techniques and potential follow-ups. The focus is on functionality and insights rather than production-level stability.”
Knowledge of C#, Java or Kotlin
Curiosity and interest in experimenting with LLMs