2015-07-08 13 views
7

Wir haben eine Konvention angenommen, die beim Aufrufen einer C# -Funktion mit einem "nicht offensichtlichen" Parameter einen benannten Parameter verwendet, auch wenn dies nicht erforderlich ist.Resharper - benannte Parameter bei der Codebereinigung beibehalten

z.

obj.Process(save: true) 

statt

obj.Process(true) 

Während es nicht notwendig ist, macht es viel einfacher, wenn durch den Code Blick, um zu sehen, was los ist, vor allem mit booleans oder magischen Zahlen.

Allerdings hat die Codebereinigung des Nachschärfers die Angewohnheit, diese zu entfernen. Ich war nicht in der Lage, einen Weg zu finden, es zu benennen, Parameter zu behalten - gibt es einen?

Antwort

9

Obwohl Sie es tun, was @EricWalker sagte erreichen können, möchte ich eine andere Wahl vorzuschlagen.

Sie können die ReSharper Optionen, suchen Sie nach Prüfschärfe dann gehen Sie zu Redundante explizite Argument Name Spezifikation und ändern Sie dies in starten Sie nicht zeigen. Auf diese Weise werden Sie nicht alle anderen guten Aufräumarbeiten (wie das Entfernen von vollständigen Namensqualifikatoren) verlieren, die überflüssigen Code entfernen bietet.

+0

Danke, das ist genau das, was ich will (vor allem die Tatsache, dass es separat mit Konstanten und anderen Ausdrücken umgehen kann, was unser häufigster Fall ist). Eine Schande, die Sie nicht sagen können "Hinweis, aber nicht aufräumen". –

+0

Ja, das stimmt:/ – Matthias

+2

Danke @Matthias, dachte, es musste einen besseren Weg geben, aber hatte keine Ahnung, dass der Inspektionsschweregrad und Code Cleanup so verknüpft waren. Heute etwas Neues gelernt. –

1

Die Einstellung, die Sie suchen ist unter Redundanzen \ C# \ Remove Code-Code Cleanup

Ich weiß, das ist wahrscheinlich nicht die Antwort, die Sie erhofft haben, aber Sie können es verhindern, dass Ihre Parameternamen zu entfernen, indem diese Einstellung deaktivieren (zusammen mit dem Zurücklassen jeder anderen Redundanz.)

Sie können möglicherweise verschiedene Profile in Code Cleanup einrichten, um das Problem zu umgehen, aber Sie hätten mehr Glück, JetBrains-Leute nach Lösungen zu fragen.

HTH,
Eric

0

UPDATE:

Es scheint, dass diese Lösung nicht mehr funktioniert mit v2017.1.3 Start (2017-08-28)


Ich bin derzeit ReSharper v2017.1 mit (2017 -06-01) und es scheint, dass JetBrains dieses Problem noch nicht gelöst hat.

Wie @Colin Harkness bemerkt, ist der letzte Ausweg, um "benannte Parameter" beizubehalten, die Option "Benannte Ausdrücke (Variablen, Eigenschaften, Methoden, etc)" auf "Benanntes Argument" zu setzen.

Dies ist sicherlich nicht der beste Ausweg.

enter image description here

UPDATE:

ich ein kleiner Trick, bei JetBrains' Forum gefunden. Sie können die genannten Parameter als Redundanz abbrechen, indem Sie diese Codezeile am Anfang der Datei hinzufügen.

// ReSharper disable ArgumentsStyleNamedExpression 

Sie müssen innerhalb der ReSharper-Einstellungen einige kleinere Einstellungen vornehmen. Um das automatische Hinzufügen der // ReSharper disable ArgumentsStyleNamedExpression einfach zu halten, habe ich diese Anweisung zu File Header Text wie in Abb. 2.

enter image description here Abb.2 - ArgumentsStyleNamedExpression Regel

Danach hinzufügen, haben Sie Update-Datei-Header Option in -Code Cleanup Konfiguration zu überprüfen, wie in Fig. 3

enter image description here Abb.3 - Überprüfen Sie "Update File Header" Option

In diesem Fall, wenn ein-Code Cleanup beginnt, fügt erste ArgumentsStyleNamedExpression Regel und wendet Code-Stil Datei .

Nach dem Hinzufügen dieser Regel können Sie zu Tools | wechseln Optionen | Umwelt | Schriftarten und Farben | ReSharper Parameter Identifier und die Markierungsfarbe visuell für diesen Fall, um unterscheiden ändern Argumente und Parameter Namen wie in Figur 4.

gezeigt

enter image description here

Abb.4 - Parametername Hervorhebung


Leider funktioniert diese Art, Namen von Argumenten zu behalten, nicht immer (ReSharper kann Namen von Argumenten selektiv behalten/entfernen).

+1

Funktioniert nicht für mich mit 2017.1.3 –

+1

@MarcelPopescu, habe ich es mit v2017.1.3 versucht . Es scheint, dass diese Lösung nicht mehr funktioniert. –

Verwandte Themen