Thomas Jespersen
Thomas Jespersen

Reputation: 11783

How can I configure ReSharper's code cleanup on save?

I would love to configure Visual Studio/ReSharper to run "Code cleanup" whenever I save a file.

A bonus would be to configure this only for C# files, as I sometimes find that the cleanup on ASP.NET files does not work without introducing errors.

Upvotes: 48

Views: 19860

Answers (9)

FreakyAli
FreakyAli

Reputation: 16449

Even though I might not 100% agree with running a project-wide code clean-up, there are easy ways to do this, especially in 2023.

The easiest way in my opinion is to download Codemaid, an OSS tool that's plain awesome.

And then in its Settings select the following to Run Reshaper cleanup on pretty much every CodeMaid Code cleanup which can also be configured to run on save.

Go to Extensions>CodeMaid>Options>Third party

To find the below options for silent Resharper cleanups.

enter image description here

Upvotes: 0

MSkuta
MSkuta

Reputation: 1783

Update Resharper 2020.2

In version 2020.2+ of R# there is now build in option to run cleanup on save:

  1. Select Resharper Options (Alt + R, O)
  2. Code Editing > Code Cleanup > General

R# Code Cleanup Settings

Upvotes: 23

Pedro Pombeiro
Pedro Pombeiro

Reputation: 1652

I just published a free Visual Studio Extension that automates a similar script, for easier setup. You might want to give that a try at

http://blog.pedropombeiro.com/keeping-code-formatted-the-easy-way/

Upvotes: 19

DNKpp
DNKpp

Reputation: 277

Today I asked in the official resharper++ forum for that feature and received the answer that is already implemented in the 2020.2 EAP (early access program) version. topic

here you can find the related issue: click me

That means, this feature will be available soon for everyone. Otherwise just switch over to the EAP version.

Upvotes: 0

zastrowm
zastrowm

Reputation: 8243

I've created an extension to automatically invoke ReSharper Silent Cleanup on file save: https://visualstudiogallery.msdn.microsoft.com/43be6ead-dabf-4bb1-b019-1e361efd8410

It only supports ReSharper silent cleanup, but it works.

2018 Note: This stopped working in later ReSharper versions due to ReSharper api changes

Upvotes: 5

Johnno Nolan
Johnno Nolan

Reputation: 29659

You could record a macro(Ctrl+E, Ctrl+C,Run, Ctrl+S). Then run that instead of saving. Then all you need to do is assign CTRL+S to your macro.

Public Module RecordingModule
    Sub CLEAN_AND_SAVE()
    DTE.ExecuteCommand ("ReSharper.ReSharper_CleanupCode")
    DTE.ActiveDocument.Save
    End Sub
End Module

This method will show the code clean-up dialogue box where you will have to select Run.

To remove the user interaction you will have to select a profile to run when Code Cleanup is invoked. You can configure this by going into ReSharper | Options | Tools | Code Cleanup and selecting the profile in "Profile to use with silent clean-up" drop down. Its also here where you can create a custom profile to specify what changes to your code to make. In 4.5 however it does not allow you to omit aspx pages. The only differentiator is C# and VB.Net.

Useful link: http://www.jetbrains.com/resharper/features/code_formatting.html

Upvotes: 35

Marcel Dutt
Marcel Dutt

Reputation: 179

Maybe this will help someone else out in the future. I really liked the Macro idea so I adopted it. But this was not enough for me. I wanted to save all the unsaved open files at once and still get to enjoy the ReSharper cleanup function. So I came up with this Macro:

Public Module SaveUtils
    Public Sub CleanAndSave()
        DTE.ExecuteCommand("ReSharper_SilentCleanupCode")
        DTE.ActiveDocument.Save()
    End Sub

    Public Sub CleanAndSaveAll()
        For i = 1 To DTE.Documents.Count
            Dim document = DTE.Documents.Item(i)
            If (Not document.Saved) Then
                document.Activate()
                CleanAndSave()
            End If
        Next i
    End Sub
End Module

Upvotes: 0

Lech Osiński
Lech Osiński

Reputation: 522

It's my first post (hooray!) so excuse me if it's not perfect in any way...

Question is about R#, but you also mentioned (Visual Studio/ReSharper), so maybe my hint will help somebody. In Visual Studio extension called "Productivity Power Tools" there are two options for this (In Tools -> Options -> Productivity Power Tools -> PowerCommands: General):

  1. Format code on save.
  2. Remove and Sort Usings on save.

I find PPT nice to have, even with R# installed. You can get them from Visual Studio Gallery (2012 version, but there are also 2010, and 2013 versions).

Upvotes: 19

VitalyB
VitalyB

Reputation: 12855

If you are on VS2012, and you can't use the macro solution, you could use AutoHotKey (or similar) to automate it, instead of using macros:

  1. In Visual Studio:
    1. Assign a key to the ReSharper_SilentCleanupCode command, e.g: CONTRL+SHIFT+C
    2. Change the save key from being CONTROL+S to something else, e.g: CONTRL+SHIFT+S
  2. In AutoHotKey create a snippet that looks something like that:

    ^s::
        Send, ^+c
        Sleep, 300
        Send, ^+s
    return
    

Upvotes: 1

Related Questions