Add filter for unknown PyLint messages
This commit is contained in:
@ -13,6 +13,7 @@ de:
|
|||||||
# d. replacement: A fix replacement translation which is used instead of the
|
# d. replacement: A fix replacement translation which is used instead of the
|
||||||
# original English output. It may refer to one of the named capture
|
# original English output. It may refer to one of the named capture
|
||||||
# groups to include dynamic content from the English original
|
# groups to include dynamic content from the English original
|
||||||
|
# e. log_missing: Specifies whether missing translations should be logged to Sentry
|
||||||
# 4. Optionally a named capture group from the regex
|
# 4. Optionally a named capture group from the regex
|
||||||
# 5. A list of fix translations for _values / matches_ of the named capture group
|
# 5. A list of fix translations for _values / matches_ of the named capture group
|
||||||
#
|
#
|
||||||
@ -23,11 +24,13 @@ de:
|
|||||||
name: Falsche Import-Position
|
name: Falsche Import-Position
|
||||||
regex: .*"(?<import>.*)".*
|
regex: .*"(?<import>.*)".*
|
||||||
replacement: Der Import von "%{import}" sollte am Anfang der Datei stehen
|
replacement: Der Import von "%{import}" sollte am Anfang der Datei stehen
|
||||||
|
log_missing: false
|
||||||
bad-whitespace:
|
bad-whitespace:
|
||||||
example: No space allowed before bracket
|
example: No space allowed before bracket
|
||||||
name: Inkorrektes Leerzeichen
|
name: Inkorrektes Leerzeichen
|
||||||
regex: (?<what>Exactly one space required|No space allowed) (?<where>after|before|around) (?<when>.*)
|
regex: (?<what>Exactly one space required|No space allowed) (?<where>after|before|around) (?<when>.*)
|
||||||
replacement: "%{where} %{when} %{what}"
|
replacement: "%{where} %{when} %{what}"
|
||||||
|
log_missing: true
|
||||||
what:
|
what:
|
||||||
No space allowed: sollte kein Leerzeichen stehen
|
No space allowed: sollte kein Leerzeichen stehen
|
||||||
Exactly one space required: sollte genau ein Leerzeichen stehen
|
Exactly one space required: sollte genau ein Leerzeichen stehen
|
||||||
@ -47,11 +50,13 @@ de:
|
|||||||
name: Mehrere Anweisungen
|
name: Mehrere Anweisungen
|
||||||
regex: .*
|
regex: .*
|
||||||
replacement: Mehr als eine Anweisung in einer Zeile
|
replacement: Mehr als eine Anweisung in einer Zeile
|
||||||
|
log_missing: false
|
||||||
superfluous-parens:
|
superfluous-parens:
|
||||||
example: Unnecessary parens after 'if' keyword
|
example: Unnecessary parens after 'if' keyword
|
||||||
name: Überflüssige Klammer
|
name: Überflüssige Klammer
|
||||||
regex: .*'(?<keyword>.*)'.*
|
regex: .*'(?<keyword>.*)'.*
|
||||||
replacement: Nach dem Schlüsselwort '%{keyword}' ist keine Klammer notwendig
|
replacement: Nach dem Schlüsselwort '%{keyword}' ist keine Klammer notwendig
|
||||||
|
log_missing: false
|
||||||
error:
|
error:
|
||||||
severity_name: Fehler
|
severity_name: Fehler
|
||||||
function-redefined:
|
function-redefined:
|
||||||
@ -59,17 +64,20 @@ de:
|
|||||||
name: Funktionsdefinition überschrieben
|
name: Funktionsdefinition überschrieben
|
||||||
regex: .*line (?<line>\d*).*
|
regex: .*line (?<line>\d*).*
|
||||||
replacement: Eine Funktion mit demselben Namen wurde bereits in Zeile %{line} definiert
|
replacement: Eine Funktion mit demselben Namen wurde bereits in Zeile %{line} definiert
|
||||||
|
log_missing: false
|
||||||
import-error:
|
import-error:
|
||||||
example: Unable to import 'turtel'
|
example: Unable to import 'turtel'
|
||||||
name: Import-Fehler
|
name: Import-Fehler
|
||||||
regex: .*'(?<import>.*)'.*
|
regex: .*'(?<import>.*)'.*
|
||||||
replacement: Der Import von '%{import} ist fehlgeschlagen
|
replacement: Der Import von '%{import} ist fehlgeschlagen
|
||||||
|
log_missing: false
|
||||||
syntax-error:
|
syntax-error:
|
||||||
example: EOL while scanning string literal (<unknown>, line 1)
|
example: EOL while scanning string literal (<unknown>, line 1)
|
||||||
name: Syntax-Fehler
|
name: Syntax-Fehler
|
||||||
regex: |
|
regex: |
|
||||||
(?<what>invalid syntax|EOL while scanning string literal|EOF while scanning triple-quoted string literal|cannot assign to|expected an indented block|Missing parentheses in call to|closing parenthesis|expression cannot contain assignment, perhaps you meant|f-string expression part cannot include a backslash|f-string:|invalid character in identifier|invalid decimal literal|trailing comma not allowed without surrounding parentheses|unexpected EOF while parsing|unexpected character after line continuation character|unexpected indent|unindent does not match any outer indentation level|unmatched) ?(?<what_exactly>function call|literal|operator|set display|empty expression not allowed|single|unmatched)? ?(?:'(?<actual>[^'"]*)'\.*)? ?(?:(?<explanation>Did you mean|does not match opening parenthesis|is not allowed)(?: ')?)?(?:(?<suggestion>.*)(?:\?|'|"))? ?\((?<context>.*), line (?<line>\d*)\).*
|
(?<what>invalid syntax|EOL while scanning string literal|EOF while scanning triple-quoted string literal|cannot assign to|expected an indented block|Missing parentheses in call to|closing parenthesis|expression cannot contain assignment, perhaps you meant|f-string expression part cannot include a backslash|f-string:|invalid character in identifier|invalid decimal literal|trailing comma not allowed without surrounding parentheses|unexpected EOF while parsing|unexpected character after line continuation character|unexpected indent|unindent does not match any outer indentation level|unmatched) ?(?<what_exactly>function call|literal|operator|set display|empty expression not allowed|single|unmatched)? ?(?:'(?<actual>[^'"]*)'\.*)? ?(?:(?<explanation>Did you mean|does not match opening parenthesis|is not allowed)(?: ')?)?(?:(?<suggestion>.*)(?:\?|'|"))? ?\((?<context>.*), line (?<line>\d*)\).*
|
||||||
replacement: "%{what}%{what_exactly}%{actual}%{explanation}%{suggestion}" # unused: context, line
|
replacement: "%{what}%{what_exactly}%{actual}%{explanation}%{suggestion}" # unused: context, line
|
||||||
|
log_missing: true
|
||||||
what:
|
what:
|
||||||
invalid syntax: Ungültige Syntax
|
invalid syntax: Ungültige Syntax
|
||||||
EOL while scanning string literal: Ein String wurde nicht geschlossen
|
EOL while scanning string literal: Ein String wurde nicht geschlossen
|
||||||
@ -116,16 +124,19 @@ de:
|
|||||||
name: Undefinierter Bezeichner
|
name: Undefinierter Bezeichner
|
||||||
regex: .*'(?<name>.*)'.*
|
regex: .*'(?<name>.*)'.*
|
||||||
replacement: Der Name '%{name}' ist unbekannt
|
replacement: Der Name '%{name}' ist unbekannt
|
||||||
|
log_missing: false
|
||||||
used-before-assignment:
|
used-before-assignment:
|
||||||
example: Using variable 'kleidung' before assignment
|
example: Using variable 'kleidung' before assignment
|
||||||
name: Verwendung vor Zuweisung
|
name: Verwendung vor Zuweisung
|
||||||
regex: .*'(?<name>.*)'.*
|
regex: .*'(?<name>.*)'.*
|
||||||
replacement: Die Variable '%{name}' wird vor ihrer erstmaligen Zuweisung verwendet
|
replacement: Die Variable '%{name}' wird vor ihrer erstmaligen Zuweisung verwendet
|
||||||
|
log_missing: false
|
||||||
return-outside-function:
|
return-outside-function:
|
||||||
example: Return outside function
|
example: Return outside function
|
||||||
name: Return außerhalb einer Funktion
|
name: Return außerhalb einer Funktion
|
||||||
regex: .*
|
regex: .*
|
||||||
replacement: Ein Return kann nur innerhalb einer Funktion verwendet werden
|
replacement: Ein Return kann nur innerhalb einer Funktion verwendet werden
|
||||||
|
log_missing: false
|
||||||
refactor:
|
refactor:
|
||||||
severity_name: Überarbeitung empfohlen
|
severity_name: Überarbeitung empfohlen
|
||||||
comparison-with-itself:
|
comparison-with-itself:
|
||||||
@ -133,16 +144,19 @@ de:
|
|||||||
name: Vergleich mit sich selbst
|
name: Vergleich mit sich selbst
|
||||||
regex: .* - (?<comparison>.*)
|
regex: .* - (?<comparison>.*)
|
||||||
replacement: Der Vergleich ist überflüssig - %{comparison}
|
replacement: Der Vergleich ist überflüssig - %{comparison}
|
||||||
|
log_missing: false
|
||||||
inconsistent-return-statements:
|
inconsistent-return-statements:
|
||||||
example: Either all return statements in a function should return an expression, or none of them should.
|
example: Either all return statements in a function should return an expression, or none of them should.
|
||||||
name: Uneinheitliche Rückgabewerte
|
name: Uneinheitliche Rückgabewerte
|
||||||
regex: .*
|
regex: .*
|
||||||
replacement: Entweder sollten alle return Anweisungen in einer Funktion ein Ergebnis zurückgeben oder keine Anweisung sollte einen Rückgabewert haben
|
replacement: Entweder sollten alle return Anweisungen in einer Funktion ein Ergebnis zurückgeben oder keine Anweisung sollte einen Rückgabewert haben
|
||||||
|
log_missing: false
|
||||||
redefined-argument-from-local:
|
redefined-argument-from-local:
|
||||||
example: Redefining argument with the local name 'Wort'
|
example: Redefining argument with the local name 'Wort'
|
||||||
name: Überschreiben eines Arguments
|
name: Überschreiben eines Arguments
|
||||||
regex: .*'(?<name>.*)'.*
|
regex: .*'(?<name>.*)'.*
|
||||||
replacement: Das Argument '%{name}' wird überschrieben
|
replacement: Das Argument '%{name}' wird überschrieben
|
||||||
|
log_missing: false
|
||||||
warning:
|
warning:
|
||||||
severity_name: Warnung
|
severity_name: Warnung
|
||||||
bad-indentation:
|
bad-indentation:
|
||||||
@ -150,68 +164,82 @@ de:
|
|||||||
name: Ungültige Einrückung
|
name: Ungültige Einrückung
|
||||||
regex: .*(?<actual>\d+).*(?<expected>\d+).*
|
regex: .*(?<actual>\d+).*(?<expected>\d+).*
|
||||||
replacement: Statt %{actual} Leerzeichen wurden %{expected} Leerzeichen erwartet
|
replacement: Statt %{actual} Leerzeichen wurden %{expected} Leerzeichen erwartet
|
||||||
|
log_missing: false
|
||||||
duplicate-key:
|
duplicate-key:
|
||||||
example: Duplicate key 100 in dictionary
|
example: Duplicate key 100 in dictionary
|
||||||
name: Doppelter Schlüssel
|
name: Doppelter Schlüssel
|
||||||
regex: Duplicate key (?<key>.*) in dictionary
|
regex: Duplicate key (?<key>.*) in dictionary
|
||||||
replacement: Der Schlüssel '%{key}' ist im Dictionary doppelt vorhanden
|
replacement: Der Schlüssel '%{key}' ist im Dictionary doppelt vorhanden
|
||||||
|
log_missing: false
|
||||||
duplicate-except:
|
duplicate-except:
|
||||||
example: Catching previously caught exception type ValueError
|
example: Catching previously caught exception type ValueError
|
||||||
name: Doppeltes Except
|
name: Doppeltes Except
|
||||||
regex: Catching previously caught exception type (?<exception>.*)
|
regex: Catching previously caught exception type (?<exception>.*)
|
||||||
replacement: Die zuvor bereits aufgefangene Exception '%{exception}' wird erneut behandelt
|
replacement: Die zuvor bereits aufgefangene Exception '%{exception}' wird erneut behandelt
|
||||||
|
log_missing: false
|
||||||
mixed-indentation:
|
mixed-indentation:
|
||||||
example: Found indentation with tabs instead of spaces
|
example: Found indentation with tabs instead of spaces
|
||||||
name: Gemischte Einrückung
|
name: Gemischte Einrückung
|
||||||
regex: .*
|
regex: .*
|
||||||
replacement: Es wurde eine Einrückung mit Tabs anstelle von Leerzeichen entdeckt
|
replacement: Es wurde eine Einrückung mit Tabs anstelle von Leerzeichen entdeckt
|
||||||
|
log_missing: false
|
||||||
pointless-statement:
|
pointless-statement:
|
||||||
example: Statement seems to have no effect
|
example: Statement seems to have no effect
|
||||||
name: sinnlose Anweisung
|
name: sinnlose Anweisung
|
||||||
regex: .*
|
regex: .*
|
||||||
replacement: Die Anweisung scheint keine Auswirkungen zu haben
|
replacement: Die Anweisung scheint keine Auswirkungen zu haben
|
||||||
|
log_missing: false
|
||||||
pointless-string-statement:
|
pointless-string-statement:
|
||||||
example: String statement has no effect
|
example: String statement has no effect
|
||||||
name: sinnloser String
|
name: sinnloser String
|
||||||
regex: .*
|
regex: .*
|
||||||
replacement: Ein einzelner String ohne Zuweisung hat keine Auswirkung
|
replacement: Ein einzelner String ohne Zuweisung hat keine Auswirkung
|
||||||
|
log_missing: false
|
||||||
redefined-builtin:
|
redefined-builtin:
|
||||||
example: Redefining built-in 'print'
|
example: Redefining built-in 'print'
|
||||||
name: Überschreiben
|
name: Überschreiben
|
||||||
regex: .*'(?<builtin>.*)'.*
|
regex: .*'(?<builtin>.*)'.*
|
||||||
replacement: Der interne Bezeichner '%{builtin}' wird überschrieben
|
replacement: Der interne Bezeichner '%{builtin}' wird überschrieben
|
||||||
|
log_missing: false
|
||||||
redefined-outer-name:
|
redefined-outer-name:
|
||||||
example: Redefining name 'name' from outer scope (line 1)
|
example: Redefining name 'name' from outer scope (line 1)
|
||||||
name: Überschreiben
|
name: Überschreiben
|
||||||
regex: .*'(?<name>.*)'.*\(line (?<line>\d*)\).*
|
regex: .*'(?<name>.*)'.*\(line (?<line>\d*)\).*
|
||||||
replacement: Der Bezeichner '%{name}', der bereits in Zeile %{line} definiert wurde, wird überschrieben
|
replacement: Der Bezeichner '%{name}', der bereits in Zeile %{line} definiert wurde, wird überschrieben
|
||||||
|
log_missing: false
|
||||||
self-assigning-variable:
|
self-assigning-variable:
|
||||||
example: Assigning the same variable 'kleidung' to itself
|
example: Assigning the same variable 'kleidung' to itself
|
||||||
name: Selbstzuweisung
|
name: Selbstzuweisung
|
||||||
regex: .*'(?<name>.*)'.*
|
regex: .*'(?<name>.*)'.*
|
||||||
replacement: Die Variable '%{name}' wird sich selbst zugewiesen
|
replacement: Die Variable '%{name}' wird sich selbst zugewiesen
|
||||||
|
log_missing: false
|
||||||
unreachable:
|
unreachable:
|
||||||
example: Unreachable code
|
example: Unreachable code
|
||||||
name: Unerreichbar
|
name: Unerreichbar
|
||||||
regex: .*
|
regex: .*
|
||||||
replacement: Die Anweisung wird nie ausgeführt
|
replacement: Die Anweisung wird nie ausgeführt
|
||||||
|
log_missing: false
|
||||||
undefined-loop-variable:
|
undefined-loop-variable:
|
||||||
example: Using possibly undefined loop variable 'i'
|
example: Using possibly undefined loop variable 'i'
|
||||||
name: Unbekannte Schleifenvariable
|
name: Unbekannte Schleifenvariable
|
||||||
regex: .*'(?<name>.*)'.*
|
regex: .*'(?<name>.*)'.*
|
||||||
replacement: Die Schleifenvariable '%{name}' ist möglicherweise nicht definiert
|
replacement: Die Schleifenvariable '%{name}' ist möglicherweise nicht definiert
|
||||||
|
log_missing: false
|
||||||
unnecessary-semicolon:
|
unnecessary-semicolon:
|
||||||
example: Unnecessary semicolon
|
example: Unnecessary semicolon
|
||||||
name: Unnötiges Semikolon
|
name: Unnötiges Semikolon
|
||||||
regex: .*
|
regex: .*
|
||||||
replacement: Am Ende einer Zeile sollte kein Semikolon stehen
|
replacement: Am Ende einer Zeile sollte kein Semikolon stehen
|
||||||
|
log_missing: false
|
||||||
unused-argument:
|
unused-argument:
|
||||||
example: Unused argument 'laenge'
|
example: Unused argument 'laenge'
|
||||||
name: Unbenutztes Argument
|
name: Unbenutztes Argument
|
||||||
regex: .*'(?<name>.*)'.*
|
regex: .*'(?<name>.*)'.*
|
||||||
replacement: Das Argument '%{name}' wird nicht verwendet
|
replacement: Das Argument '%{name}' wird nicht verwendet
|
||||||
|
log_missing: false
|
||||||
unused-variable:
|
unused-variable:
|
||||||
example: Unused variable 'i'
|
example: Unused variable 'i'
|
||||||
name: Unbenutzte Variable
|
name: Unbenutzte Variable
|
||||||
regex: .*'(?<name>.*)'.*
|
regex: .*'(?<name>.*)'.*
|
||||||
replacement: Die Variable '%{name}' wird nicht verwendet
|
replacement: Die Variable '%{name}' wird nicht verwendet
|
||||||
|
log_missing: false
|
||||||
|
@ -83,8 +83,18 @@ class PyLintAdapter < TestingFrameworkAdapter
|
|||||||
end
|
end
|
||||||
|
|
||||||
def self.get_t(key, default)
|
def self.get_t(key, default)
|
||||||
|
# key might be "linter.#{severity}.#{name}.#{key}.#{value}"
|
||||||
|
# or something like "linter.#{severity}.#{name}.replacement"
|
||||||
translation = I18n.t(key, locale: :de, default: default)
|
translation = I18n.t(key, locale: :de, default: default)
|
||||||
Raven.capture_message({key: key, default: default}.to_json) if translation == default
|
keys = key.split('.')
|
||||||
|
final_key = keys.pop
|
||||||
|
if %w[severity_name name regex replacement].exclude? final_key
|
||||||
|
keys.pop # second last key, e.g. #{key}
|
||||||
|
log_missing = I18n.t(keys.append('log_missing').join('.'), locale: :de, default: true)
|
||||||
|
else
|
||||||
|
log_missing = true
|
||||||
|
end
|
||||||
|
Raven.capture_message({key: key, default: default}.to_json) if translation == default && log_missing
|
||||||
translation
|
translation
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Reference in New Issue
Block a user