Can StyleCop automatically fix anything?

2019-02-05 16:04发布

问题:

I've decided to start running StyleCop on a medium sized project and am getting over 1000 warnings.

Is there a quick easy way to fix most of these warnings? Most of the warnings could easily have been automated to resolve and would save me a lot of time.

回答1:

This doesn't exactly "automatically fix anything" but there is a StyleCop plug-in for Resharper on Codeplex that will automatically highlight the style errors in your code.

Update: According to the StyleCop for ReSharper website, ReSharper now provides an increasing number of Quick-Fixes for StyleCop errors. You select a quick-fix from the list and the problem will be resolved automatically.



回答2:

No, frustratingly. That's why Style Cop is counter-productive. Consistent formatting looks nice, but there's little productivity benefit to it (what really makes code hard to read is length and indirection). Perfect spacing is not worth spending hours adjusting lines by hand.

Of course, if there were an automated tool to achieve consistent formatting, I'd hook it up post-check-in, and let it help me. But Style Cop is made by sadists. Presumably their conversation went like this:

Bob: Using pattern matching, the software identifies ugly code
Charlie: —and fixes it!
Bob: No, it prints a message about each transgression
Charlie: —and then the user right-clicks to fix them all?
Bob: No, it scolds them 'invalid spacing around the comma'
Charlie: —and then explains how to fix it?
Bob: No, that's in a separate document
Charlie: —on Google?
Bob: No.

I hate Style Cop. It's below a minimum viable product.



回答3:

StyleCopFixer automatically fixes StyleCop exceptions within Visual Studio IDE for C# Only.

Errors currently catered for are:

  1. SA1001
  2. SA1516
  3. SA1513
  4. SA1508
  5. SA1507
  6. SA1505
  7. SA1309
  8. SA1210
  9. SA1202
  10. SA1200
  11. SA1106
  12. SA1101
  13. SA1025
  14. SA1013
  15. SA1012
  16. SA1009
  17. SA1008
  18. SA1633
  19. SA1003
  20. SA1005
  21. SA1600 (for properties only)
  22. SA1121


回答4:

There is a project in codeplex which does some automatic fix based on stylecop warning. It is not complete however...

see: http://stylefix.codeplex.com/



回答5:

Code Maid does some Stylecop fixes.



回答6:

Unfortunately, right now, I don't know of any automatic tools to fix things entirely.

However, if you setup Visual Studio's formatting options (and Resharper's, if you have that) for code formatting to match the style cop guidelines, cleanups get a bit easier.

Once you've done that, you can go into a file and do Edit->Advanced->Format Document (or the keyboard shortcut, which varies with your shortcut settings - mine is Ctrl+K, Ctrl+D). This will fix quite a few of the style cop warnings, especially if you have resharper + the stylecop plugin. It won't fix all of them, but in many cases, it's taken the number of warnings in a file from hundreds down to tens.



回答7:

If you have Resharper you can download a StyleCop plugin for Resharper which features some automatic fixes. StyleCop for Resharper on codeplex.



回答8:

  1. Turn off the warnings! Not recommended, but you could use this in the short term until you get a bulk of the issues resolved.
  2. Write a program to fix some of the simpler warnings, or use find/replace
  3. Use code snippets to help with things like file header documentation

There was mention on the StyleCop blog regarding implementing auto fixing for rules

Also check out the entry on the blog regarding integrating in to an existing large project.

Note: It seems that StyleCop only returns around 1000 warnings, so you will continue to get this number even after fixing a heap.