Cleans up the generated code.
(
code: str,
language_type: str = None,
dataset: str = None,
)
| 149 | |
| 150 | |
| 151 | def cleanup_code( |
| 152 | code: str, |
| 153 | language_type: str = None, |
| 154 | dataset: str = None, |
| 155 | ): |
| 156 | """ |
| 157 | Cleans up the generated code. |
| 158 | """ |
| 159 | if language_type is None or dataset is None: |
| 160 | return code |
| 161 | |
| 162 | if "humaneval" in dataset.lower(): |
| 163 | if language_type.lower() == "python": |
| 164 | end_words = ["\ndef", "\nclass", "\nif", "\n#", "\nprint", "\nassert"] |
| 165 | for w in end_words: |
| 166 | if w in code: |
| 167 | code = code[:code.rfind(w)] |
| 168 | elif language_type.lower() == "java": |
| 169 | main_pos = code.find("public static void main") |
| 170 | if main_pos != -1: |
| 171 | code = code[:main_pos] + '}' |
| 172 | if '}' in code: |
| 173 | code = code[:code.rfind('}')] + '}' |
| 174 | if code.count('{') + 1 == code.count('}'): |
| 175 | code += "\n}" |
| 176 | elif language_type.lower() == "go": |
| 177 | end_words = ["\n//", "\nfunc main("] |
| 178 | for w in end_words: |
| 179 | if w in code: |
| 180 | code = code[:code.rfind(w)] |
| 181 | if '}' in code: |
| 182 | code = code[:code.rfind('}')] + '}' |
| 183 | elif language_type.lower() == "cpp": |
| 184 | if '}' in code: |
| 185 | code = code[:code.rfind('}')] + '}' |
| 186 | elif language_type.lower() == "js": |
| 187 | if '}' in code: |
| 188 | code = code[:code.rfind('}')] + '}' |
| 189 | |
| 190 | return code |
no outgoing calls
no test coverage detected