Giter Site home page Giter Site logo

aastorg2 / codecleanuptools Goto Github PK

View Code? Open in Web Editor NEW

This project forked from kirillosenkov/codecleanuptools

0.0 1.0 0.0 594 KB

A set of command-line tools to cleanup C# and VB source code.

License: Apache License 2.0

C# 99.75% Smalltalk 0.25%

codecleanuptools's Introduction

CodeCleanupTools

A set of command-line tools to cleanup C# and VB source code.

WARNING: use these tools at your own risk. The author and maintainers are not responsible for any damage caused to your files as a result of using these tools. Always manually code review changes made by the tools and always use a version control system.

A recommended pattern is that you fork this repo for a codebase and tweak to the guidelines of your codebase. It tries to use reasonable defaults (4 spaces, no tabs, no-BOM, CRLF, etc)

TextAndWhitespace

Opens every *.cs file (or other pattern) in the current directory and all subdirectories and:

  1. Saves the file with UTF8 encoding without signature (no-BOM)
  2. Converts all line endings to CRLF (Windows)
  3. Removes trailing whitespace from every line
  4. Replaces leading tabs with 4 spaces
  5. Collapses multiple consecutive empty lines into one

SortProjectItems

Sorts the Compile and Reference items in ItemGroups of your *.csproj and *.vbproj files. This simplifies merging project files because the items are sorted alphabetically. It's easier to unify two different versions of a project if both are sorted before merge.

Usage:

  1. cinst sortprojectitems
  2. cd RootOfYourSolution
  3. sortprojectitems /r

It will recursively find all *.csproj and *.vbproj files in the current directory and all subdirectories and sort all MSBuild ItemGroups. It will also consolidate ItemGroups by kind and remove empty ItemGroups.

Note: Visual Studio normally tries to preserve sorting when modifying the project, however:

  • several operations such as Rename in Solution Explorer and Include in Project for resource files are known to break the order.
  • once the order is broken (an item is inserted in incorrect location), Visual Studio keeps making it worse, so subsequent modifications drift towards random ordering.
  • it helps to keep all branches sorted, so that even if projects are significantly diverged, there is a well-defined "normal form" for a project.

FormatSolution

Command line tool to load an .sln file and format every *.cs and *.vb file in the solution using the Visual Studio default formatting settings (uses Roslyn). Currently requires Visual Studio 2015 to be installed on the machine (for MSBuild 14). Saves every file back to disk.

Additionally the tool collapses multiple consecutive empty lines into a single empty line (a fix for StyleCop rule http://www.stylecop.com/docs/SA1507.html).

Usage: formatsolution .sln

MoveUsings

Command line tool to move all using declarations in *.cs files from inside namespaces to top level. The tool currently only uses the syntactic part of Roslyn, i.e. it moves the using declarations and tries to preserve whitespace and comments, however it doesn't do any binding analysis, so be prepared to deal with build errors resulting from identifiers no longer binding or binding to a different symbol (you will especially get problems if you have a namespace and a type with the same name in any of your projects or references).

The reverse side (from top level to inside of namespaces) is not (yet) implemented.

LOC

Very simple tool to count the lines of code in all *.cs files in the current directory and all subdirectories.

Usage:

  1. cinst loc
  2. cd
  3. loc [*.ext]

It will print the number of lines of code. Use loc *.js to specify an optional mask (by default *.cs is assumed).

FindProjectsWithSameGuid

Sometimes people copy-paste the .csproj file and leave the GUID of the original project. This confuses the VS project system. This tool finds projects that share the same project GUID if any. The tool has no output if it didn't find anything (the good case).

bin2hex

A tool to convert binary files to text (hex) and back to binary. It can be used as a poor person's binary editor.

Usage: bin2hex <input> <output> [<column-width>]*

If the input is a binary file, writes a human-readable hex contents to the output file (will overwrite if output exists). Example: for bin2hex input.dll output.txt 8 8 the output.txt will contain

4D 5A 90 00 03 00 00 00  04 00 00 00 FF FF 00 00
B8 00 00 00 00 00 00 00  40 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
...

By default the tool will output bytes on a single line separated by space. Specify one or more space-separated numbers after input and output to create columns.

  Example: bin2hex foo.dll foo.txt 8         - uses one 8-byte column
  Example: bin2hex foo.dll foo.txt 4 4       - uses two 4-byte columns
  Example: bin2hex foo.dll foo.txt 8 8 8     - uses three 8-byte columns

If the input is a text hex file produced by this tool (in a format like above), writes the bytes to the output as binary. In a hex file, whitespace is ignored, so the columns, line breaks etc. don't matter.

codecleanuptools's People

Contributors

kirillosenkov avatar slang25 avatar toddgrun avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.