This script tool is used for formatting code for Objective-C language project. Since the BBUncrustifyPlugin-Xcode plugin doesn't work in Xcode 9 anymore. It seems there are not any Xcode plugin based on Source Editor Extension like ClangFormat-Xcode, what a pity!
uncrustify and uncrustify-objc are different, the former is built with c++ and designed for kinds of languages, the latter is a cli wrapper tool built with python but not including uncrustify script, it need the users to install the former into your local environment paths.
Get it with
pip, see more in pypi page.
-
Python 2.7 or later.
-
-
Highly recommend you compile the uncrustify executable binary file with the latest source code.
-
Run the command after downloading the source project.
mkdir build && cd build/ cmake -G Xcode .. -DCMAKE_BUILD_TYPE=Release
Open the
uncrustify.xcodeprojproject and switch theuncrustifytarget, it'd better compile the release version via switching theEdit scheme->Run->Info->Build Configuration. -
cp Release/uncrustify /usr/local/bin, make it could be located in your$PATH.
-
pip install uncrustify-objc -UAfter finishing the installation, a default uncrustify.cfg file like this and a initial global path ignore file named uncrustify_ignore_global could be located in ~/.uncrustify/. If you used the BBUncrustifyPlugin-Xcode or old version of this tool, they won't be overwrite when [re]installing.
➜ uncrustify-objc --help
Usage: uncrustify-objc [OPTIONS] PROJECT_PATH
uncrustify-obj is used to format the objective-c files under the specified
project path.
For the uncrustify.cfg config file, it will search it recursively from the
project directory to its top parent directory. If none, the
~/uncrustify.cfg or ~/.uncrustify/uncrustify.cfg will be assumed to use.
Configure the uncrustify_ignore in the project path to make a path
blacklist which matched items will not be formatted. It uses the gitignore
file template, more documentation could be found from
https://git-scm.com/docs/gitignore.
By default, it will search the ignore file from the project path, if not
specify with --ignore-file. Besides, there is a global ignore file located
~/.uncrustify/uncrustify_ignore_global which will be combined to the
target ignore spec.
If the project path is under the git version control, passing the --git-
only option will make the changed source files to be used as source file
list, the ignore files will be omitted because the git-scm already used
the gitignore spec.
Highly recommend you to make a shell alias like `alias uncrustify-objc
='uncrustify-objc --git-only'`.
Options:
-c, --cfg-file CFG_FILE The CFG config file used to format.
-i, --ignore-file IGNORE_FILE The ignore file used to ignore the matching
files for formatting.
-g, --git-only Format the current git staged and unstaged
files only.
-n, --dry-run Do not format any files, but show a list of
files to be formatted.
-v, --verbose Enables verbose mode.
--help Show this message and exit.Highly recommend you to track the uncrustify.cfg and uncrustify_ignore files in your SCM. :)
Will Han, [email protected]
MIT license.