Post any bugs to the issue tracker found on the project's Sourceforge page: http://sourceforge.net/projects/uncrustify
Please include the following with your issue:
- a description of what is not working right
- input code sufficient to demonstrate the issue
- expected output code
- configuration options used to generate the output
If the issue cannot be easily reproduced, then it isn't likely to be fixed.
Quick start:
$ ./configure
$ make
The executable is src/uncrustify. Copy that to your ~/bin/ folder or wherever you want.
You can of course just open the Xcode project and build uncrustify using the default 'Debug' configuration but if you want to install it the 'Install' configuration will not work from within Xcode.
For that you will have to use the Xcode command line tool 'xcodebuild'.
To do that, cd into the uncrustify project folder where uncrustify.xcodeproj resides and enter the following command:
$ sudo xcodebuild -configuration 'Install'
You will be prompted for the root level password. By doing this you will install uncrustify into /usr/local/bin. The install location can be changed by editing the Build Settings for the uncrustify target. The setting you need to change is called, surprisingly enough, 'Installation Directory'.
Examine the example config files in etc and/or read documentation/htdocs/configuration.txt. Copy the existing config file that closely matches your style and put in ~/.uncrustify/. Modify to your liking.
As of the current release, I don't particularly trust this program to not make mistakes and screw up my whitespace formatting.
Here's how to run it:
$ uncrustify -c ~/.uncrustify/mystyle.cfg -f somefile.c > somefile.c.unc
The -c option selects the configuration file. The -f option specifies the input file. The output is sent to stdout. Error messages are sent to stderr.
Use a quality side-by-side diff tool to determine if the program did what you wanted. Repeat until your style is refined.
Write a script to automate the above. Check out etc/dofiles.sh for an example. That script is used as follows:
- navigate one level above your project
- make a list of file to process
$ find myproj -name "*.[ch]" > files.txt
$ sh etc/dofiles.sh files.txt
- Use your favorite diff/merge program to merge in the changes
$ xxdiff out/myproj myproj