A static source code analysis tool to improve quality and reduce defects for C, C++ and Objective-C

Related tags

Code Quality oclint
Overview

OCLint - https://oclint.org

GitHub Actions Status Coverage Status

OCLint is a static code analysis tool for improving quality and reducing defects by inspecting C, C++ and Objective-C code.

It looks for potential problems that aren't visible to compilers, for example:

  • Possible bugs - empty if/else/try/catch/finally statements
  • Unused code - unused local variables and parameters
  • Complicated code - high cyclomatic complexity, NPath complexity and high NCSS
  • Redundant code - redundant if statement and useless parentheses
  • Code smells - long method and long parameter list
  • Bad practices - inverted logic and parameter reassignment
  • ...

For more information, visit https://oclint.org

Comments
  • oclint-json-compilation-database failed to generate a report

    oclint-json-compilation-database failed to generate a report

    Hi,

    I have oclint 0.10.2 installed on os x yosemite. When I run oclint-json-compilation-database -e Pods -v -- -report-type html -o report.html to generate a report, the output always shows:


    1 error generated. 1 error generated. 3 errors generated. 1 error generated.

    The generated json file 'compile_commands.json' passes validation on http://jsonlint.com/. Any clues where the problem is? How can I fix this issue? Thx in advance.

    $ oclint -version
    LLVM (http://llvm.org/):
      LLVM version 3.7.0
      Optimized build.
      Built Mar  5 2016 (18:43:14).
      Default target: x86_64-apple-darwin14.5.0
      Host CPU: broad well
    
    OCLint (http://oclint.org/):
      OCLint version 0.10.2.
      Built Mar  5 2016 (19:12:20).
    
    ra:waiting-for-reply ra:auto-closed 
    opened by erictamlam 46
  • oclint: error: one compiler command contains multiple jobs:

    oclint: error: one compiler command contains multiple jobs:

    Issue Summary

    Seeing a similar issue to #221, where I get an error of oclint: error: one compiler command contains multiple jobs: when trying to run OCLint.

    Environment

    • Operation system name and version: macOS 10.12.6
    • OCLint version: 0.12 & 0.13
    • How OCLint is installed: local build? prebuilt binary downloaded from github? homebrew install? others? Tested with local build and prebuilt binary from github.
    • I am also using Xcode 9

    Reproduction Steps

    Download attached zip file, run build.sh

    Sample code

    See sample project

    Expected Behavior

    Should be able to lint.

    Actual Behavior

    oclint: error: one compiler command contains multiple jobs:

    Sample project

    https://drive.google.com/file/d/0B7brsNYK8KqpS1BKR0djZE1hbE0/view?usp=sharing

    ra:waiting-for-reply ra:auto-closed 
    opened by dynamicdispatch 36
  • Just a few tweaks

    Just a few tweaks

    • Addon to #408. Long Variable Names longer than the threshold + 10 will be cut off to minimize output data size, and save screen space.
    • Cleaned up rules formatting to remove redundant uses of "std::" and "oclint::"
    • Add all command-line options to ~/.oclint's control
    • Add multithreading to all make commands
    opened by queengooborg 29
  • Link error on ubuntu 15.10 for v0.10.2

    Link error on ubuntu 15.10 for v0.10.2

    [ 75%] Built target OCLintDriver Linking CXX executable bin/oclint-0.10.2 lib/libOCLintDriver.a(Options.cpp.o): In function oclint::option::process(char const*)': /home/linux/tools/oclint/oclint-driver/lib/Options.cpp:(.text+0x1ef): undefined reference tollvm::sys::findProgramByName(llvm::StringRef, llvm::ArrayRefllvm::StringRef)' lib/libOCLintDriver.a(Driver.cpp.o): In function oclint::Driver::run(clang::tooling::CompilationDatabase const&, llvm::ArrayRef<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, oclint::Analyzer&)': /home/linux/tools/oclint/oclint-driver/lib/Driver.cpp:(.text+0x78): undefined reference toclang::tooling::getAbsolutePath(llvm::StringRef)' /home/linux/tools/oclint/oclint-driver/lib/Driver.cpp:(.text+0x5bf): undefined reference to llvm::sys::fs::getMainExecutable(char const*, void*)' lib/libOCLintDriver.a(Driver.cpp.o): In functionadjustArguments(std::vector<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::allocator<std::__cxx11::basic_string<char, std::char_traits, std::allocator > > >&)': /home/linux/tools/oclint/oclint-driver/lib/Driver.cpp:(.text+0x1633): undefined reference to clang::tooling::getClangStripOutputAdjuster()' /home/linux/tools/oclint/oclint-driver/lib/Driver.cpp:(.text+0x163d): undefined reference toclang::tooling::getClangSyntaxOnlyAdjuster()' lib/libOCLintDriver.a(Driver.cpp.o): In function newCompilerInvocation(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, bool)': /home/linux/tools/oclint/oclint-driver/lib/Driver.cpp:(.text+0x1b0f): undefined reference tollvm::sys::getDefaultTargetTriple()' clang-3.7: error: linker command failed with exit code 1 (use -v to see invocation) CMakeFiles/oclint-0.10.2.dir/build.make:148: recipe for target 'bin/oclint-0.10.2' failed make[2]: *** [bin/oclint-0.10.2] Error 1 CMakeFiles/Makefile2:60: recipe for target 'CMakeFiles/oclint-0.10.2.dir/all' failed make[1]: *** [CMakeFiles/oclint-0.10.2.dir/all] Error 2 Makefile:75: recipe for target 'all' failed make: *** [all] Error 2

    opened by arnaudgelas 26
  • Error while processing <file_path>

    Error while processing

    I followed the doc up to the step where you generate a compile_commands.json file.
    I then run oclint-json-compilation-database -v, and it fails to produce any report.

    For each file of the project, a line is added at the end of the output in the console:

    Error while processing <file_path>
    

    One tidbit that might be useful buried in the long output by oclint is: error: unable to handle compilation, expected exactly one compiler job in

    As there is no more details along the error, I don't know what's missing / broken or invalid in my files.

    Running this on Mac OS X 10.8.2, on a Objective-C project, with oclint current stable release (0.6).

    opened by gcerquant 25
  • Issue with Xcode 11: many

    Issue with Xcode 11: many "error generated" and oclint.xml not generated

    Issue Summary

    After I upgraded to Xcode 11, oclint is crashing:

    • Many warning with "N error generated"
    • crash on "oclint: error: cannot open report output file /Users/***/sonar-reports/oclint.xml"

    The report is not generated.

    Environment

    • Operation system name and version: macOS Mojave 10.14.6 and Xcode 11.0

    • OCLint version: LLVM (http://llvm.org/): LLVM version 5.0.1 Optimized build. Default target: x86_64-apple-darwin18.7.0 Host CPU: skylake OCLint (http://oclint.org/): OCLint version 0.13.1. Built Feb 6 2018 (09:25:36).

    • How OCLint is installed: local build? prebuilt binary downloaded from github? homebrew install? others? Manually installed after being downloaded from github (also tested with homebrew installation too)

    Reproduction Steps

    Launch following command line:

    $ oclint -report-type=pmd -o=sonar-reports/oclint.xml -rc=LONG_LINE=200 -rc=LONG_METHOD=200 -max-priority-1=9999 -max-priority-2=9999 -max-priority-3=9999 -allow-duplicated-violations -p sonar-reports -extra-arg -Wno-everything "* all source code files"

    opened by egr-ext 22
  • Error thrown at end of make script

    Error thrown at end of make script

    As originally reported here: https://github.com/oclint/oclint/issues/294#issuecomment-232155673

    I downloaded the source zip file as of today (commit SHA 0cafd451123d7f80125619eac5528239d896c9b9) and ran the make script in a VM running Ubuntu 15.10. It took 1.5 to 2 hours to complete, but when it did, this was the end of the console output: http://pastebin.com/KyqNHK30

    The oclint executable seems to work, but lefta believes the above output reflects an install error and asked for a ticket to be created.

    I ran make install to see what would happen, but it was taking ages and then it reported that svn timed out, so I guess it was downloading source code and it nuked the build that had just taken a couple hours to get. Oh well, back to the drawing board.

    opened by raynebc 22
  • Build OCLint against out-of-tree llvm/clang

    Build OCLint against out-of-tree llvm/clang

    It would be nice if we could build oclint without having to build llvm/clang.

    We should be able to build oclint just with the -dev packages of our favorites distributions.

    opened by sylvestre 20
  • Compile Fail OCLINT 0.13.1

    Compile Fail OCLINT 0.13.1

    Issue Summary

    I am attempting to compile OCLINT 0.13.1 on MacOS 10.13.6, it keeps failing at 61%

    Environment

    • Operation system name and version: MacOS 10.13.6
    • OCLint version:0.13.1
    • How OCLint is installed: prebuilt binary downloaded from github

    Reproduction Steps

    Simply compile using the ./make script in oclint-scipts directory.

    Sample code

    The end of the output from the compile.

    [ 61%] Building CXX object projects/compiler-rt/lib/tsan/CMakeFiles/clang_rt.tsan_iossim_dynamic.dir/rtl/tsan_libdispatch_mac.cc.o [ 61%] Building CXX object projects/compiler-rt/lib/asan/CMakeFiles/RTAsan_dynamic.ios.dir/asan_suppressions.cc.o /Users/laiyoung_/OCLint/oclint-0.13.1/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_libdispatch_mac.cc:227:27: error: conflicting types for 'dispatch_sync' DISPATCH_INTERCEPT_SYNC_B(dispatch_sync, false) ^ /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator12.0.sdk/usr/include/dispatch/queue.h:292:1: note: previous declaration is here dispatch_sync(dispatch_queue_t queue, DISPATCH_NOESCAPE dispatch_block_t block); ^ /Users/laiyoung_/OCLint/oclint-0.13.1/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_libdispatch_mac.cc:228:27: error: conflicting types for 'dispatch_barrier_sync' DISPATCH_INTERCEPT_SYNC_B(dispatch_barrier_sync, true) ^ /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator12.0.sdk/usr/include/dispatch/queue.h:1278:1: note: previous declaration is here dispatch_barrier_sync(dispatch_queue_t queue, ^ /Users/laiyoung_/OCLint/oclint-0.13.1/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_libdispatch_mac.cc:268:24: error: conflicting types for 'dispatch_once' TSAN_INTERCEPTOR(void, dispatch_once, dispatch_once_t *predicate, ^ /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator12.0.sdk/usr/include/dispatch/once.h:73:1: note: previous declaration is here dispatch_once(dispatch_once_t *predicate, ^ /Users/laiyoung_/OCLint/oclint-0.13.1/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_libdispatch_mac.cc:478:24: error: conflicting types for 'dispatch_apply' TSAN_INTERCEPTOR(void, dispatch_apply, size_t iterations, ^ /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator12.0.sdk/usr/include/dispatch/queue.h:389:1: note: previous declaration is here dispatch_apply(size_t iterations, ^ /Users/laiyoung_/OCLint/oclint-0.13.1/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_libdispatch_mac.cc:522:47: warning: cast from 'const void *' to 'void *' drops const qualifier [-Wcast-qual] destructor = ^(void) { WRAP(free)((void *)buffer); }; ^ /Users/laiyoung_/OCLint/oclint-0.13.1/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_libdispatch_mac.cc:524:49: warning: cast from 'const void *' to 'void *' drops const qualifier [-Wcast-qual] destructor = ^(void) { WRAP(munmap)((void *)buffer, size); }; ^ 2 warnings and 4 errors generated. make[2]: *** [projects/compiler-rt/lib/tsan/CMakeFiles/clang_rt.tsan_iossim_dynamic.dir/rtl/tsan_libdispatch_mac.cc.o] Error 1 make[1]: *** [projects/compiler-rt/lib/tsan/CMakeFiles/clang_rt.tsan_iossim_dynamic.dir/all] Error 2 [ 61%] Building CXX object projects/compiler-rt/lib/tsan/CMakeFiles/clang_rt.tsan_ios_dynamic.dir/rtl/tsan_stack_trace.cc.o clang: warning: argument unused during compilation: '-msse3' [-Wunused-command-line-argument] [ 61%] Building CXX object projects/compiler-rt/lib/asan/CMakeFiles/RTAsan_dynamic.ios.dir/asan_thread.cc.o [ 61%] Building CXX object projects/compiler-rt/lib/tsan/CMakeFiles/clang_rt.tsan_ios_dynamic.dir/rtl/tsan_stat.cc.o clang: warning: argument unused during compilation: '-msse3' [-Wunused-command-line-argument] [ 61%] Building CXX object projects/compiler-rt/lib/tsan/CMakeFiles/clang_rt.tsan_ios_dynamic.dir/rtl/tsan_suppressions.cc.o clang: warning: argument unused during compilation: '-msse3' [-Wunused-command-line-argument] [ 61%] Building CXX object projects/compiler-rt/lib/asan/CMakeFiles/RTAsan_dynamic.ios.dir/asan_win.cc.o [ 61%] Building CXX object projects/compiler-rt/lib/tsan/CMakeFiles/clang_rt.tsan_ios_dynamic.dir/rtl/tsan_symbolize.cc.o clang: warning: argument unused during compilation: '-msse3' [-Wunused-command-line-argument] [ 61%] Building CXX object projects/compiler-rt/lib/asan/CMakeFiles/RTAsan_dynamic.ios.dir/asan_new_delete.cc.o [ 61%] Building CXX object projects/compiler-rt/lib/tsan/CMakeFiles/clang_rt.tsan_ios_dynamic.dir/rtl/tsan_sync.cc.o [ 61%] Building CXX object projects/compiler-rt/lib/tsan/CMakeFiles/clang_rt.tsan_ios_dynamic.dir/rtl/tsan_interceptors_mac.cc.o clang: warning: argument unused during compilation: '-msse3' [-Wunused-command-line-argument] clang: warning: argument unused during compilation: '-msse3' [-Wunused-command-line-argument] /Users/laiyoung_/OCLint/oclint-0.13.1/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors_mac.cc:115:1: warning: cast from 'volatile int *' to 'unsigned int *' drops volatile qualifier [-Wcast-qual] OSATOMIC_INTERCEPTORS_CAS(OSAtomicCompareAndSwapInt, tsan_atomic32, a32, int) ^ /Users/laiyoung/OCLint/oclint-0.13.1/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors_mac.cc:103:19: note: expanded from macro 'OSATOMIC_INTERCEPTORS_CAS' (tsan_t *)ptr, (tsan_t *)&old_value, (tsan_t)new_value,
    ^ /Users/laiyoung
    /OCLint/oclint-0.13.1/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors_mac.cc:115:1: warning: cast from 'volatile int *' to 'unsigned int *' drops volatile qualifier [-Wcast-qual] /Users/laiyoung_/OCLint/oclint-0.13.1/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors_mac.cc:111:19: note: expanded from macro 'OSATOMIC_INTERCEPTORS_CAS' (tsan_t *)ptr, (tsan_t *)&old_value, (tsan_t)new_value,
    ^ /Users/laiyoung_/OCLint/oclint-0.13.1/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors_mac.cc:116:1: warning: cast from 'volatile long *' to 'unsigned long long *' drops volatile qualifier [-Wcast-qual] OSATOMIC_INTERCEPTORS_CAS(OSAtomicCompareAndSwapLong, tsan_atomic64, a64, ^ /Users/laiyoung/OCLint/oclint-0.13.1/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors_mac.cc:103:19: note: expanded from macro 'OSATOMIC_INTERCEPTORS_CAS' (tsan_t *)ptr, (tsan_t *)&old_value, (tsan_t)new_value,
    ^ /Users/laiyoung
    /OCLint/oclint-0.13.1/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors_mac.cc:116:1: warning: cast from 'volatile long *' to 'unsigned long long *' drops volatile qualifier [-Wcast-qual] /Users/laiyoung_/OCLint/oclint-0.13.1/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors_mac.cc:111:19: note: expanded from macro 'OSATOMIC_INTERCEPTORS_CAS' (tsan_t *)ptr, (tsan_t *)&old_value, (tsan_t)new_value,
    ^ /Users/laiyoung_/OCLint/oclint-0.13.1/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors_mac.cc:118:1: warning: cast from 'void *volatile *' to 'unsigned long long *' drops volatile qualifier [-Wcast-qual] OSATOMIC_INTERCEPTORS_CAS(OSAtomicCompareAndSwapPtr, tsan_atomic64, a64, ^ /Users/laiyoung/OCLint/oclint-0.13.1/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors_mac.cc:103:19: note: expanded from macro 'OSATOMIC_INTERCEPTORS_CAS' (tsan_t *)ptr, (tsan_t *)&old_value, (tsan_t)new_value,
    ^ /Users/laiyoung
    /OCLint/oclint-0.13.1/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors_mac.cc:118:1: warning: cast from 'void *volatile *' to 'unsigned long long *' drops volatile qualifier [-Wcast-qual] /Users/laiyoung_/OCLint/oclint-0.13.1/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors_mac.cc:111:19: note: expanded from macro 'OSATOMIC_INTERCEPTORS_CAS' (tsan_t *)ptr, (tsan_t *)&old_value, (tsan_t)new_value,
    ^ /Users/laiyoung_/OCLint/oclint-0.13.1/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors_mac.cc:120:1: warning: cast from 'volatile int *' to 'unsigned int *' drops volatile qualifier [-Wcast-qual] OSATOMIC_INTERCEPTORS_CAS(OSAtomicCompareAndSwap32, tsan_atomic32, a32, ^ /Users/laiyoung/OCLint/oclint-0.13.1/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors_mac.cc:103:19: note: expanded from macro 'OSATOMIC_INTERCEPTORS_CAS' (tsan_t *)ptr, (tsan_t *)&old_value, (tsan_t)new_value,
    ^ /Users/laiyoung
    /OCLint/oclint-0.13.1/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors_mac.cc:120:1: warning: cast from 'volatile int *' to 'unsigned int *' drops volatile qualifier [-Wcast-qual] /Users/laiyoung_/OCLint/oclint-0.13.1/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors_mac.cc:111:19: note: expanded from macro 'OSATOMIC_INTERCEPTORS_CAS' (tsan_t *)ptr, (tsan_t *)&old_value, (tsan_t)new_value,
    ^ /Users/laiyoung_/OCLint/oclint-0.13.1/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors_mac.cc:122:1: warning: cast from 'volatile long long *' to 'unsigned long long *' drops volatile qualifier [-Wcast-qual] OSATOMIC_INTERCEPTORS_CAS(OSAtomicCompareAndSwap64, tsan_atomic64, a64, ^ /Users/laiyoung/OCLint/oclint-0.13.1/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors_mac.cc:103:19: note: expanded from macro 'OSATOMIC_INTERCEPTORS_CAS' (tsan_t *)ptr, (tsan_t *)&old_value, (tsan_t)new_value,
    ^ /Users/laiyoung
    /OCLint/oclint-0.13.1/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors_mac.cc:122:1: warning: cast from 'volatile long long *' to 'unsigned long long *' drops volatile qualifier [-Wcast-qual] /Users/laiyoung_/OCLint/oclint-0.13.1/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors_mac.cc:111:19: note: expanded from macro 'OSATOMIC_INTERCEPTORS_CAS' (tsan_t *)ptr, (tsan_t *)&old_value, (tsan_t)new_value,
    ^ /Users/laiyoung_/OCLint/oclint-0.13.1/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors_mac.cc:139:1: warning: cast from 'volatile void *' to 'char *' drops volatile qualifier [-Wcast-qual] OSATOMIC_INTERCEPTORS_BITOP(OSAtomicTestAndSet, tsan_atomic8_fetch_or, false) ^ /Users/laiyoung/OCLint/oclint-0.13.1/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors_mac.cc:136:3: note: expanded from macro 'OSATOMIC_INTERCEPTORS_BITOP' OSATOMIC_INTERCEPTOR_BITOP(f, op, clear, kMacOrderNonBarrier)
    ^ /Users/laiyoung
    /OCLint/oclint-0.13.1/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors_mac.cc:128:31: note: expanded from macro 'OSATOMIC_INTERCEPTOR_BITOP' char *byte_ptr = ((char *)ptr) + (n >> 3);
    ^ /Users/laiyoung_/OCLint/oclint-0.13.1/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors_mac.cc:139:1: warning: cast from 'volatile void *' to 'char *' drops volatile qualifier [-Wcast-qual] /Users/laiyoung_/OCLint/oclint-0.13.1/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors_mac.cc:137:3: note: expanded from macro 'OSATOMIC_INTERCEPTORS_BITOP' OSATOMIC_INTERCEPTOR_BITOP(f##Barrier, op, clear, kMacOrderBarrier) ^ /Users/laiyoung_/OCLint/oclint-0.13.1/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors_mac.cc:128:31: note: expanded from macro 'OSATOMIC_INTERCEPTOR_BITOP' char *byte_ptr = ((char *)ptr) + (n >> 3);
    ^ /Users/laiyoung_/OCLint/oclint-0.13.1/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors_mac.cc:140:1: warning: cast from 'volatile void *' to 'char *' drops volatile qualifier [-Wcast-qual] OSATOMIC_INTERCEPTORS_BITOP(OSAtomicTestAndClear, tsan_atomic8_fetch_and, ^ /Users/laiyoung/OCLint/oclint-0.13.1/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors_mac.cc:136:3: note: expanded from macro 'OSATOMIC_INTERCEPTORS_BITOP' OSATOMIC_INTERCEPTOR_BITOP(f, op, clear, kMacOrderNonBarrier)
    ^ /Users/laiyoung
    /OCLint/oclint-0.13.1/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors_mac.cc:128:31: note: expanded from macro 'OSATOMIC_INTERCEPTOR_BITOP' char *byte_ptr = ((char *)ptr) + (n >> 3);
    ^ /Users/laiyoung_/OCLint/oclint-0.13.1/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors_mac.cc:140:1: warning: cast from 'volatile void *' to 'char *' drops volatile qualifier [-Wcast-qual] /Users/laiyoung_/OCLint/oclint-0.13.1/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors_mac.cc:137:3: note: expanded from macro 'OSATOMIC_INTERCEPTORS_BITOP' OSATOMIC_INTERCEPTOR_BITOP(f##Barrier, op, clear, kMacOrderBarrier) ^ /Users/laiyoung_/OCLint/oclint-0.13.1/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors_mac.cc:128:31: note: expanded from macro 'OSATOMIC_INTERCEPTOR_BITOP' char *byte_ptr = ((char *)ptr) + (n >> 3);
    ^ [ 61%] Building CXX object projects/compiler-rt/lib/tsan/CMakeFiles/clang_rt.tsan_ios_dynamic.dir/rtl/tsan_libdispatch_mac.cc.o clang: warning: argument unused during compilation: '-msse3' [-Wunused-command-line-argument] 14 warnings generated. [ 61%] Building CXX object projects/compiler-rt/lib/tsan/CMakeFiles/clang_rt.tsan_ios_dynamic.dir/rtl/tsan_platform_mac.cc.o clang: warning: argument unused during compilation: '-msse3' [-Wunused-command-line-argument] /Users/laiyoung_/OCLint/oclint-0.13.1/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_libdispatch_mac.cc:227:27: error: conflicting types for 'dispatch_sync' DISPATCH_INTERCEPT_SYNC_B(dispatch_sync, false) ^ /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/usr/include/dispatch/queue.h:292:1: note: previous declaration is here dispatch_sync(dispatch_queue_t queue, DISPATCH_NOESCAPE dispatch_block_t block); ^ /Users/laiyoung_/OCLint/oclint-0.13.1/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_libdispatch_mac.cc:228:27: error: conflicting types for 'dispatch_barrier_sync' DISPATCH_INTERCEPT_SYNC_B(dispatch_barrier_sync, true) ^ /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/usr/include/dispatch/queue.h:1278:1: note: previous declaration is here dispatch_barrier_sync(dispatch_queue_t queue, ^ /Users/laiyoung_/OCLint/oclint-0.13.1/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_libdispatch_mac.cc:268:24: error: conflicting types for 'dispatch_once' TSAN_INTERCEPTOR(void, dispatch_once, dispatch_once_t *predicate, ^ /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/usr/include/dispatch/once.h:73:1: note: previous declaration is here dispatch_once(dispatch_once_t *predicate, ^ /Users/laiyoung_/OCLint/oclint-0.13.1/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_libdispatch_mac.cc:478:24: error: conflicting types for 'dispatch_apply' TSAN_INTERCEPTOR(void, dispatch_apply, size_t iterations, ^ /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/usr/include/dispatch/queue.h:389:1: note: previous declaration is here dispatch_apply(size_t iterations, ^ /Users/laiyoung_/OCLint/oclint-0.13.1/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_libdispatch_mac.cc:522:47: warning: cast from 'const void *' to 'void *' drops const qualifier [-Wcast-qual] destructor = ^(void) { WRAP(free)((void *)buffer); }; ^ /Users/laiyoung_/OCLint/oclint-0.13.1/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_libdispatch_mac.cc:524:49: warning: cast from 'const void *' to 'void *' drops const qualifier [-Wcast-qual] destructor = ^(void) { WRAP(munmap)((void *)buffer, size); }; ^ 2 warnings and 4 errors generated. make[2]: *** [projects/compiler-rt/lib/tsan/CMakeFiles/clang_rt.tsan_ios_dynamic.dir/rtl/tsan_libdispatch_mac.cc.o] Error 1 make[2]: *** Waiting for unfinished jobs.... make[1]: *** [projects/compiler-rt/lib/tsan/CMakeFiles/clang_rt.tsan_ios_dynamic.dir/all] Error 2 [ 61%] Built target RTAsan_dynamic.ios make: *** [all] Error 2

    Expected Behavior

    compile success

    Actual Behavior

    compile fail

    Even Better

    ~/OCLint/oclint-0.13.1/oclint-scripts is I'm in the current path ,execute command ./make,I try again several times, is an error in 61% of the time, and are in the same place.

    Thank you very much for check my problem,I wish you a happy work。

    opened by CYBoys 16
  • [WIP] Make Rule Identifier More Explicit

    [WIP] Make Rule Identifier More Explicit

    As discussed in #279, we now get the rule name from RuleBase itself, allowing us to override the default implementation as necessary.

    • [x] Add identifer method
    • [x] Add tests
    • [x] Look through the list of available rules and identify problematic rule names
    • [ ] Show rule name in the generated report - Assign to @ryuichis on a separate pull request
    opened by UnrealQuester 15
  • Multithreading

    Multithreading

    Based on my results in #44, I put this together.

    It moves some code around, mostly to pull all the iterations into a central place. It also puts locks on critical sections and adds a command line switch (-num-threads).

    Even if this is merged, I propose keeping it turned off by default for a while and encouraging people to test it.

    Looking forward to feedback.

    opened by nschum 15
  • oclint doesn't work: a lot of compiler errors in oclint_result.html.  Xcode 14.1  oclint 22.02

    oclint doesn't work: a lot of compiler errors in oclint_result.html. Xcode 14.1 oclint 22.02

    Issue Summary

    sos! my oclint doesn't work: a lot of compiler errors showed in oclint_result.html

    Environment

    Reproduction Steps

    1.install oclint and was successed image

    2.create my sh file and run it as the introduction . my sh code like that in the #sample code# below.

    3.open the result file : oclint_result.html. It shows a lot of compiler errors: image image 6 errors generated. 1 error generated. 1 error generated. 1 error generated. 4 errors generated. 5 errors generated. 1 error generated.

    Sample code

    
    PROJECT=unzipDemo.xcodeproj
    SCHEME=unzipDemo
    xcodebuild -project $PROJECT -scheme $SCHEME clean&&
    xcodebuild -project $PROJECT -scheme $SCHEME \
    -configuration Debug \
    -sdk iphonesimulator16.1 \
    | xcpretty -r json-compilation-database -o compile_commands.json&&
    oclint-json-compilation-database -e Pods -e Vender  -- \
    -report-type html >> oclint_result.html \
    -disable-rule ProblematicBaseClassDestructor \
    -disable-rule DestructorOfVirtualClass \
    -disable-rule AssignIvarOutsideAccessors \
    -disable-rule ParameterReassignment \
    -disable-rule ShortVariableName \
    -disable-rule RedundantLocalVariable \
    -disable-rule TooManyFields \
    -disable-rule TooManyMethods \
    -disable-rule UnusedLocalVariable \
    -disable-rule UnusedMethodParameter \
    -disable-rule HighCyclomaticComplexity \
    -disable-rule HighNcssMethod \
    -rc LongClass=1000 \
    -rc LONG_LINE=200 \
    -rc LongMethod=100 \
    -rc TooManyParameters=2 \
    -rc DeepNestedBlock=5 \
    -max-priority-1=100000 \
    -max-priority-2=100000 \
    -max-priority-3=100000 \
    rm compile_commands.json
    
    

    Command to run OCLint with the code above.

    Expected Behavior

    show normal code review result.

    Actual Behavior

    show a lot of compiler error like above.

    Even Better

    Is your project open sourced? If yes, can you point us to your repository? no ,just a simple demo project. If not, is it possible to make a small project to illustrate the problem? yes ,my demo is a small simple demo . If not, can you create a gist with your sample code for us?

    opened by imbawales 7
  • xcodebuild failed when use OCLint in Xcode

    xcodebuild failed when use OCLint in Xcode

    Issue Summary

    xcodebuild failed when use OCLint in Xcode . error message : Command PhaseScriptExecution failed with a nonzero exit code

    Environment

    • Operation system name and version: macOS Monterey Version 12.3.1 and Xcode 13.4.1
    • OCLint version: 22.02
    • How OCLint is installed: from github

    Reproduction Steps

    Created a new demo project with cocoapod ( pod 'FMDB') ,
    Just import FMDB : #import <FMDB/FMDB.h> in ViewController.m . Create OClint-aggregate target , add script below 。 Command + B

    Sample code

    xcode - build phases - run script

    xcodebuild clean
    xcodebuild | xcpretty -r json-compilation-database --o compile_commands.json 
    oclint-json-compilation-database -e Pods -- -report-type xcode
    

    Command to run OCLint with the code above.

    Expected Behavior

    1. no error generated .
    2. show warnings in Xcode editor

    Actual Behavior

    1. error generated . I doubt compile not finished . Warnings are not all listed
    2. show some warnings in Xcode editor

    More

    OCLint works fine with a pure xcodeproj project while All kind of errors generated with xcworkspace project (init with cocoapod ).

    opened by coderDeven 4
  • Crash on Xcode 14 when used via Fastlane

    Crash on Xcode 14 when used via Fastlane

    Issue Summary

    Running oclint via fastlane by using xcode 14 shows a crash. Previously with xcode 13.4 and below versions, it was working without a problem.

    Environment

    • Operation system name and version: macOS Monterey Version 12.6 and xCode 14.0.1
    • OCLint version: 22.02
    • How OCLint is installed: Via homebrew

    Reproduction Steps

    Run oclint via fastlane.

    Sample code

    oclint(
    	compile_commands: "#{ENV['DERIVED_DATA']}/compile_commands.json",
    	exclude_regex: /_vers.c|Tests|Libraries|Pods|TestApp/, 
    	max_priority_1: 1000,
    	max_priority_2: 1000, 
    	max_priority_3: 1000,
    	report_type: "xml",
    	report_path: "${SONAR_REPORTS_PATH}/oclint.xml",
    	thresholds: ["LONG_LINE=180", "LONG_VARIABLE_NAME=45"], 
    	enable_global_analysis: false
    )
    

    Expected Behavior

    What do you expect to happen as a result of the reproduction steps? Expected behavior in Xcode 14 to get a success result or a failure with a list of failed items added to the compiled_commands.json.

    Actual Behavior

    What currently happens as a result of the reproduction steps? It crashes after producing a lot of errors on the log, but it does not even show these errors inside the compile_commands.json file.

    Following is the error:

    1 error generated.
    1 error generated.
    1 error generated.
    9 errors generated.
    1 error generated.
    1 error generated.
    1 error generated.
    4 errors generated.
    1 error generated.
    1 error generated.
    1 error generated.
    1 error generated.
    1 error generated.
    1 error generated.
    1 error generated.
    1 error generated.
    9 errors generated.
    1 error generated.
    1 error generated.
    1 error generated.
    4 errors generated.
    1 error generated.
    1 error generated.
    1 error generated.
    1 error generated.
    1 error generated.
    1 error generated.
    1 error generated.
    1 error generated.
    9 errors generated.
    
    	from /Users/ebru/.rvm/gems/ruby-2.6.9/gems/fastlane-2.210.1/fastlane_core/lib/fastlane_core/ui/ui.rb:17:in `method_missing'
    	from /Users/ebru/.rvm/gems/ruby-2.6.9/gems/fastlane-2.210.1/fastlane/lib/fastlane/helper/sh_helper.rb:80:in `sh_control_output'
    	from /Users/ebru/.rvm/rubies/ruby-2.6.9/lib/ruby/2.6.0/forwardable.rb:230:in `sh'
    	from /Users/ebru/.rvm/gems/ruby-2.6.9/gems/fastlane-2.210.1/fastlane/lib/fastlane/actions/oclint.rb:95:in `run'
    	from /Users/ebru/.rvm/gems/ruby-2.6.9/gems/fastlane-2.210.1/fastlane/lib/fastlane/runner.rb:263:in `block (2 levels) in execute_action'
    	from /Users/ebru/.rvm/gems/ruby-2.6.9/gems/fastlane-2.210.1/fastlane/lib/fastlane/actions/actions_helper.rb:69:in `execute_action'
    	from /Users/ebru/.rvm/gems/ruby-2.6.9/gems/fastlane-2.210.1/fastlane/lib/fastlane/runner.rb:255:in `block in execute_action'
    	from /Users/ebru/.rvm/gems/ruby-2.6.9/gems/fastlane-2.210.1/fastlane/lib/fastlane/runner.rb:229:in `chdir'
    	from /Users/ebru/.rvm/gems/ruby-2.6.9/gems/fastlane-2.210.1/fastlane/lib/fastlane/runner.rb:229:in `execute_action'
    	from /Users/ebru/.rvm/gems/ruby-2.6.9/gems/fastlane-2.210.1/fastlane/lib/fastlane/runner.rb:157:in `trigger_action_by_name'
    	from /Users/ebru/.rvm/gems/ruby-2.6.9/gems/fastlane-2.210.1/fastlane/lib/fastlane/fast_file.rb:159:in `method_missing'
    	from Fastfile:238:in `block (3 levels) in parsing_binding'
    	from Fastfile:237:in `chdir'
    	from Fastfile:237:in `block (2 levels) in parsing_binding'
    	from /Users/ebru/.rvm/gems/ruby-2.6.9/gems/fastlane-2.210.1/fastlane/lib/fastlane/lane.rb:33:in `call'
    	from /Users/ebru/.rvm/gems/ruby-2.6.9/gems/fastlane-2.210.1/fastlane/lib/fastlane/runner.rb:49:in `block in execute'
    	from /Users/ebru/.rvm/gems/ruby-2.6.9/gems/fastlane-2.210.1/fastlane/lib/fastlane/runner.rb:45:in `chdir'
    	from /Users/ebru/.rvm/gems/ruby-2.6.9/gems/fastlane-2.210.1/fastlane/lib/fastlane/runner.rb:45:in `execute'
    	from /Users/ebru/.rvm/gems/ruby-2.6.9/gems/fastlane-2.210.1/fastlane/lib/fastlane/lane_manager.rb:47:in `cruise_lane'
    	from /Users/ebru/.rvm/gems/ruby-2.6.9/gems/fastlane-2.210.1/fastlane/lib/fastlane/command_line_handler.rb:36:in `handle'
    	from /Users/ebru/.rvm/gems/ruby-2.6.9/gems/fastlane-2.210.1/fastlane/lib/fastlane/commands_generator.rb:110:in `block (2 levels) in run'
    	from /Users/ebru/.rvm/gems/ruby-2.6.9/gems/commander-4.6.0/lib/commander/command.rb:187:in `call'
    	from /Users/ebru/.rvm/gems/ruby-2.6.9/gems/commander-4.6.0/lib/commander/command.rb:157:in `run'
    	from /Users/ebru/.rvm/gems/ruby-2.6.9/gems/commander-4.6.0/lib/commander/runner.rb:444:in `run_active_command'
    	from /Users/ebru/.rvm/gems/ruby-2.6.9/gems/fastlane-2.210.1/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb:124:in `run!'
    	from /Users/ebru/.rvm/gems/ruby-2.6.9/gems/commander-4.6.0/lib/commander/delegates.rb:18:in `run!'
    	from /Users/ebru/.rvm/gems/ruby-2.6.9/gems/fastlane-2.210.1/fastlane/lib/fastlane/commands_generator.rb:354:in `run'
    	from /Users/ebru/.rvm/gems/ruby-2.6.9/gems/fastlane-2.210.1/fastlane/lib/fastlane/commands_generator.rb:43:in `start'
    	from /Users/ebru/.rvm/gems/ruby-2.6.9/gems/fastlane-2.210.1/fastlane/lib/fastlane/cli_tools_distributor.rb:123:in `take_off'
    	from /Users/ebru/.rvm/gems/ruby-2.6.9/gems/fastlane-2.210.1/bin/fastlane:23:in `<top (required)>'
    	from /Users/ebru/.rvm/gems/ruby-2.6.9/bin/fastlane:23:in `load'
    	from /Users/ebru/.rvm/gems/ruby-2.6.9/bin/fastlane:23:in `<main>'
    	from /Users/ebru/.rvm/gems/ruby-2.6.9/bin/ruby_executable_hooks:22:in `eval'
    	from /Users/ebru/.rvm/gems/ruby-2.6.9/bin/ruby_executable_hooks:22:in `<main>'
    
    ra:waiting-for-reply 
    opened by ebru-backbase 1
  • How do I use the same compiler as Xcode?

    How do I use the same compiler as Xcode?

    Issue Summary

    has many complie error in report result,i speculate because compiler different with xcode. image image

    Because I analyzed the POD folder, I didn't find the prefix in the POD, which led to the result

    Environment

    • Operation system name and version: mac 12.5
    • OCLint version:22.02
    • How OCLint is installed: local build

    Reproduction Steps

    has many complie error in report result,i speculate because compiler different with xcode。

    Sample code

    xcodebuild -workspace $myworkspace -scheme $myscheme clean

    xcodebuild -workspace $myworkspace -scheme $myscheme -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 11' -configuration Debug
    CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER=NO
    CLANG_ENABLE_MODULE_DEBUGGING=NO CODE_SIGNING_REQUIRED=NO ENABLE_BITCODE=NO COMPILER_INDEX_STORE_ENABLE=NO
    | tee xcodebuild.log | xcpretty --report json-compilation-database --output compile_commands.json

    oclint-json-compilation-database
    $assigin_modules_analyze
    -e MMKV
    -e MMKVCore
    -e DerivedData
    --
    -report-type $reportType \

    $reportFile
    -disable-rule LongVariableName
    -disable-rule ShortVariableName
    -disable-rule UnusedMethodParameter
    -disable-rule EmptyFinallyStatement
    -disable-rule EmptyTryStatement
    -disable-rule AssignIvarOutsideAccessors
    -disable-rule InvertedLogic
    -disable-rule ParameterReassignment
    -disable-rule PreferEarlyExit
    -disable-rule TooFewBranchesInSwitchStatement
    -disable-rule UnnecessaryDefaultStatement
    -disable-rule ConstantConditionalOperator
    -extra-arg=-Wno-everything
    -rc NESTED_BLOCK_DEPTH=7
    -rc CYCLOMATIC_COMPLEXITY=60
    -rc NPATH_COMPLEXITY=400
    -rc NCSS_METHOD=100
    -rc LONG_CLASS=1000
    -rc LONG_LINE=500
    -rc LONG_METHOD=150
    -rc TOO_MANY_FIELDS=20
    -rc TOO_MANY_METHODS=50
    -rc TOO_MANY_PARAMETERS=10
    -rc MINIMUM_CASES_IN_SWITCH=10
    -rc CYCLOMATIC_COMPLEXITY=15
    -max-priority-1=20000
    -max-priority-2=30000
    -max-priority-3=50000
    -enable-global-analysis\

    Command to run OCLint with the code above.

    ra:waiting-for-reply 
    opened by fndppx 5
  • Add support for building code locally on Ubuntu 18.04 LTS

    Add support for building code locally on Ubuntu 18.04 LTS

    This pull request fixes issue #634 by using the prebuilt clang+llvm binary for ubuntu 18.04 LTS, if the code is built inside ubuntu 18.04.

    The user will have to install the distro python package. The distro package replaces the deprecated platform.linux_distribution() method.

    ra:needs-attention 
    opened by tygokf 0
  • various dependency issues on Fedora, search path /usr/lib/x86_64-linux-gnu does not exist, broken links in README files

    various dependency issues on Fedora, search path /usr/lib/x86_64-linux-gnu does not exist, broken links in README files

    Issue Summary

    various dependency issues on Fedora, search path /usr/lib/x86_64-linux-gnu does not exist, broken links in README files

    Environment

    • Operation system name and version: Fedora 34
    • OCLint version: 21.05
    • How OCLint is installed: local build? prebuilt binary downloaded from github? homebrew install? others? via ./make

    Reproduction Steps

    run ./make

    Sample code

    First ninja needs to be installed, e.g. with dnf install ninja-build otherwise this error appears:

    CMake Error: CMake was unable to find a build program corresponding to "Ninja".  CMAKE_MAKE_PROGRAM is not set.  You probably need to select a different build tool.
    CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
    CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
    

    Then re2c needs installing, dnf install re2c: re2c was not found; changes to src/*.in.cc will not affect your build.

    Then the path to ncurses-compat-libs or libtinfo.so does not exist on Fedora, so this error happens: ninja: error: '/usr/lib/x86_64-linux-gnu/libtinfo.so', needed by 'bin/oclint-21.05', missing and no known rule to make it So a work around is ln -s /usr/lib64/libtinfo.so /usr/lib/x86_64-linux-gnu/libtinfo.so, unless a path can be specified?

    The installation instructions says to cp -rp include/* /usr/local/include/ but the only include directory I found was oclint/build/llvm-install

    The README in oclint/oclint-scripts has 2 broken links:

    (Detail description can be found at
        https://oclint.org/docs/intro/build.html
    
    Compiling in debug mode and enabling testing, please look at
        https://oclint.org/docs/devel/compiletest.html)
    

    Expected Behavior

    Better detection of dependencies

    Actual Behavior

    missing libraries and non-existent path in Fedora

    opened by RobbieTheK 13
Releases(v22.02)
Owner
The OCLint Static Code Analysis Tool
The OCLint Static Code Analysis Tool
Cross-platform static analyzer and linter for Swift.

Wiki • Installation • Usage • Features • Developers • License Tailor is a cross-platform static analysis and lint tool for source code written in Appl

Sleekbyte 1.4k Dec 19, 2022
A tool for Swift code modification intermediating between code generation and formatting.

swift-mod A tool for Swift code modification intermediating between code generation and formatting. Overview swift-mod is a tool for Swift code modifi

Ryo Aoyama 95 Nov 3, 2022
A command-line tool and Xcode Extension for formatting Swift code

Table of Contents What? Why? How? Command-line tool Xcode source editor extension Xcode build phase Via Applescript VSCode plugin Sublime Text plugin

Nick Lockwood 6.3k Jan 8, 2023
Objective-C style checker

ocstyle Objective-C style checker Installation pip install ocstyle Example If you have a file called test.m like this: @implementation SomeClass +(v

Cue 256 Feb 2, 2022
Commit fully-formatted Objective-C as a team without even trying.

[ Space Commander] [ Space Commander] provides tools which enable a team of iOS developers to commit Objective-C code to a git repository using a unif

Square 1.1k Nov 17, 2022
A tool to enforce Swift style and conventions.

SwiftLint A tool to enforce Swift style and conventions, loosely based on the now archived GitHub Swift Style Guide. SwiftLint enforces the style guid

Realm 16.9k Jan 9, 2023
Simple iOS app blackbox assessment tool. Powered by frida.re and vuejs.

Discontinued Project This project has been discontinued. Please use the new Grapefruit #74 frida@14 compatibility issues frida@14 introduces lots of b

Chaitin Tech 1.6k Dec 16, 2022
A linter tool for Interface Builder

IBLinter A linter tool to normalize .xib and .storyboard files. Inspired by realm/SwiftLint Installation Using Homebrew $ brew install iblinter Using

IBDecodable 945 Nov 11, 2022
iOS tool that helps with profiling iOS Memory usage.

FBMemoryProfiler An iOS library providing developer tools for browsing objects in memory over time, using FBAllocationTracker and FBRetainCycleDetecto

Facebook Archive 3.4k Dec 7, 2022
Measure Swift code metrics and get reports in Xcode, Jenkins and other CI platforms.

Taylor ⚠️ Taylor is DEPRECATED. Use SwiftLint instead. A tool aimed to increase Swift code quality, by checking for conformance to code metrics. Taylo

YOPESO 301 Dec 24, 2022
An Xcode formatter plug-in to format your swift code.

Swimat Swimat is an Xcode plug-in to format your Swift code. Preview Installation There are three way to install. Install via homebrew-cask # Homebrew

Jintin 1.6k Jan 7, 2023
SwiftCop is a validation library fully written in Swift and inspired by the clarity of Ruby On Rails Active Record validations.

SwiftCop is a validation library fully written in Swift and inspired by the clarity of Ruby On Rails Active Record validations. Objective Build a stan

Andres Canal 542 Sep 17, 2022
Trackable is a simple analytics integration helper library. It’s especially designed for easy and comfortable integration with existing projects.

Trackable Trackable is a simple analytics integration helper library. It’s especially designed for easy and comfortable integration with existing proj

Vojta Stavik 145 Apr 14, 2022
Type-safe observable values and collections in Swift

GlueKit ⚠️ WARNING ⚠️ This project is in a prerelease state. There is active work going on that will result in API changes that can/will break code wh

null 361 Oct 12, 2022
Makes it easier to support older versions of iOS by fixing things and adding missing methods

PSTModernizer PSTModernizer carefully applies patches to UIKit and related Apple frameworks to fix known radars with the least impact. The current set

PSPDFKit Labs 217 Aug 9, 2022
Find common xib and storyboard-related problems without running your app or writing unit tests.

IBAnalyzer Find common xib and storyboard-related problems without running your app or writing unit tests. Usage Pass a path to your project to ibanal

Arek Holko 955 Oct 15, 2022
Skredvarsel app - an iOS, iPadOS, and macOS application that provides daily avalanche warnings from the Norwegian Avalanche Warning Service API

Skredvarsel (Avalanche warning) app is an iOS, iPadOS, and macOS application that provides daily avalanche warnings from the Norwegian Avalanche Warning Service API

Jonas Follesø 8 Dec 15, 2022
Exclude files and folders from Alfred’s search results

Ignore in Alfred Alfred Workflow Exclude files and folders from Alfred’s search results ⤓ Download Workflow About The macOS metadata search API only a

Alfred 10 Dec 13, 2022
A tool that generate code for Swift projects, designed to improve the maintainability of UIColors

SwiftColorGen A tool that generate code for Swift projects, designed to improve the maintainability of UIColors. Please notice, this tool still under

Fernando del Rio 150 Oct 23, 2022
🕳 A simple command line tool to punch hole to reduce disk usage on APFS volume for such as a raw disk image.

HolePunch NAME holepunch -- A simple command line tool to punch hole to reduce disk usage on APFS volume for such as a raw disk image. SYNOPSIS holepu

Yoshimasa Niwa 15 Nov 24, 2022