def _maybe_add_arc_fix(self, lintline, bad_line): """Optionally add a patch for arc lint to use for autofixing.""" if not self._propose_arc_fixes: return lintline errcode = lintline.split(' ')[1] # expected 2 blank lines, found 1 if errcode == 'E302': return lint_util.add_arc_fix_str(lintline, bad_line, '', '\n') # at least two spaces before inline comment if errcode == 'E261': return lint_util.add_arc_fix_str(lintline, bad_line, '', ' ') return lintline
def _maybe_add_arc_fix(self, lintline, bad_line): """Optionally add a patch for arc lint to use for autofixing.""" if not self._propose_arc_fixes: return lintline if 'imported but unused' in lintline: return lint_util.add_arc_fix_str(lintline, bad_line, bad_line + '\n', '') return lintline
def _maybe_add_arc_fix(self, lintline, bad_line): """Optionally add a patch for arc lint to use for autofixing.""" if not self._propose_arc_fixes: return lintline (file_line_col, errcode, msg) = lintline.split(' ', 2) if errcode == 'Esemi': return lint_util.add_arc_fix_str(lintline, bad_line, '', ';') if errcode == 'Eno-extra-semi': return lint_util.add_arc_fix_str(lintline, bad_line, ';', '') if errcode == 'Ecomma-dangle': return lint_util.add_arc_fix_str(lintline, bad_line, '', ',') if errcode == 'Ecomma-spacing': return lint_util.add_arc_fix_str(lintline, bad_line, ',', ', ') if errcode == 'Espace-before-function-paren': return lint_util.add_arc_fix_str(lintline, bad_line, ' ', '') if errcode == 'Eprefer-const': return lint_util.add_arc_fix_str(lintline, bad_line, 'let', 'const', search_backwards=True) if errcode == 'Ereact/jsx-closing-bracket-location': try: col = file_line_col.split(':')[2] except IndexError: col = None m = re.search(r'\(expected column (\d+)\)', msg) if col is not None and m is not None: spaces_to_add = int(m.group(1)) - int(col) if spaces_to_add > 0: return lint_util.add_arc_fix_str(lintline, bad_line, '', ' ' * spaces_to_add) else: return lint_util.add_arc_fix_str(lintline, bad_line, ' ' * -spaces_to_add, '', search_backwards=True) # Also handle the case the \> should go on the next line m = re.search(r'\(expected column (\d+) on the next line\)', msg) if m: indent = int(m.group(1)) - 1 if indent >= 0: return lint_util.add_arc_fix_str(lintline, bad_line, '', '\n' + ' ' * indent) if errcode == 'Eindent': m = re.search( r'Expected indentation of (\d+) space characters ' r'but found (\d+)', msg) if m: spaces_to_add = int(m.group(1)) - int(m.group(2)) if spaces_to_add > 0: return lint_util.add_arc_fix_str(lintline, bad_line, '', ' ' * spaces_to_add) else: return lint_util.add_arc_fix_str(lintline, bad_line, ' ' * -spaces_to_add, '', search_backwards=True) return lintline
def _maybe_add_arc_fix(self, lintline, bad_line): """Optionally add a patch for arc lint to use for autofixing.""" if not self._propose_arc_fixes: return lintline (file_line_col, errcode, msg) = lintline.split(' ', 2) if errcode == 'Esemi': return lint_util.add_arc_fix_str(lintline, bad_line, '', ';') if errcode == 'Eno-extra-semi': return lint_util.add_arc_fix_str(lintline, bad_line, ';', '') if errcode == 'Ecomma-dangle': return lint_util.add_arc_fix_str(lintline, bad_line, '', ',') if errcode == 'Ecomma-spacing': return lint_util.add_arc_fix_str(lintline, bad_line, ',', ', ') if errcode == 'Espace-before-function-paren': return lint_util.add_arc_fix_str(lintline, bad_line, re.compile(r' +'), '') if errcode == 'Eprefer-const': return lint_util.add_arc_fix_str(lintline, bad_line, 'let', 'const', search_backwards=True) if errcode == 'Ereact/jsx-closing-bracket-location': try: col = file_line_col.split(':')[2] except IndexError: col = None m = re.search(r'\(expected column (\d+)\)', msg) if col is not None and m is not None: spaces_to_add = int(m.group(1)) - int(col) if spaces_to_add > 0: return lint_util.add_arc_fix_str( lintline, bad_line, '', ' ' * spaces_to_add) else: return lint_util.add_arc_fix_str( lintline, bad_line, ' ' * -spaces_to_add, '', search_backwards=True) # Also handle the case the \> should go on the next line m = re.search(r'\(expected column (\d+) on the next line\)', msg) if m: indent = int(m.group(1)) - 1 if indent >= 0: return lint_util.add_arc_fix_str( lintline, bad_line, '', '\n' + ' ' * indent) if errcode == 'Eindent': m = re.search(r'Expected indentation of (\d+) space characters ' r'but found (\d+)', msg) if m: spaces_to_add = int(m.group(1)) - int(m.group(2)) if spaces_to_add > 0: return lint_util.add_arc_fix_str( lintline, bad_line, '', ' ' * spaces_to_add) else: return lint_util.add_arc_fix_str( lintline, bad_line, ' ' * -spaces_to_add, '', search_backwards=True) if errcode in {'Ecomputed-property-spacing', 'Earray-bracket-spacing', 'Eobject-curly-spacing'}: search_backwards = 'space before' in lintline return lint_util.add_arc_fix_str(lintline, bad_line, re.compile(r' +'), '', search_backwards=search_backwards) if errcode == 'Espace-in-parens': try: col = int(file_line_col.split(':')[2]) - 2 except IndexError: col = None if col is not None: paren = bad_line[col] search_backwards = {'(': False, ')': True}.get(paren) if search_backwards is not None: return lint_util.add_arc_fix_str( lintline, bad_line, re.compile(r' +'), '', search_backwards=search_backwards) if errcode == 'Eprettier/prettier': ascii_lintline = self._ascii_prettier_string(lintline) insert = re.search(r'Insert `(.*?)`?$', msg) if insert: to_add = self._clean_prettier_string(insert.group(1)) return lint_util.add_arc_fix_str( ascii_lintline, bad_line, '', to_add, limit_to_80=False) remove = re.search(r'Delete `(.*?)`?$', msg) if remove: return lint_util.add_arc_fix_str( ascii_lintline, bad_line, self._clean_prettier_string(remove.group(1)), '', limit_to_80=False) replace = re.search(r'Replace `(.*?)` with `(.*?)`?$', msg) if replace: to_add = self._clean_prettier_string(replace.group(2)) return lint_util.add_arc_fix_str( ascii_lintline, bad_line, self._clean_prettier_string(replace.group(1)), to_add, limit_to_80=False) return lintline
def _maybe_add_arc_fix(self, lintline, bad_line): """Optionally add a patch for arc lint to use for autofixing.""" if not self._propose_arc_fixes: return lintline (file_line_col, errcode, msg) = lintline.split(' ', 2) if errcode == 'Esemi': return lint_util.add_arc_fix_str(lintline, bad_line, '', ';') if errcode == 'Eno-extra-semi': return lint_util.add_arc_fix_str(lintline, bad_line, ';', '') if errcode == 'Ecomma-dangle': return lint_util.add_arc_fix_str(lintline, bad_line, '', ',') if errcode == 'Ecomma-spacing': return lint_util.add_arc_fix_str(lintline, bad_line, ',', ', ') if errcode == 'Espace-before-function-paren': return lint_util.add_arc_fix_str(lintline, bad_line, ' ', '') if errcode == 'Eprefer-const': return lint_util.add_arc_fix_str(lintline, bad_line, 'let', 'const', search_backwards=True) if errcode == 'Ereact/jsx-closing-bracket-location': try: col = file_line_col.split(':')[2] except IndexError: col = None m = re.search(r'\(expected column (\d+)\)', msg) if col is not None and m is not None: spaces_to_add = int(m.group(1)) - int(col) if spaces_to_add > 0: return lint_util.add_arc_fix_str( lintline, bad_line, '', ' ' * spaces_to_add) else: return lint_util.add_arc_fix_str( lintline, bad_line, ' ' * -spaces_to_add, '', search_backwards=True) # Also handle the case the \> should go on the next line m = re.search(r'\(expected column (\d+) on the next line\)', msg) if m: indent = int(m.group(1)) - 1 if indent >= 0: return lint_util.add_arc_fix_str( lintline, bad_line, '', '\n' + ' ' * indent) if errcode == 'Eindent': m = re.search(r'Expected indentation of (\d+) space characters ' r'but found (\d+)', msg) if m: spaces_to_add = int(m.group(1)) - int(m.group(2)) if spaces_to_add > 0: return lint_util.add_arc_fix_str( lintline, bad_line, '', ' ' * spaces_to_add) else: return lint_util.add_arc_fix_str( lintline, bad_line, ' ' * -spaces_to_add, '', search_backwards=True) return lintline