C++ C D Objective-C Python CMake Other
Clone or download
Pull request Compare This branch is 1604 commits behind uncrustify:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.github
cmake
documentation
emscripten
etc
lnt
man
osx
scripts
src
tests
.editorconfig
.gitattributes
.gitignore
.travis.yml
AUTHORS
BUGS
CMakeLists.txt
COPYING
ChangeLog
Comments.txt
HELP
NEWS
README.md
TESTING
appveyor.yml
commit.log
coverity.sh
coverity.travis.yml
extras.vpj
forUncrustifySources.cfg uncrustify the source with forUncrustifySources.cfg Oct 26, 2016
forUncrustifySources.txt
package.json
release-steps.txt
run_tests.bat ./run_tests.sh and .bat root scripts were unable to locate a relative… Aug 11, 2016
run_tests.sh
uncrustify.vpj
uncrustify.vpw
working.txt

README.md

README for Uncrustify

Travis CI AppVeyor

Post any bugs to the issue tracker found on the project's GitHub page: https://github.com/uncrustify/uncrustify/issues

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.

Building using CMake

CMake is a tool that generates build systems (Makefiles, Visual Studio project files, and others).

To generate a build system for Uncrustify using CMake, create a build folder and run CMake from it:

$ mkdir build
$ cd build
$ cmake ..

Then use the build tools of your build system (in many cases this will simply be make, but on Windows it could be MSBuild or Visual Studio). Or use CMake to invoke it:

$ cmake --build .

If testing is enabled, CMake generates a test target, which you can build using your build system tools (usually make test). This can also be invoked using CTest:

$ ctest -V -C Debug

There is also an install target, which can be used to install the Uncrustify executable (typically make install).

A note on CMake configurations

Some build systems are single-configuration, which means you specify the build type when running CMake (by setting the CMAKE_BUILD_TYPE variable), and the generated files then build that configuration.

An example of a single-configuration build system is Makefiles. You can build the Release configuration of Uncrustify (from the build folder) with:

$ cmake -DCMAKE_BUILD_TYPE=Release ..
$ make

Other build systems are multi-configuration, which means you specify the build type when building.

An example of a multi-configuration build system is Visual Studio project files. When you open the project in Visual Studio, you can select which configuration to build. You can also do this while building from the command line with cmake --build . --config Release.

Building the program using Xcode on Mac OS X

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'.

Configuring the program

Examine the example config files in etc (such as ben.cfg) and/or read configuration.txt. Copy the existing config file that closely matches your style and put in ~/.uncrustify/. Find complete configuration file options in this file. Modify to your liking.

Running the program (and refining your style)

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.

Running the program (once you've found your style)

Write a script to automate the above. Check out etc/dofiles.sh for an example. That script is used as follows:

  1. navigate one level above your project
  2. make a list of file to process
$ find myproj -name "*.[ch]" > files.txt
  1. $ sh etc/dofiles.sh files.txt
  2. Use your favorite diff/merge program to merge in the changes
$ xxdiff out/myproj myproj