mirror of
https://github.com/qodo-ai/pr-agent.git
synced 2025-07-06 05:40:38 +08:00
s
This commit is contained in:
@ -1,5 +1,6 @@
|
|||||||
from abc import ABC, abstractmethod
|
from abc import ABC, abstractmethod
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
|
from pr_agent.algo.language_handler import language_extension_map
|
||||||
|
|
||||||
# enum EDIT_TYPE (ADDED, DELETED, MODIFIED, RENAMED)
|
# enum EDIT_TYPE (ADDED, DELETED, MODIFIED, RENAMED)
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
@ -173,26 +174,39 @@ def get_main_pr_language(languages, files) -> str:
|
|||||||
extension_list.append(file.filename.rsplit('.')[-1])
|
extension_list.append(file.filename.rsplit('.')[-1])
|
||||||
|
|
||||||
# get the most common extension
|
# get the most common extension
|
||||||
most_common_extension = max(set(extension_list), key=extension_list.count)
|
most_common_extension = '.' + max(set(extension_list), key=extension_list.count)
|
||||||
|
try:
|
||||||
# look for a match. TBD: add more languages, do this systematically
|
if top_language in language_extension_map and most_common_extension in language_extension_map[top_language]:
|
||||||
if most_common_extension == 'py' and top_language == 'python' or \
|
|
||||||
most_common_extension == 'js' and top_language == 'javascript' or \
|
|
||||||
most_common_extension == 'ts' and top_language == 'typescript' or \
|
|
||||||
most_common_extension == 'go' and top_language == 'go' or \
|
|
||||||
most_common_extension == 'java' and top_language == 'java' or \
|
|
||||||
most_common_extension == 'c' and top_language == 'c' or \
|
|
||||||
most_common_extension == 'cpp' and top_language == 'c++' or \
|
|
||||||
most_common_extension == 'cs' and top_language == 'c#' or \
|
|
||||||
most_common_extension == 'swift' and top_language == 'swift' or \
|
|
||||||
most_common_extension == 'php' and top_language == 'php' or \
|
|
||||||
most_common_extension == 'rb' and top_language == 'ruby' or \
|
|
||||||
most_common_extension == 'rs' and top_language == 'rust' or \
|
|
||||||
most_common_extension == 'scala' and top_language == 'scala' or \
|
|
||||||
most_common_extension == 'kt' and top_language == 'kotlin' or \
|
|
||||||
most_common_extension == 'pl' and top_language == 'perl' or \
|
|
||||||
most_common_extension == top_language:
|
|
||||||
main_language_str = top_language
|
main_language_str = top_language
|
||||||
|
else:
|
||||||
|
for language, extensions in language_extension_map.items():
|
||||||
|
if most_common_extension in extensions:
|
||||||
|
main_language_str = language
|
||||||
|
break
|
||||||
|
except Exception as e:
|
||||||
|
get_logger().exception(f"Failed to get main language: {e}")
|
||||||
|
pass
|
||||||
|
|
||||||
|
## old approach:
|
||||||
|
# most_common_extension = max(set(extension_list), key=extension_list.count)
|
||||||
|
# if most_common_extension == 'py' and top_language == 'python' or \
|
||||||
|
# most_common_extension == 'js' and top_language == 'javascript' or \
|
||||||
|
# most_common_extension == 'ts' and top_language == 'typescript' or \
|
||||||
|
# most_common_extension == 'tsx' and top_language == 'typescript' or \
|
||||||
|
# most_common_extension == 'go' and top_language == 'go' or \
|
||||||
|
# most_common_extension == 'java' and top_language == 'java' or \
|
||||||
|
# most_common_extension == 'c' and top_language == 'c' or \
|
||||||
|
# most_common_extension == 'cpp' and top_language == 'c++' or \
|
||||||
|
# most_common_extension == 'cs' and top_language == 'c#' or \
|
||||||
|
# most_common_extension == 'swift' and top_language == 'swift' or \
|
||||||
|
# most_common_extension == 'php' and top_language == 'php' or \
|
||||||
|
# most_common_extension == 'rb' and top_language == 'ruby' or \
|
||||||
|
# most_common_extension == 'rs' and top_language == 'rust' or \
|
||||||
|
# most_common_extension == 'scala' and top_language == 'scala' or \
|
||||||
|
# most_common_extension == 'kt' and top_language == 'kotlin' or \
|
||||||
|
# most_common_extension == 'pl' and top_language == 'perl' or \
|
||||||
|
# most_common_extension == top_language:
|
||||||
|
# main_language_str = top_language
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
get_logger().exception(e)
|
get_logger().exception(e)
|
||||||
|
@ -103,7 +103,7 @@ Description: '{{description}}'
|
|||||||
|
|
||||||
{%- if language %}
|
{%- if language %}
|
||||||
|
|
||||||
Main language: {{language}}
|
Main PR language: '{{language}}'
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
|
|
||||||
|
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
system="""You are CodiumAI-PR-Reviewer, a language model designed to review git pull requests.
|
system="""You are CodiumAI-PR-Reviewer, a language model designed to review git pull requests.
|
||||||
Your task is to provide full description of a Pull Request (PR) content.
|
Your task is to provide full description of a Pull Request (PR) content.
|
||||||
- Make sure to focus on the new PR code (the '+' lines).
|
- Make sure to focus on the new PR code (the '+' lines).
|
||||||
- Notice that the 'Previous title', 'Previous description' and 'Commit messages' sections may be partial, simplistic, non-informative or not up-to-date. Hence, compare them to the PR diff code, and use them only as a reference.
|
- Keep in mind that the 'Previous title', 'Previous description' and 'Commit messages' sections may be partial, simplistic, non-informative or out of date. Hence, compare them to the PR diff code, and use them only as a reference.
|
||||||
- Emphasize first the most important changes, and then the less important ones.
|
- Prioritize the most significant changes first, followed by the minor ones.
|
||||||
- If needed, each YAML output should be in block scalar format ('|-')
|
- If needed, each YAML output should be in block scalar format ('|-')
|
||||||
{%- if extra_instructions %}
|
{%- if extra_instructions %}
|
||||||
|
|
||||||
@ -68,12 +68,15 @@ Answer should be a valid YAML, and nothing else. Each YAML output MUST be after
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
user="""PR Info:
|
user="""PR Info:
|
||||||
|
|
||||||
Previous title: '{{title}}'
|
Previous title: '{{title}}'
|
||||||
|
|
||||||
Previous description: '{{description}}'
|
Previous description: '{{description}}'
|
||||||
|
|
||||||
Branch: '{{branch}}'
|
Branch: '{{branch}}'
|
||||||
{%- if language %}
|
{%- if language %}
|
||||||
|
|
||||||
Main language: {{language}}
|
Main PR language: '{{ language }}'
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
{%- if commit_messages_str %}
|
{%- if commit_messages_str %}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user