-
-
Save lqi/5358513 to your computer and use it in GitHub Desktop.
source ~/.bash_profile | |
hash oclint &> /dev/null | |
if [ $? -eq 1 ]; then | |
echo >&2 "oclint not found, analyzing stopped" | |
exit 1 | |
fi | |
cd ${TARGET_TEMP_DIR} | |
if [ ! -f compile_commands.json ]; then | |
echo "[*] compile_commands.json not found, possibly clean was performed" | |
echo "[*] starting xcodebuild to rebuild the project.." | |
# clean previous output | |
if [ -f xcodebuild.log ]; then | |
rm xcodebuild.log | |
fi | |
cd ${SRCROOT} | |
xcodebuild clean | |
#build xcodebuild.log | |
xcodebuild | tee ${TARGET_TEMP_DIR}/xcodebuild.log | |
#xcodebuild <options>| tee ${TARGET_TEMP_DIR}/xcodebuild.log | |
echo "[*] transforming xcodebuild.log into compile_commands.json..." | |
cd ${TARGET_TEMP_DIR} | |
#transform it into compile_commands.json | |
oclint-xcodebuild | |
echo "[*] copy compile_commands.json to the project root..." | |
cp ${TARGET_TEMP_DIR}/compile_commands.json ${SRCROOT}/compile_commands.json | |
fi | |
echo "[*] starting analyzing" | |
cd ${TARGET_TEMP_DIR} | |
oclint-json-compilation-database | sed 's/\(.*\.\m\{1,2\}:[0-9]*:[0-9]*:\)/\1 warning:/' |
You forgot to handle warnings in .h files to remove error messages. I don't understand how sed. Can you help me?
Any problem in this shell file? I used it but exception thrown at line two: source ~/.bash_profile --> not found?
Check out my fork, https://gist.github.com/1951FDG/8146422, it handles file names with spaces correctly (hopefully one day OCLint will support file names with spaces, oclint-json-compilation-database and oclint-xcodebuild still have issues handling spaces in path).
Check out my fork, https://gist.github.com/1951FDG/8146422, it fixes the exception thrown (it applies the file test below).
if [ -f ~/.bash_profile ]; then
source ~/.bash_profile
fi
Check out my fork, https://gist.github.com/1951FDG/8146422, it treats messages as warnings by default for a .c file, .m file or .mm file (as far as I know, OCLint does not produce messages for a .h file).
All of the commands that take filenames as arguments will fail if there's a space in the directory name. If a directory has a space, you'll need to use (for example)
xcodebuild | tee "${TARGET_TEMP_DIR}/xcodebuild.log"
.