JENRES

Welcome to JENRES, the innovative AI-powered tool designed to support developers in the process of coding. Able to comment, document, and unit-test code in a human-like style, JENRES also 'listens' to actions in Git repositories, automatically undertaking the corresponding tasks.
By freeing developers from time-consuming and repetitive coding practices, JENRES empowers them to focus more on creativity and problem-solving, enhancing productivity and endowing code with robustness, efficiency and scalability.    
 

Thank you for your interest in JENRES! You are currently exploring a public Alpha version (v. 0.15.2). At this point, JENRES is still under development, and we opened it up for public testing to gather valuable feedback and insights that will shape its future. Try it and report issues here.

 

 

Why to use many, when you can you use one?

JENRES is a tech solution thoughtfully developed with a horizontal perspective. Recently, there has been a surge in products and solutions leveraging large language models (LLMs). These products often focus on specific aspects of software development like testing, documentation generation, and refactoring. JENRES' goal is a bit different. We aim to provide a unique tool that first and foremost 'listens' to developers' diverse needs and then tries to work on the tasks exploiting the ultimate generative AI technologies. As AI advances, JENRES will become increasingly proficient in performing a wide range of tasks.  

Get Started

What is JENRES?

JENRES is an AI-powered tool that leverages OpenAI's cutting-edge generative technologies, including Large Language Models, to automate several programming tasks. It can automatically generate code snippets, implement unit tests in Python and Java, and manage Git issues. Like interacting with a coworker, you can communicate tasks to JENRES in natural language; it reads, understands, and executes them, notifying you upon completion.  

Imagine working on a project with tight deadlines, where there is neither the time nor the resources to produce documentation or implement unit tests. With JENRES, you only need to assign one or more issues directly through the GitHub interface. JENRES will take care of these tasks for you.  



Sounds too good to be true? Keep reading to discover how you can test its capabilities for free. 
Why should developers want JENRES?

As a developer, you know that certain tasks, often perceived as challenging or mundane, are nevertheless essential to the software development process. Documentation, for instance, represents a crucial guide for developers and stakeholders. However, translating technical concepts into clear and concise language demands time and effort. Similarly, unit testing poses its own set of challenges. While its importance in ensuring code reliability is undeniable, setting up and maintaining unit tests requires attention and a thorough understanding of the code behaviour.    

With JENRES integrated into your coding workflow, you no longer need to juggle these tasks with your coding responsibilities. Keep developing new functionalities, refining existing ones, JENRES will do the 'dirty work' for you.  

Why should managers want JENRES?

As a manager, delivering outstanding products within tight deadlines is crucial. Achieving quality goes beyond developing new features: it involves several practices, including configuring setup files, testing, writing documentation, and code refactoring. However, accomplishing swiftly these tasks can be challenging. Developers spend approximately 35% of their time maintaining, testing, and securing existing code, compared to the 32% paid on writing or enhancing code. With the rapid advancement of technology, there is a significant opportunity for organizations to find new ways to value developers' time more effectively. JENRES is at the forefront of facilitating this improvement.    

By equipping the team with JENRES, you can assist them in building robust and resilient software systems. This way, you can mitigate risks, achieve successful project outcomes and deliver high-quality software solutions that meet or exceed client expectations. 

Onboarding Process   

To start utilizing JENRES, follow the onboarding process through CLI, as provided below. This is a secure and verified procedure to ensure that
JENRES operates under the highest security and efficiency standards, making it a valuable tool for developers and organizations.
 
Requirements and Restrictions
JENRES is available for free to maintainers of open-source projects hosted on GitHub. For more advanced uses of the tool, please contact us.  

To use JENRES, an OpenAI API key is required. Currently, JENRES supports only OpenAI's GPT-4. JENRES’ users are responsible for their own GPT-4 API costs, which will be billed directly to their OpenAI account. Users can monitor the costs of each API call by reviewing the pull request  message associated with the specific task. 

Please note: If you have doubts about entering your OpenAI key, contact us.
 
Follow the below guide to get started with JENRES on your GitHub repository.
 
Install the JENRES APP
1. Create a public GitHub Repository.  
2. Visit here and click on 'Configure'. Follow the interface instructions to install the app on your repository. Remember, the repository must be public to use JENRES for free.  
Declare the ownership of the repository
3. Download from here the jenres-cli.sh file and place it in the working copy of your GitHub repository.
4. Run the command ./jenres-cli.sh generate-keys from CLI. This command generates a pair of private and public keys used to sign secrets.   
5. Commit the public key and push it on the main branch. Once you have done so, you can see the folder '.jenres' on the main branch of your git repository with the pub.key file inside.   
Register your OpenAI API key on Jenres

6. Run ./jenres-cli.sh register-secrets and enter your OPENAI API KEY enabled for GPT4.  

Note: the use of GPT-4 will be charged to the user. JENRES will utilize your API key exclusively for accessing GPT-4 services on your repository. 

Register your Sonar Cloud Token on Jenres [Optional]

JENRES supports SonarCloud, a cloud-based code analysis service engineered to identify coding issues across 26 diverse programming languages. SonarCloud ensures a complete analysis loop, facilitating the delivery of code that adheres to rigorous quality standards. To integrate SonarCloud, follow SonarCloud Installation on this page.

7. Once you have correctly configured SonarCloud, enter your SonarCloud token. 

 

JENRES is now ready to be used
SonarCloud Installation
To use SonarCloud with JENRES:
1. Visit here and click on ‘Configure’. The procedure for installing the SonarCloud App is the same as that for installing the JENRES App. Select your repositories and save your choice.  
2. In the SonarCloud interface, choose 'Analyze new project' and provide the name of the project you want to be analyzed. Choose the settings which best suit your needs and click on 'Create New Project.'   

3. Click on 'Information' to retrieve the 'project-key'. Place it in the housekeeping.yaml file to enable JENRES' Housekeeping function. 
4. To fully leverage JENRES' capabilities with SonarCloud, configure SonarCloud tokens as a repository secret. This integration enables JENRES to address specific SonarCloud rules automatically. Generate SonarCloud Token, accessing from logo->My Account->Security->Generate Token. 
Two Main Features, multiple Potential
At the moment, JENRES supports two main functionalities: the Listener function and the Housekeeper function.
Issue Handling
The Issue Handling feature is designed to 'listen' to and execute any single issue created by mentioning @jenres in the body of the issue. JENRES communicates with users using emojis to represent different stages of task execution. 

'👀' indicates that JENRES has acknowledged your request and is now processing it.  
'👍' signifies that JENRES successfully executed the task. You can review the newly created pull request to see the changes.  
'👎' means 'Oops, something went wrong.' Please check the message in the pull request to understand what occurred. 
 
Housekeeping
The Housekeeping feature enables the scheduling of a set duties that JENRES periodically carries out.  
The feature automates routine code maintenance tasks, including code refactoring, cleaning, logging, and addressing code rule violations.
  
There are two primary modalities to formalize the housekeeping duties: 
  • Prompt: Set up a 'prompt' type duty in the configuration file.  
  • Rule Violation Codes: Set up duties that act when specific coding rules are violated. To achieve this, JENRES cooperates with SonarCloud (refer to the installation and setup documentation). 
Advantages of Integrating SonarCloud with JENRES  

With SonarCloud, the code undergoes a thorough examination against a comprehensive set of rules. These rules cover various aspects of code quality, including maintainability, reliability, and security concerns. JENRES can be configured to monitor and address a specific set of coding rules.  

  To configure the Housekeeping feature, create a YAML file named housekeeping.yml in the JENRES folder of your GitHub repository.  

 

Configure the file according to the following schema:  

duties --> [system keywords]  
 

Housekeeping via Prompt  

name --> The name you assign to your duty.  

cron --> [System keyword], time scheduling settings: Specify when you want JENRES to perform the duty. (Learn more about cron expressions).  

prompt --> [System keyword], the task details: Describe what you want JENRES to do.  
 

Housekeeping via Rules  

name --> The name you assign to your duty.  

cron --> [System keyword], time scheduling settings: Specify when you want JENRES to perform the duty.  

sonar_project_key --> [System keyword], your project's key identifiers.  

sonar_rules --> [System keyword], a set of rule codes that you want JENRES to monitor and solve if violated.  

Below is an example of how the final housekeeping.yml file might look.

 


Note: You can inform JENRES about the file path to be reviewed or use the {file_path} keyword for JENRES to review every file in the repository. You can create as many duties as desired and specify a different path for each. Ensure that all tasks are placed in the single housekeeping.yaml file.   
End of the execution

JENRES will open a pull/request at the end of each elaboration phase. Users can review the work done and decide whether to merge the JENRES' branch with the main branch. JENRES' branches have a specific naming convention to distinguish them from user-created branches: 

  • jenres/issue-number for the issue-handling function 

  • jenres/hk/name_of_the_duty for the housekeeping function. 

Benefits of use JENRES

 

Using JENRES to automate some coding practices brings several benefits to the development process, contributing to more efficient, reliable, and streamlined software production. Some of the key advantages are:  

  1. Increased Efficiency: JENRES can perform repetitive tasks much faster than humans, freeing developers to focus on more complex problems requiring creative thinking. This can significantly speed up the development cycle.  
  2. Improved Accuracy: Automated tools such as JENRES are less prone to errors in repetitive tasks, leading to higher accuracy in the code. Hence, JENRES reduces the number of bugs and errors that need to be fixed during the testing phases. With the continuous advancements in AI and the integration of solid functions, JENRES will progressively excel at executing tasks in compliance with quality standards. 
  3. Consistency: JENRES ensures that coding standards and practices are consistently applied throughout the project. This uniformity makes reading, maintaining, and scaling the codebase easier.  
  4. Enhanced Quality: Leaving JENRES handling routine aspects of coding, developers can allocate more time to design, architecture, and testing, improving the overall quality of the software.  
  5. Cost Reduction: By speeding up the development process and reducing the number of errors, JENRES can significantly lower the cost associated with manual coding and debugging.  
  6. Continuous Integration and Delivery: JENRES facilitates continuous integration (CI) and continuous delivery (CD), enabling teams to integrate code changes more frequently and release stable builds faster.  
  7. Scalability: JENRES can easily scale with the project as it grows, supporting larger codebases and more complex systems without a proportional increase in effort or team size.  
  8. Risk Reduction: Automated testing and deployment reduce the risk of human error in critical processes, leading to more stable releases.  
  9. Knowledge Sharing and Collaboration: JENRES comes with best practices embedded in its processes, helping to disseminate knowledge across the team and fostering collaboration.