Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>pull/5/head
parent
a5d7db3b2c
commit
fdcd720883
@ -1,3 +0,0 @@
|
||||
[{src}/*]
|
||||
indent_style = space
|
||||
indent_size = 3
|
@ -1,38 +0,0 @@
|
||||
---
|
||||
|
||||
name: uncrustify_test
|
||||
on: [push, pull_request]
|
||||
|
||||
# Cancel any in-progress CI runs for a PR if it is updated
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.head_ref || github.sha }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
check-uncrustify:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: cmake-part-and-tests
|
||||
env:
|
||||
BADGE: linux
|
||||
run: mkdir build;
|
||||
cd build;
|
||||
cmake -DCMAKE_BUILD_TYPE=Release ..;
|
||||
make;
|
||||
../scripts/run_ctest.py
|
||||
|
||||
|
||||
debug-ninja-uncrustify:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: seanmiddleditch/gha-setup-ninja@master
|
||||
- name: cmake-part-and-tests
|
||||
env:
|
||||
BADGE: linux
|
||||
run: mkdir build;
|
||||
cd build;
|
||||
cmake -GNinja -DCMAKE_BUILD_TYPE=Debug ..;
|
||||
ninja;
|
||||
../scripts/run_ctest.py
|
@ -1,70 +0,0 @@
|
||||
# "Default" build tree
|
||||
/build/
|
||||
|
||||
# PyCharm help directory
|
||||
venv/
|
||||
|
||||
# Compiled Python code
|
||||
*.pyc
|
||||
|
||||
# Testing framework (if run_tests.py is run from the source tree)
|
||||
results/
|
||||
results_2/
|
||||
|
||||
# Static analysis and code coverage
|
||||
/tests/pclint/
|
||||
/cov-int
|
||||
gcov_test/
|
||||
|
||||
# SlickEdit workspace history and tag files
|
||||
*.vtg
|
||||
*.vpwh*
|
||||
|
||||
# for projects that use Waf for building: http://code.google.com/p/waf/
|
||||
.waf-*
|
||||
.lock*
|
||||
waf*
|
||||
|
||||
# KDevelop
|
||||
*.kdev4
|
||||
.kdev4/
|
||||
|
||||
# XCode
|
||||
*.xcodeproj/*.pbxuser
|
||||
*.xcodeproj/*.perspectivev3
|
||||
*.xcodeproj/*.mode1v3
|
||||
*.xcodeproj/*.tm_build_errors
|
||||
*.tmproj
|
||||
*.xcworkspace
|
||||
xcuserdata
|
||||
|
||||
# Sublime
|
||||
*.sublime-workspace
|
||||
|
||||
# Eclipse Configuration
|
||||
.cproject
|
||||
.project
|
||||
.settings
|
||||
|
||||
# backup files
|
||||
# texteditor (kate, etc.)
|
||||
*~
|
||||
# git mergetool.keepBackup or KDiff3
|
||||
*.orig
|
||||
|
||||
# uncrustified files
|
||||
*.uncrustify
|
||||
|
||||
|
||||
# CLion
|
||||
.idea/
|
||||
cmake-build-*/
|
||||
|
||||
# Vim
|
||||
*.swp
|
||||
|
||||
# Clangd
|
||||
/.cache/clangd/
|
||||
|
||||
# Compilation database
|
||||
compile_commands.json
|
@ -1,175 +0,0 @@
|
||||
Author:
|
||||
2005 - 2016 : Ben Gardner
|
||||
|
||||
Maintenance:
|
||||
Guy Maurel
|
||||
Matthew Woehlke
|
||||
|
||||
until 2020-11-05:
|
||||
Other collaborators:
|
||||
Alan Fineberg
|
||||
Alexander GQ Gerasiov
|
||||
Alex Henrie
|
||||
Andrรฉ Berg
|
||||
Andrei Alexandrescu
|
||||
Andrey Starodubtsev
|
||||
Anirban Pramanick
|
||||
Antti Tapaninen
|
||||
Arne Forlie
|
||||
Arseniy Shestakov
|
||||
asobhy
|
||||
atauzki
|
||||
Aurรฉlien Gรขteau
|
||||
Benio
|
||||
Ben Iofel
|
||||
Ben Mayo
|
||||
Beren Minor
|
||||
Bi-Ruei, Chiu
|
||||
Biswa96
|
||||
Biswapriyo Nath
|
||||
B. Kevin Hardman
|
||||
Bogdan Popescu
|
||||
Brandon Slack
|
||||
Brendan Long
|
||||
CharlieYJH
|
||||
Chris Lalancette
|
||||
Clemens Rabe
|
||||
Clint Lawrence
|
||||
Code Able
|
||||
Cody Schafer
|
||||
Corentin Noรซl
|
||||
Dandielo
|
||||
Daniel Chumak
|
||||
Daniele Bartolini
|
||||
Dan Rose
|
||||
Dave Lee
|
||||
David Catmull
|
||||
David E. O'Brien
|
||||
David Lechner
|
||||
David Schaefgen
|
||||
Dirk Thomas
|
||||
Dittrich, Rico
|
||||
Dmitry Marakasov
|
||||
Dmitry Povolotsky
|
||||
Dmytro Povolotskyi
|
||||
Dundar Gรถc
|
||||
Dลพenan Zukiฤ
|
||||
Eism
|
||||
Emerson Knapp
|
||||
Emmanuel Christophe
|
||||
epac-tom
|
||||
Ethan Gao
|
||||
Florin Pop
|
||||
Gary Ash
|
||||
Ger Hobbelt
|
||||
Hackerpilot
|
||||
Hannes Schmidt
|
||||
hghdev
|
||||
Huang-Ming Huang
|
||||
Husk3r
|
||||
Ilya Lyubimov
|
||||
Ingo Brรผckl
|
||||
Ivan Nazarenko
|
||||
Ivan Romanov
|
||||
Jakub Schmidtke
|
||||
Jan Weiร
|
||||
Jason
|
||||
JavDevGames
|
||||
Jeremy H
|
||||
Jeremy T Hilliker
|
||||
Jim Meyering
|
||||
Jiri Hruska
|
||||
jodi.the.tigger
|
||||
Jody Hagins
|
||||
Joel Ostraat
|
||||
Joergen Ibsen
|
||||
Johnny Oskarsson
|
||||
Jonas Hurrelmann
|
||||
Joshua Gross
|
||||
Joshua Parker
|
||||
Julian Picht
|
||||
Kalle Raiskila
|
||||
Keepun
|
||||
krys
|
||||
Laurent Trรฉguier
|
||||
Lauri Kasanen
|
||||
lbmaian
|
||||
Leon Breedt
|
||||
Lorenz Haas
|
||||
Lykurg
|
||||
Maciej Bogusz
|
||||
Marco Stephan
|
||||
Marek Fort
|
||||
Marius Zwicker
|
||||
Mark Stegeman
|
||||
Markus Geimer
|
||||
Martin Simonovsky
|
||||
Martin Storsjo
|
||||
Matthew McDole
|
||||
Matthew Woehlke
|
||||
Maxim Mikityanskiy
|
||||
Max Smolens
|
||||
MeXx
|
||||
Michaรซl Peeters
|
||||
Michele Calgaro
|
||||
Mihai Popescu
|
||||
Mike
|
||||
Mike Gelfand
|
||||
Mirko Kรถnig
|
||||
mjbogusz
|
||||
MrTheMake
|
||||
Nate
|
||||
neok-m4700
|
||||
Nico Decker
|
||||
Oleg Liatte
|
||||
Oleg Smolsky
|
||||
Owen Rudge
|
||||
Pat Notz
|
||||
Patrick Rohr
|
||||
Paul Cercueil
|
||||
Paul Smith
|
||||
Pavel Geiger
|
||||
Paweล Benetkiewicz
|
||||
PerfectCarl
|
||||
Peter Bruin
|
||||
Peter Hartley
|
||||
Peter Jonas
|
||||
Peter Kolbus
|
||||
Peter Waller
|
||||
Piet Van Reepingen
|
||||
PMheart
|
||||
Randolph R. Settgast
|
||||
Randolph Settgast
|
||||
RaveTheTadpole
|
||||
Richard Maxwell
|
||||
Ricky Lopez
|
||||
Roland Schulz
|
||||
Roman Gordienko
|
||||
Ryan Maxwell
|
||||
Samish Chandra Kolli
|
||||
Samish Kolli
|
||||
Scott Bilas
|
||||
Sebastian Andersson
|
||||
S. Gilles
|
||||
Shazron Abdullah
|
||||
Siddharth Kannan
|
||||
Slรกvek Banko
|
||||
Spark-NF
|
||||
Stefan Koch
|
||||
Stefan Nunninger
|
||||
Stephen Gilles
|
||||
Steven Lee
|
||||
Suhaib Ishaque
|
||||
t-bltg
|
||||
Tim Hรผtz
|
||||
Timotheus Pokorra
|
||||
Todd Richmond
|
||||
Twigz
|
||||
U-RDEC\ParkerJS
|
||||
Vadim Zeitlin
|
||||
Viktor Kireev
|
||||
Vincent Rouilleฬ
|
||||
Vojtฤch Balรญk
|
||||
Vyacheslav Shegai
|
||||
Waldir Pimenta
|
||||
Yannick Bรผhler
|
@ -1,556 +0,0 @@
|
||||
cmake_minimum_required(VERSION 3.2)
|
||||
|
||||
project(uncrustify)
|
||||
|
||||
if("${PROJECT_SOURCE_DIR}" STREQUAL "${PROJECT_BINARY_DIR}")
|
||||
message(FATAL_ERROR "
|
||||
In-source builds are not supported, please remove the `CMakeFiles'
|
||||
folder and `CMakeCache.txt', and create a folder for the build:
|
||||
mkdir build; cd build; cmake ..
|
||||
")
|
||||
endif()
|
||||
|
||||
include(CheckCXXCompilerFlag)
|
||||
include(CheckIncludeFileCXX)
|
||||
include(CheckSymbolExists)
|
||||
include(CheckCXXSymbolExists)
|
||||
include(CheckTypeSize)
|
||||
include(CTest)
|
||||
|
||||
if( ${CMAKE_VERSION} VERSION_LESS "3.12" )
|
||||
find_package( PythonInterp )
|
||||
if( NOT PYTHON_EXECUTABLE )
|
||||
message( FATAL_ERROR "Python is required, but was not found on your system" )
|
||||
endif()
|
||||
else( )
|
||||
find_package(Python3 REQUIRED)
|
||||
set(PYTHON_EXECUTABLE ${Python3_EXECUTABLE})
|
||||
endif()
|
||||
|
||||
#
|
||||
# Check compiler flags
|
||||
#
|
||||
if(MSVC)
|
||||
add_definitions(/D_CRT_SECURE_NO_WARNINGS /D_CRT_NONSTDC_NO_WARNINGS /wd4267)
|
||||
add_definitions(/utf-8)
|
||||
elseif(CMAKE_COMPILER_IS_GNUCXX)
|
||||
set(gcc_warning_flags
|
||||
-Wall
|
||||
-Wextra
|
||||
-Wshadow
|
||||
-Wpointer-arith
|
||||
-Wcast-qual
|
||||
-Wcast-align
|
||||
-Wc++11-extensions
|
||||
)
|
||||
foreach(flag ${gcc_warning_flags})
|
||||
string(REGEX REPLACE "[^a-zA-Z0-9]+" "_" flag_var "CXXFLAG_${flag}")
|
||||
CHECK_CXX_COMPILER_FLAG("${flag}" ${flag_var})
|
||||
if(${flag_var})
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
|
||||
endif()
|
||||
unset(flag_var)
|
||||
endforeach()
|
||||
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-missing-field-initializers")
|
||||
endif()
|
||||
unset(gcc_warning_flags)
|
||||
elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
|
||||
endif()
|
||||
|
||||
set(CMAKE_CXX_STANDARD 11)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED YES)
|
||||
|
||||
if(ENABLE_SANITIZER)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O1 -fno-omit-frame-pointer -fsanitize=${ENABLE_SANITIZER}")
|
||||
endif()
|
||||
|
||||
#set(UNCRUSTIFY_SEPARATE_TESTS "True")
|
||||
|
||||
include_directories(
|
||||
${PROJECT_BINARY_DIR}/src
|
||||
${PROJECT_SOURCE_DIR}/src
|
||||
${PROJECT_BINARY_DIR}
|
||||
)
|
||||
|
||||
#
|
||||
# Determine config
|
||||
#
|
||||
if(WIN32)
|
||||
# Windows builds use src/windows_compat.h instead of config.h
|
||||
else()
|
||||
# Generate config.h
|
||||
set(avail_headers "")
|
||||
|
||||
set(headers
|
||||
inttypes.h
|
||||
memory.h
|
||||
stdint.h
|
||||
stdlib.h
|
||||
strings.h
|
||||
string.h
|
||||
sys/stat.h
|
||||
sys/types.h
|
||||
unistd.h
|
||||
utime.h
|
||||
)
|
||||
foreach(header ${headers})
|
||||
string(TOUPPER "${header}" header_uc)
|
||||
string(REGEX REPLACE "[^A-Z0-9_]" "_" include_var "HAVE_${header_uc}")
|
||||
check_include_file_cxx("${header}" ${include_var})
|
||||
if(${include_var})
|
||||
list(APPEND avail_headers ${header})
|
||||
endif()
|
||||
unset(include_var)
|
||||
unset(header_uc)
|
||||
endforeach()
|
||||
unset(headers)
|
||||
|
||||
check_include_file("stdbool.h" HAVE_STDBOOL_H)
|
||||
|
||||
set(symbols
|
||||
memset
|
||||
strcasecmp
|
||||
strchr
|
||||
strdup
|
||||
strerror
|
||||
strtol
|
||||
strtoul
|
||||
)
|
||||
foreach(symbol ${symbols})
|
||||
string(TOUPPER "${symbol}" symbol_uc)
|
||||
string(REGEX REPLACE "[^A-Z0-9_]" "_" symbol_var "HAVE_${symbol_uc}")
|
||||
check_cxx_symbol_exists("${symbol}" "${avail_headers}" ${symbol_var})
|
||||
unset(symbol_var)
|
||||
unset(symbol_uc)
|
||||
endforeach()
|
||||
unset(symbols)
|
||||
|
||||
unset(avail_headers)
|
||||
|
||||
check_type_size(_Bool _BOOL LANGUAGE C)
|
||||
|
||||
configure_file(src/config.h.in config.h @ONLY)
|
||||
endif()
|
||||
|
||||
#
|
||||
# Generate uncrustify_version.h
|
||||
#
|
||||
|
||||
set(UNCRUSTIFY_VERSION "0.75.0_f")
|
||||
|
||||
option(NoGitVersionString "Do not use make_version.py and git to build a version string" OFF)
|
||||
if(NoGitVersionString)
|
||||
configure_file(src/uncrustify_version.h.in uncrustify_version.h @ONLY)
|
||||
add_custom_target(generate_version_header) # Dummy target
|
||||
else()
|
||||
# Add target to generate version header;
|
||||
# do this every build to ensure git SHA is up to date
|
||||
add_custom_target(generate_version_header
|
||||
BYPRODUCTS "${PROJECT_BINARY_DIR}/uncrustify_version.h"
|
||||
COMMAND
|
||||
${CMAKE_COMMAND}
|
||||
-D PYTHON_EXECUTABLE:STRING=${PYTHON_EXECUTABLE}
|
||||
-D SOURCE_DIR:PATH="${PROJECT_SOURCE_DIR}"
|
||||
-D INPUT:PATH="${PROJECT_SOURCE_DIR}/src/uncrustify_version.h.in"
|
||||
-D OUTPUT:PATH="${PROJECT_BINARY_DIR}/uncrustify_version.h"
|
||||
-D UNCRUSTIFY_VERSION:STRING="${UNCRUSTIFY_VERSION}"
|
||||
-P ${PROJECT_SOURCE_DIR}/cmake/GenerateVersionHeader.cmake
|
||||
COMMENT "Generating version header"
|
||||
)
|
||||
set_source_files_properties(
|
||||
"${PROJECT_BINARY_DIR}/uncrustify_version.h"
|
||||
PROPERTIES GENERATED TRUE
|
||||
)
|
||||
endif()
|
||||
|
||||
#
|
||||
# Generate token_names.h
|
||||
#
|
||||
add_custom_command(
|
||||
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/token_names.h"
|
||||
COMMAND ${CMAKE_COMMAND}
|
||||
"-Dsrc_file=${PROJECT_SOURCE_DIR}/src/token_enum.h"
|
||||
"-Ddst_file=${CMAKE_CURRENT_BINARY_DIR}/token_names.h"
|
||||
-P "${PROJECT_SOURCE_DIR}/cmake/GenerateTokenNames.cmake"
|
||||
MAIN_DEPENDENCY src/token_enum.h
|
||||
COMMENT "Generating token_names.h"
|
||||
)
|
||||
|
||||
# Set up commands for generated source files
|
||||
function(py_gen OUTPUT SCRIPT INPUT)
|
||||
set(out "${PROJECT_BINARY_DIR}/src/${OUTPUT}")
|
||||
set(deps "${PROJECT_SOURCE_DIR}/src/${INPUT}")
|
||||
get_filename_component(outdir "${out}" DIRECTORY)
|
||||
foreach(arg IN LISTS ARGN)
|
||||
if (IS_ABSOLUTE "${arg}")
|
||||
list(APPEND deps "${arg}")
|
||||
else()
|
||||
list(APPEND deps "${PROJECT_SOURCE_DIR}/src/${arg}")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT "${out}"
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory "${outdir}"
|
||||
COMMAND ${PYTHON_EXECUTABLE}
|
||||
"${PROJECT_SOURCE_DIR}/scripts/${SCRIPT}"
|
||||
"${out}"
|
||||
${deps}
|
||||
DEPENDS ${deps} "${PROJECT_SOURCE_DIR}/scripts/${SCRIPT}"
|
||||
MAIN_DEPENDENCY src/${INPUT}
|
||||
COMMENT "Generating ${OUTPUT}"
|
||||
)
|
||||
endfunction()
|
||||
|
||||
py_gen(punctuator_table.h
|
||||
make_punctuator_table.py
|
||||
symbols_table.h
|
||||
)
|
||||
|
||||
py_gen(options.cpp
|
||||
make_options.py
|
||||
options.h
|
||||
options.cpp.in
|
||||
)
|
||||
|
||||
py_gen(option_enum.h
|
||||
make_option_enum.py
|
||||
option.h
|
||||
option_enum.h.in
|
||||
)
|
||||
|
||||
py_gen(option_enum.cpp
|
||||
make_option_enum.py
|
||||
option.h
|
||||
option_enum.cpp.in
|
||||
)
|
||||
|
||||
py_gen(../etc/uncrustify.xml
|
||||
make_katehl.py
|
||||
../etc/uncrustify.xml.in
|
||||
"${PROJECT_BINARY_DIR}/uncrustify_version.h"
|
||||
options.h
|
||||
option.h
|
||||
token_enum.h
|
||||
)
|
||||
|
||||
#
|
||||
# Uncrustify
|
||||
#
|
||||
set(uncrustify_sources
|
||||
src/align_add.cpp
|
||||
src/align_asm_colon.cpp
|
||||
src/align_assign.cpp
|
||||
src/align_braced_init_list.cpp
|
||||
src/align.cpp
|
||||
src/align_eigen_comma_init.cpp
|
||||
src/align_func_params.cpp
|
||||
src/align_func_proto.cpp
|
||||
src/align_init_brace.cpp
|
||||
src/align_left_shift.cpp
|
||||
src/align_log_al.cpp
|
||||
src/align_nl_cont.cpp
|
||||
src/align_oc_decl_colon.cpp
|
||||
src/align_oc_msg_colons.cpp
|
||||
src/align_oc_msg_spec.cpp
|
||||
src/align_preprocessor.cpp
|
||||
src/align_same_func_call_params.cpp
|
||||
src/align_stack.cpp
|
||||
src/align_struct_initializers.cpp
|
||||
src/align_tab_column.cpp
|
||||
src/align_tools.cpp
|
||||
src/align_trailing_comments.cpp
|
||||
src/align_typedefs.cpp
|
||||
src/align_var_def_brace.cpp
|
||||
src/args.cpp
|
||||
src/backup.cpp
|
||||
src/brace_cleanup.cpp
|
||||
src/braces.cpp
|
||||
src/calculate_closing_brace_position.cpp
|
||||
src/chunk.cpp
|
||||
src/ChunkStack.cpp
|
||||
src/combine.cpp
|
||||
src/combine_fix_mark.cpp
|
||||
src/combine_labels.cpp
|
||||
src/combine_tools.cpp
|
||||
src/combine_skip.cpp
|
||||
src/compat_posix.cpp
|
||||
src/compat_win32.cpp
|
||||
src/cs_top_is_question.cpp
|
||||
src/detect.cpp
|
||||
src/enum_cleanup.cpp
|
||||
src/EnumStructUnionParser.cpp
|
||||
src/EnumStructUnionParser.h
|
||||
src/flag_braced_init_list.cpp
|
||||
src/flag_decltype.cpp
|
||||
src/flag_parens.cpp
|
||||
src/frame_list.cpp
|
||||
src/indent.cpp
|
||||
src/keywords.cpp
|
||||
src/lang_pawn.cpp
|
||||
src/language_tools.cpp
|
||||
src/logger.cpp
|
||||
src/logmask.cpp
|
||||
src/log_rules.cpp
|
||||
src/md5.cpp
|
||||
src/newlines.cpp
|
||||
src/option.cpp
|
||||
src/options_for_QT.cpp
|
||||
src/output.cpp
|
||||
src/parameter_pack_cleanup.cpp
|
||||
src/parens.cpp
|
||||
src/parent_for_pp.cpp
|
||||
src/ParseFrame.cpp
|
||||
src/pcf_flags.cpp
|
||||
src/punctuators.cpp
|
||||
src/quick_align_again.cpp
|
||||
src/remove_duplicate_include.cpp
|
||||
src/remove_extra_returns.cpp
|
||||
src/semicolons.cpp
|
||||
src/sorting.cpp
|
||||
src/space.cpp
|
||||
src/tokenize_cleanup.cpp
|
||||
src/tokenize.cpp
|
||||
src/uncrustify.cpp
|
||||
src/uncrustify_emscripten.cpp
|
||||
src/uncrustify_types.cpp
|
||||
src/unc_text.cpp
|
||||
src/unc_tools.cpp
|
||||
src/unicode.cpp
|
||||
src/universalindentgui.cpp
|
||||
src/width.cpp
|
||||
${PROJECT_BINARY_DIR}/src/options.cpp
|
||||
${PROJECT_BINARY_DIR}/src/option_enum.cpp
|
||||
)
|
||||
|
||||
set(uncrustify_headers
|
||||
src/add_space_table.h
|
||||
src/align_add.h
|
||||
src/align_asm_colon.h
|
||||
src/align_assign.h
|
||||
src/align_braced_init_list.h
|
||||
src/align_func_params.h
|
||||
src/align_func_proto.h
|
||||
src/align.h
|
||||
src/align_eigen_comma_init.h
|
||||
src/align_init_brace.h
|
||||
src/align_left_shift.h
|
||||
src/align_log_al.h
|
||||
src/align_nl_cont.h
|
||||
src/align_oc_decl_colon.h
|
||||
src/align_oc_msg_colons.h
|
||||
src/align_oc_msg_spec.h
|
||||
src/align_preprocessor.h
|
||||
src/align_same_func_call_params.h
|
||||
src/align_stack.h
|
||||
src/align_struct_initializers.h
|
||||
src/align_tab_column.h
|
||||
src/align_tools.h
|
||||
src/align_trailing_comments.h
|
||||
src/align_typedefs.h
|
||||
src/align_var_def_brace.h
|
||||
src/args.h
|
||||
src/backup.h
|
||||
src/base_types.h
|
||||
src/brace_cleanup.h
|
||||
src/braces.h
|
||||
src/calculate_closing_brace_position.h
|
||||
src/char_table.h
|
||||
src/chunk.h
|
||||
src/ChunkStack.h
|
||||
src/combine.h
|
||||
src/combine_fix_mark.h
|
||||
src/combine_labels.h
|
||||
src/combine_skip.h
|
||||
src/combine_tools.h
|
||||
src/compat.h
|
||||
src/cs_top_is_question.h
|
||||
src/detect.h
|
||||
src/enum_cleanup.h
|
||||
src/enum_flags.h
|
||||
src/error_types.h
|
||||
src/flag_braced_init_list.h
|
||||
src/flag_decltype.h
|
||||
src/flag_parens.h
|
||||
src/frame_list.h
|
||||
src/indent.h
|
||||
src/keywords.h
|
||||
src/lang_pawn.h
|
||||
src/language_tools.h
|
||||
src/ListManager.h
|
||||
src/logger.h
|
||||
src/log_levels.h
|
||||
src/logmask.h
|
||||
src/log_rules.h
|
||||
src/md5.h
|
||||
src/newlines.h
|
||||
src/option.h
|
||||
src/options_for_QT.h
|
||||
src/options.h
|
||||
src/output.h
|
||||
src/parameter_pack_cleanup.h
|
||||
src/parens.h
|
||||
src/parent_for_pp.h
|
||||
src/ParseFrame.h
|
||||
src/pcf_flags.h
|
||||
src/prototypes.h
|
||||
src/punctuators.h
|
||||
src/quick_align_again.h
|
||||
src/remove_duplicate_include.h
|
||||
src/remove_extra_returns.h
|
||||
src/semicolons.h
|
||||
src/sorting.h
|
||||
src/space.h
|
||||
src/symbols_table.h
|
||||
src/token_enum.h
|
||||
src/tokenize_cleanup.h
|
||||
src/tokenize.h
|
||||
src/unc_ctype.h
|
||||
src/uncrustify.h
|
||||
src/uncrustify_limits.h
|
||||
src/uncrustify_types.h
|
||||
src/unc_text.h
|
||||
src/unc_tools.h
|
||||
src/unicode.h
|
||||
src/universalindentgui.h
|
||||
src/width.h
|
||||
src/windows_compat.h
|
||||
${PROJECT_BINARY_DIR}/src/option_enum.h
|
||||
${PROJECT_BINARY_DIR}/uncrustify_version.h
|
||||
)
|
||||
|
||||
set(uncrustify_docs
|
||||
"${PROJECT_SOURCE_DIR}/AUTHORS"
|
||||
"${PROJECT_SOURCE_DIR}/BUGS"
|
||||
"${PROJECT_SOURCE_DIR}/ChangeLog"
|
||||
"${PROJECT_SOURCE_DIR}/COPYING"
|
||||
"${PROJECT_SOURCE_DIR}/HELP"
|
||||
"${PROJECT_SOURCE_DIR}/README.md"
|
||||
)
|
||||
|
||||
add_executable(uncrustify ${uncrustify_sources} ${uncrustify_headers})
|
||||
add_dependencies(uncrustify generate_version_header)
|
||||
|
||||
if(CMAKE_VERSION VERSION_LESS 2.8.10)
|
||||
if(CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE)
|
||||
# Multi-configuration or build type set
|
||||
set_property(TARGET uncrustify APPEND PROPERTY
|
||||
COMPILE_DEFINITIONS_DEBUG DEBUG
|
||||
)
|
||||
else()
|
||||
# Single-configuration with no build type set
|
||||
set_property(TARGET uncrustify APPEND PROPERTY
|
||||
COMPILE_DEFINITIONS DEBUG
|
||||
)
|
||||
endif()
|
||||
else()
|
||||
set_property(TARGET uncrustify APPEND PROPERTY
|
||||
COMPILE_DEFINITIONS $<$<OR:$<CONFIG:Debug>,$<CONFIG:>>:DEBUG>
|
||||
)
|
||||
endif()
|
||||
|
||||
#
|
||||
# Generate uncrustify.1
|
||||
#
|
||||
configure_file(man/uncrustify.1.in uncrustify.1 @ONLY)
|
||||
|
||||
#
|
||||
# Generate uncrustify.xml (katepart highlighting file)
|
||||
#
|
||||
add_custom_target(katehl
|
||||
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/etc/uncrustify.xml
|
||||
)
|
||||
|
||||
#
|
||||
# Tests
|
||||
#
|
||||
if(BUILD_TESTING)
|
||||
enable_testing()
|
||||
add_subdirectory(tests)
|
||||
endif()
|
||||
|
||||
#
|
||||
# Coverage
|
||||
#
|
||||
OPTION(ENABLE_CODECOVERAGE "Enable code coverage testing support")
|
||||
if(ENABLE_CODECOVERAGE)
|
||||
set(CODECOVERAGE_DEPENDS uncrustify)
|
||||
include(${CMAKE_SOURCE_DIR}/cmake/CodeCoverage.cmake)
|
||||
endif(ENABLE_CODECOVERAGE)
|
||||
|
||||
#
|
||||
# Build command to run uncrustify on its own sources
|
||||
#
|
||||
add_custom_target(format-sources)
|
||||
foreach(source IN LISTS uncrustify_sources uncrustify_headers)
|
||||
get_filename_component(source_name ${source} NAME)
|
||||
add_custom_target(format-${source_name}
|
||||
COMMAND uncrustify
|
||||
-c forUncrustifySources.cfg
|
||||
-lCPP --no-backup ${source}
|
||||
COMMENT "Formatting ${source}"
|
||||
WORKING_DIRECTORY ${uncrustify_SOURCE_DIR}
|
||||
)
|
||||
add_dependencies(format-sources format-${source_name})
|
||||
endforeach()
|
||||
|
||||
#
|
||||
# Package
|
||||
#
|
||||
set(CPACK_PACKAGE_NAME "uncrustify")
|
||||
set(CPACK_PACKAGE_VERSION "${UNCRUSTIFY_VERSION}")
|
||||
set(CPACK_PACKAGE_VENDOR "Ben Gardner")
|
||||
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Code beautifier")
|
||||
set(CPACK_PACKAGE_DESCRIPTION_FILE "${PROJECT_SOURCE_DIR}/README.md")
|
||||
set(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/COPYING")
|
||||
set(CPACK_RESOURCE_FILE_README "${PROJECT_SOURCE_DIR}/README.md")
|
||||
set(CPACK_SOURCE_IGNORE_FILES "/\\\\.git/;/\\\\.hg/;/tests/results/;/build.*/")
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
||||
set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY FALSE)
|
||||
set(CPACK_GENERATOR "ZIP")
|
||||
endif()
|
||||
include(CPack)
|
||||
|
||||
#
|
||||
# Install
|
||||
#
|
||||
if(MSVC)
|
||||
install(TARGETS uncrustify DESTINATION ".")
|
||||
install(FILES ${uncrustify_docs}
|
||||
DESTINATION "."
|
||||
)
|
||||
install(FILES "${PROJECT_SOURCE_DIR}/documentation/htdocs/index.html"
|
||||
DESTINATION "doc"
|
||||
)
|
||||
install(DIRECTORY "${PROJECT_SOURCE_DIR}/etc/"
|
||||
DESTINATION "cfg"
|
||||
FILES_MATCHING PATTERN "*.cfg"
|
||||
)
|
||||
else()
|
||||
include(GNUInstallDirs)
|
||||
install(TARGETS uncrustify
|
||||
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
|
||||
)
|
||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/uncrustify.1"
|
||||
DESTINATION "${CMAKE_INSTALL_MANDIR}/man1"
|
||||
)
|
||||
install(DIRECTORY "${PROJECT_SOURCE_DIR}/etc/"
|
||||
DESTINATION "${CMAKE_INSTALL_DOCDIR}/examples"
|
||||
FILES_MATCHING PATTERN "*.cfg"
|
||||
)
|
||||
install(FILES ${uncrustify_docs}
|
||||
DESTINATION "${CMAKE_INSTALL_DOCDIR}"
|
||||
)
|
||||
endif()
|
||||
|
||||
#
|
||||
# Uninstall
|
||||
#
|
||||
add_custom_target(uninstall "${CMAKE_COMMAND}" -P "${PROJECT_SOURCE_DIR}/cmake/uninstall.cmake")
|
||||
|
||||
#
|
||||
# add to build the compile_commands.json file, to be used by clang-tidy
|
||||
#
|
||||
set(CMAKE_EXPORT_COMPILE_COMMANDS "ON" CACHE BOOL "to create the compile_commands.json file" FORCE)
|
@ -1,11 +0,0 @@
|
||||
* @gmaurel @mwoehlke-kitware @micheleCTDEAdmin
|
||||
|
||||
.editorconfig @mihaipopescu
|
||||
|
||||
# CI
|
||||
.travis.yml @mihaipopescu
|
||||
appveyor.yml @mihaipopescu
|
||||
|
||||
# emscripten
|
||||
#/emscripten/ @CDanU
|
||||
#/src/uncrustify_emscripten.cpp @CDanU
|
File diff suppressed because it is too large
Load Diff
@ -1,26 +0,0 @@
|
||||
2016-04-25
|
||||
|
||||
While a line is indented, the comment at the end of the line stays at the original column.
|
||||
|
||||
If we have:
|
||||
else if ((pc->type == CT_FUNC_CLASS_DEF) ||
|
||||
(pc->type == CT_FUNC_DEF) ||
|
||||
(pc->type == CT_FUNC_CLASS_PROTO) ||
|
||||
(pc->type == CT_FUNC_PROTO))
|
||||
{ // guy 2016-04-16
|
||||
|
||||
where the brace { is at new line with a comment.
|
||||
The option nl_elseif_brace = remove
|
||||
gives:
|
||||
else if ((pc->type == CT_FUNC_CLASS_DEF) ||
|
||||
(pc->type == CT_FUNC_DEF) ||
|
||||
(pc->type == CT_FUNC_CLASS_PROTO) ||
|
||||
(pc->type == CT_FUNC_PROTO)) { // guy 2016-04-16
|
||||
If using at new the same option again with a new value
|
||||
nl_elseif_brace = add
|
||||
is not able to reconstruct the original source. The comment has changed the line:
|
||||
else if ((pc->type == CT_FUNC_CLASS_DEF) ||
|
||||
(pc->type == CT_FUNC_DEF) ||
|
||||
(pc->type == CT_FUNC_CLASS_PROTO) ||
|
||||
(pc->type == CT_FUNC_PROTO)) // guy 2016-04-16
|
||||
{
|
@ -1,389 +0,0 @@
|
||||
[![AppVeyor](https://img.shields.io/appveyor/ci/uncrustify/uncrustify/master.svg?style=flat-square&label=Windows)](https://ci.appveyor.com/project/uncrustify/uncrustify)
|
||||
[![Coverage Status](https://coveralls.io/repos/github/uncrustify/uncrustify/badge.svg?branch=master)](https://coveralls.io/github/uncrustify/uncrustify?branch=master)
|
||||
<a href="#"><img src="https://img.shields.io/badge/C++-11-blue.svg?style=flat-square"></a>
|
||||
|
||||
---------------------------
|
||||
|
||||
# Uncrustify
|
||||
A source code beautifier for C, C++, C#, ObjectiveC, D, Java, Pawn and VALA
|
||||
|
||||
## Features
|
||||
* Highly configurable - 808 configurable options as of version 0.75.0
|
||||
- <details><summary>add/remove spaces</summary>
|
||||
|
||||
- `sp_before_sparen`: _Add or remove space before '(' of 'if', 'for', 'switch', 'while', etc._
|
||||
- `sp_compare`: _Add or remove space around compare operator '<', '>', '==', etc_
|
||||
</details>
|
||||
|
||||
- <details><summary>add/remove newlines</summary>
|
||||
|
||||
- `nl_if_brace`: _Add or remove newline between 'if' and '{'_
|
||||
- `nl_brace_while`: _Add or remove newline between '}' and 'while' of 'do' statement_
|
||||
</details>
|
||||
|
||||
- <details><summary>add/remove blanklines</summary>
|
||||
|
||||
- `eat_blanks_before_close_brace`: _Whether to remove blank lines before '}'_
|
||||
- `nl_max`: _The maximum consecutive newlines (3 = 2 blank lines)_
|
||||
</details>
|
||||
|
||||
- <details><summary>indent code</summary>
|
||||
|
||||
- `indent_switch_case`: _indent_switch_case: Spaces to indent 'case' from 'switch'_
|
||||
- `indent_class_colon`: _Whether to indent the stuff after a leading base class colon_
|
||||
</details>
|
||||
|
||||
- <details><summary>align code</summary>
|
||||
|
||||
- `align_func_params`: _Align variable definitions in prototypes and functions_
|
||||
- `align_struct_init_span`: _The span for aligning struct initializer values (0=don't align)_
|
||||
</details>
|
||||
|
||||
- <details><summary>modify code</summary>
|
||||
|
||||
- `mod_full_brace_for`: _Add or remove braces on single-line 'for' statement_
|
||||
- `mod_paren_on_return`: _Add or remove unnecessary paren on 'return' statement_
|
||||
</details>
|
||||
|
||||
Here is an example [configuration file](https://raw.githubusercontent.com/uncrustify/uncrustify/master/documentation/htdocs/ben.cfg.txt),
|
||||
and here is a [before](https://raw.githubusercontent.com/uncrustify/uncrustify/master/documentation/htdocs/examples/c-1.in.c)
|
||||
and [after](https://raw.githubusercontent.com/uncrustify/uncrustify/master/documentation/htdocs/examples/c-1.out.c)
|
||||
C source example.
|
||||
That should give you a pretty good idea of what Uncrustify can do.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
|
||||
## Binaries
|
||||
Pre compiled binaries for Windows can be downloaded [here](https://sourceforge.net/projects/uncrustify/files/).
|
||||
|
||||
## Build
|
||||
[Python](https://www.python.org/) is an "interpreted high-level programming language for general-purpose programming", for this project it is needed to extend the capabilities of CMake.
|
||||
|
||||
[CMake](https://cmake.org/) is a tool that generates build systems
|
||||
(Makefiles, Visual Studio project files, Xcode project files and others).
|
||||
|
||||
To generate a build system for Uncrustify using CMake, create a build
|
||||
folder and run CMake from it:
|
||||
|
||||
```bash
|
||||
$ mkdir build
|
||||
$ cd build
|
||||
$ cmake ..
|
||||
```
|
||||
(Use `cmake -G Xcode ..` for Xcode)
|
||||
|
||||
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:
|
||||
|
||||
```bash
|
||||
$ 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:
|
||||
|
||||
```bash
|
||||
$ 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 are Makefiles. You can
|
||||
build the Release configuration of Uncrustify (from the build folder) with:
|
||||
|
||||
```bash
|
||||
$ 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 are Visual Studios 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`.
|
||||
|
||||
|
||||
## Bugs
|
||||
Post any bugs to the issue tracker found on the projects 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
|
||||
|
||||
More about this is in the [ISSUE_TEMPLATE](https://github.com/uncrustify/uncrustify/blob/master/.github/ISSUE_TEMPLATE)
|
||||
|
||||
|
||||
### Known problems
|
||||
[Look at the Wiki](https://github.com/uncrustify/uncrustify/wiki/Known-Problems)
|
||||
|
||||
|
||||
## Which repositories have uncrustify?
|
||||
[Look here](https://repology.org/metapackage/uncrustify/versions)
|
||||
|
||||
|
||||
## Contribute
|
||||
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:
|
||||
|
||||
- __Patches for Objective-C support__. We really need someone who knows
|
||||
this language as it has more than plenty open issues. A good starting
|
||||
point would be to integrate changes made in the
|
||||
[Unity fork](https://github.com/Unity-Technologies/uncrustify/tree/fixes/c-oc-java)
|
||||
- Test Java support and provide feedback (or patches!)
|
||||
- Test Embedded SQL to see what works
|
||||
- A logo of some sort
|
||||
- Anything else that you want to do to make it better?
|
||||
|
||||
### A note about pull requests
|
||||
Firstly take a look at the [CONTRIBUTING.md](https://github.com/uncrustify/uncrustify/blob/master/CONTRIBUTING.md)
|
||||
|
||||
Currently we have two continuous integration systems that test your PRs,
|
||||
TravisCI and Appveyor.
|
||||
Tested are the test cases, the formatting of the code base and
|
||||
the output of the command line options.
|
||||
|
||||
Test cases can be found in the `tests/` directory. Every file ending with
|
||||
`.test` is a test set. Inside each line with these components is a
|
||||
single test: `testNr[!] testConfigFileName testInputFileName [lang]`
|
||||
|
||||
The configuration file `testConfigFileName` has to be located inside `tests/config`,
|
||||
the input file `testInputFileName` inside `tests/input/<testSetName>/`,
|
||||
and expected results file inside the `tests/expected/<testSetName>/`
|
||||
directory.
|
||||
Expected results have the following naming convention: `testNr-testInputFileName`.
|
||||
|
||||
Optionally a `!` can follow the `testNr` to enable a custom rerun
|
||||
configuration.
|
||||
Rerun configurations need to be named like this:
|
||||
`testConfigFileName`(without extension)+`.rerun`+`.extension`
|
||||
|
||||
Also, optionally a language for the input can be provided with `lang`.
|
||||
|
||||
The codebase has to be formatted by the options set up in
|
||||
`forUncrustifySources.cfg`. Failing to format the sources correctly will
|
||||
cause TravisCI build failures.
|
||||
|
||||
The Command line interface (CLI) output is tested by the
|
||||
`test_cli_options.sh` script. It is located inside of `tests/cli/` and operates
|
||||
on the subdirectories of that folder.
|
||||
|
||||
If a PR is altering the CLI output, files inside those directories might
|
||||
need to be manually updated. This often happens when options are
|
||||
added, removed or altered. Keep in mind that the version string line
|
||||
(example: `# Uncrustify-0.69.0_f`) of outputs from commands like
|
||||
`--show-config` should be replaced with a blank line.
|
||||
|
||||
### Debugging
|
||||
|
||||
The first method is to use uncrustify itself to get debug informations.
|
||||
Using:
|
||||
```.txt
|
||||
uncrustify -c myExample.cfg -f myExample.cpp -p myExample.p -L A 2>myExample.A
|
||||
```
|
||||
you get two files for the first informations.
|
||||
The p-file gives you details of the parsing process and indentation.
|
||||
```.txt
|
||||
# Line Tag Parent Columns Br/Lvl/pp Flag Nl Text
|
||||
# 1> CLASS[ NONE][ 1/ 1/ 6/ 0][0/0/0][ 10070000][0-0] class
|
||||
# 1> TYPE[ CLASS][ 7/ 7/ 14/ 1][0/0/0][ 10000000][0-0] Capteur
|
||||
# 1> BRACE_OPEN[ CLASS][ 15/ 15/ 16/ 1][0/0/0][ 100000400][0-0] {
|
||||
```
|
||||
|
||||
The A-file gives you many details about the run itself, where the process is running thru,
|
||||
which values have the most important variables.
|
||||
```.txt
|
||||
tokenize(2351): orig_line is 1, orig_col is 1, Text() 'class', type is CLASS, orig_col_end is 6
|
||||
tokenize(2351): orig_line is 1, orig_col is 7, Text() 'Capteur', type is WORD, orig_col_end is 14
|
||||
tokenize(2351): orig_line is 1, orig_col is 15, Text() '{', type is BRACE_OPEN, orig_col_end is 16
|
||||
```
|
||||
|
||||
You can also dump the parsing information of each formatting step using the 'dump steps' option.
|
||||
```.txt
|
||||
uncrustify -c myExample.cfg -f myExample.cpp -ds dump
|
||||
```
|
||||
This will create a series of 'dump_nnn.log' files, each containing the parsing information at
|
||||
specific points of the formatting process ('dump_000.log' will list the formatting options in use).
|
||||
|
||||
You can combine this option with -p and -L to get a lot of detailed debugging information.
|
||||
```.txt
|
||||
uncrustify -c myExample.cfg -f myExample.cpp -p myExample.p -L A 2>myExample.A -ds dump
|
||||
```
|
||||
|
||||
It might be useful to add some code lines to see where something is happening.
|
||||
Use the package `unc_tools`.
|
||||
Remove the comment at line:
|
||||
```.cpp
|
||||
#define DEVELOP_ONLY
|
||||
```
|
||||
Import the package:
|
||||
```.cpp
|
||||
#include "unc_tools.h"
|
||||
```
|
||||
Add at some places the line:
|
||||
```.cpp
|
||||
prot_the_line(__LINE__, 6, 0);
|
||||
```
|
||||
Compile again with DEBUG option.
|
||||
|
||||
|
||||
|
||||
### How to add an option
|
||||
|
||||
If you need a new option, there are a few steps to follow.
|
||||
Take as example the option `sp_trailing_ret_t`
|
||||
|
||||
First define the option:
|
||||
- Insert the code below to the file src/options.h
|
||||
_NOTE:
|
||||
This file is processed by make_options.py, and must conform to a particular
|
||||
format. Option groups are marked by '//begin ' (in upper case; this example
|
||||
is lower case to prevent being considered a region marker for code folding)
|
||||
followed by the group description. Options consist of two lines of
|
||||
declaration preceded by one or more lines of C++ comments. The comments form
|
||||
the option description and are taken verbatim, aside from stripping the
|
||||
leading '// '. Only comments immediately preceding an option declaration,
|
||||
with no blank lines, are taken as part of the description, so a blank line
|
||||
may be used to separate notations from a description.
|
||||
An option declaration is 'extern TYPE\nNAME;', optionally followed by
|
||||
' // = VALUE' if the option has a default value that is different from the
|
||||
default-constructed value type of the option. The 'VALUE' must be valid C++
|
||||
code, and is taken verbatim as an argument when creating the option's
|
||||
instantiation. Note also that the line break, as shown, is required.
|
||||
_
|
||||
```.cpp
|
||||
// Add or remove space around trailing return operator '->'.
|
||||
extern Option<iarf_e>
|
||||
sp_trailing_ret_t;
|
||||
```
|
||||
- Insert the code below to the file src/space.cpp
|
||||
```.cpp
|
||||
if (chunk_is_token(first, CT_TRAILING_RET_T))
|
||||
{
|
||||
// Add or remove space around trailing return operator '->'.
|
||||
log_rule("sp_trailing_ret_t");
|
||||
return(options::sp_trailing_ret_t());
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
### Portability
|
||||
|
||||
We are pretty sure that nothing OS-specific is used in the code base.
|
||||
The software has been previously tested on the following operating systems:
|
||||
- Linux
|
||||
- QNX
|
||||
- OS X
|
||||
- FreeBSD, NetBSD, OpenBSD
|
||||
- Sun Solaris 9
|
||||
- Windows (binary available)
|
||||
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
|
||||
## Running the program
|
||||
|
||||
__NOTE__ This application works reasonably well but it has bugs. Do __not__
|
||||
apply it on your whole codebase without checking the results!
|
||||
|
||||
Here are ways to run it:
|
||||
```
|
||||
$ uncrustify -c mystyle.cfg -f somefile.c -o somefile.c.unc
|
||||
$ uncrustify -c mystyle.cfg -f somefile.c > somefile.c.unc
|
||||
$ uncrustify -c mystyle.cfg somefile.c
|
||||
$ uncrustify -c mystyle.cfg --no-backup somefile.c
|
||||
$ uncrustify -c mystyle.cfg *.c
|
||||
$ uncrustify -c mystyle.cfg --no-backup *.c
|
||||
```
|
||||
The `-c` flag selects the configuration file.
|
||||
The `-f` flag specifies the input file.
|
||||
The `-o` flag specifies the output file.
|
||||
If flag `-f` is used without flag `-o` the output will be send to `stdout`.
|
||||
|
||||
Alternatively multiple or single files that should be processed can be
|
||||
specified at the command end without flags.
|
||||
If the flag `--no-backup` is missing, every file is saved with the initial
|
||||
name and an additional suffix (can be changed with --suffix).
|
||||
|
||||
For more options descriptions call:
|
||||
```bash
|
||||
$ uncrustify -h
|
||||
```
|
||||
|
||||
## Configuring the program
|
||||
Uncrustify usually reads configuration files that are passed via the `-c`
|
||||
flag. If the flag is not provided Uncrustify will try to find a
|
||||
configuration file via the `UNCRUSTIFY_CONFIG` environment variable or a
|
||||
file with the name `.uncrustify.cfg` or `uncrustify.cfg` in your home folder.
|
||||
|
||||
To get a list of:
|
||||
- all available options use:
|
||||
```bash
|
||||
uncrustify --show-config
|
||||
```
|
||||
|
||||
- all available options in a usable configuration file format use:
|
||||
```bash
|
||||
uncrustify --update-config
|
||||
```
|
||||
|
||||
or
|
||||
|
||||
```bash
|
||||
uncrustify --update-config-with-doc
|
||||
```
|
||||
|
||||
As the names suggest both options can produce output that adds newly
|
||||
introduced options to your old configuration file. For this your old
|
||||
configuration file has to be passed via the `-c` flag:
|
||||
```bash
|
||||
uncrustify --update-config-with-doc -c path/to/your.cfg
|
||||
```
|
||||
|
||||
Example configuration files that can be used as a starting point can be
|
||||
found in the `etc/` directory (such as [ben.cfg](./etc/ben.cfg)).
|
||||
|
||||
Modify to your liking. Use a quality side-by-side diff tool to determine
|
||||
if the program did what you wanted. Repeat until your style is refined.
|
||||
|
||||
To ease the process a bit, some 3rd party tools are available:
|
||||
- [Universal Indent GUI](http://universalindent.sourceforge.net/) - A
|
||||
cross-platform graphical configuration file editor for many code
|
||||
beautifiers, including Uncrustify.
|
||||
- [uncrustify_config](https://github.com/CDanU/uncrustify_config) - A web
|
||||
configuration tool based on Uncrustify's emscripten interface.
|
||||
- [UncrustifyX](https://github.com/ryanmaxwell/UncrustifyX) - Uncrustify
|
||||
utility and documentation browser for Mac OS X
|
||||
|
||||
Under Windows:
|
||||
Uncrustify is a command-line tool, if you run it by double-clicking the
|
||||
executable, it will open a command prompt run the executable
|
||||
(which prints the help message), and then immediately close the window
|
||||
as uncrustify exits.
|
||||
|
||||
You can open the command prompt (which is an interactive terminal
|
||||
window that allows you to run commands without it closing as soon as
|
||||
they exit) and run uncrustify.exe there.
|
||||
|
||||
## Using uncrustify with vim
|
||||
Have a look [here](https://github.com/cofyc/vim-uncrustify)
|
||||
|
||||
## Using uncrustify with IntelliJ
|
||||
Have a look at https://plugins.jetbrains.com/plugin/17528-uncrustify
|