# Uncrustify ## Source Code Beautifier for C, C++, C#, ObjectiveC, D, Java, Pawn and VALA ## Introduction The goals of this project are simple: Create a highly configurable, easily modifiable source code beautifier. ## Features Ident code, aligning on parens, assignments, etc Align on '=' and variable definitions Align structure initializers Align #define stuff Align backslash-newline stuff Reformat comments (a little bit) Fix inter-character spacing Add or remove parens on return statements Add or remove braces on single-statement if/do/while/for statements Supports embedded SQL 'EXEC SQL' stuff Highly configurable - 489 configurable options as of version 0.61 See some example output. ## Where to get Uncrustify ### Project Websites Sourceforge project web site Release downloads Freshmeat Project Git Hub ### Source Code As of release 0.54, the source code is maintained in a Git repository. The public Git URL for Sourceforge.net is `git://uncrustify.git.sourceforge.net/gitroot/uncrustify/uncrustify` The public Git URL for github.com is `git://github.com/bengardner/uncrustify.git` ### Prebuilt binaries Windows (i386) : Sourceforge SPARC/Solaris 2.5-10 and x86/Solaris 8-10 : sunfreeware.com ### Universal Indent GUI Universal Indent GUI is a cross-platform graphical configuration file editor for many code beautifiers, including Uncrustify. ## Want to help? The most helpful way is to try it out and give feedback. Documentation and examples are available in the source tree, so check it out. You can find the output from 'uncrustify --show-config' here. Here is the default config file. And one I set up for Linux. And here is a before and after C source example. That should give you a pretty good idea of what Uncrustify can do. If you find a bug, please do the following: Reduce the input source file to the minimum that still has the problem Use the sourceforget.net bug tracker Attach the input source file, the configuration file, and a file that contains the expected output If you want to add a feature, fix a bug, or implement missing functionality, feel free to do so! Patches are welcome! Here are some areas that need attention: Test Java support and provide feedback (or patches!) Test Objective C support and provide feedback (or patches!) Test Embedded SQL to see what works This web page need a (re)design A logo of some sort Examples that can be put on this website to show off what Uncrustify can do Anything else that you want to do to make it better? ### Project Mailing list There is one mailing list for Uncrustify. uncrustify-developer@lists.sourceforge.net Despite the name, it is for both users and developers. ## Portability I'm pretty sure that I'm not using anything that is OS-specific. The software has been tested on the following operating systems: Linux QNX OS X FreeBSD, NetBSD, OpenBSD Sun Solaris 9 Windows XP (binary available) ## Links Universal Indent GUI Don't know what D is? Check out the D Programming Language website. Linux Links ## Distributions that package Uncrustify Debian Fedora ALT Linux T2 MacPorts FreeBSD Ports (textproc/uncrustify) OpenBSD Ports (textproc/uncrustify) Others?