xcodebuild-helper 1.1.1 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (204) hide show
  1. checksums.yaml +4 -4
  2. metadata +4 -220
  3. data/.codeclimate.yml +0 -20
  4. data/.gitignore +0 -1
  5. data/.rspec +0 -2
  6. data/.travis.yml +0 -7
  7. data/Gemfile +0 -6
  8. data/Gemfile.lock +0 -114
  9. data/Guardfile +0 -18
  10. data/README.md +0 -7
  11. data/Rakefile +0 -7
  12. data/assets/style.css +0 -110
  13. data/bin/oclint +0 -5
  14. data/bin/oclint-0.8 +0 -5
  15. data/bin/oclint-json-compilation-database +0 -5
  16. data/bin/oclint-xcodebuild +0 -5
  17. data/externals/oclint/LICENSE +0 -69
  18. data/externals/oclint/bin/oclint +0 -0
  19. data/externals/oclint/bin/oclint-0.10.2 +0 -0
  20. data/externals/oclint/bin/oclint-json-compilation-database +0 -88
  21. data/externals/oclint/bin/oclint-xcodebuild +0 -218
  22. data/externals/oclint/lib/clang/3.7.0/asan_blacklist.txt +0 -13
  23. data/externals/oclint/lib/clang/3.7.0/include/Intrin.h +0 -958
  24. data/externals/oclint/lib/clang/3.7.0/include/__stddef_max_align_t.h +0 -43
  25. data/externals/oclint/lib/clang/3.7.0/include/__wmmintrin_aes.h +0 -72
  26. data/externals/oclint/lib/clang/3.7.0/include/__wmmintrin_pclmul.h +0 -34
  27. data/externals/oclint/lib/clang/3.7.0/include/adxintrin.h +0 -88
  28. data/externals/oclint/lib/clang/3.7.0/include/altivec.h +0 -13528
  29. data/externals/oclint/lib/clang/3.7.0/include/ammintrin.h +0 -215
  30. data/externals/oclint/lib/clang/3.7.0/include/arm_acle.h +0 -304
  31. data/externals/oclint/lib/clang/3.7.0/include/arm_neon.h +0 -68419
  32. data/externals/oclint/lib/clang/3.7.0/include/avx2intrin.h +0 -1256
  33. data/externals/oclint/lib/clang/3.7.0/include/avx512bwintrin.h +0 -1250
  34. data/externals/oclint/lib/clang/3.7.0/include/avx512cdintrin.h +0 -131
  35. data/externals/oclint/lib/clang/3.7.0/include/avx512dqintrin.h +0 -242
  36. data/externals/oclint/lib/clang/3.7.0/include/avx512erintrin.h +0 -285
  37. data/externals/oclint/lib/clang/3.7.0/include/avx512fintrin.h +0 -2457
  38. data/externals/oclint/lib/clang/3.7.0/include/avx512vlbwintrin.h +0 -1907
  39. data/externals/oclint/lib/clang/3.7.0/include/avx512vldqintrin.h +0 -353
  40. data/externals/oclint/lib/clang/3.7.0/include/avx512vlintrin.h +0 -1982
  41. data/externals/oclint/lib/clang/3.7.0/include/avxintrin.h +0 -1308
  42. data/externals/oclint/lib/clang/3.7.0/include/bmi2intrin.h +0 -99
  43. data/externals/oclint/lib/clang/3.7.0/include/bmiintrin.h +0 -153
  44. data/externals/oclint/lib/clang/3.7.0/include/cpuid.h +0 -209
  45. data/externals/oclint/lib/clang/3.7.0/include/cuda_builtin_vars.h +0 -110
  46. data/externals/oclint/lib/clang/3.7.0/include/emmintrin.h +0 -1480
  47. data/externals/oclint/lib/clang/3.7.0/include/f16cintrin.h +0 -63
  48. data/externals/oclint/lib/clang/3.7.0/include/float.h +0 -124
  49. data/externals/oclint/lib/clang/3.7.0/include/fma4intrin.h +0 -236
  50. data/externals/oclint/lib/clang/3.7.0/include/fmaintrin.h +0 -234
  51. data/externals/oclint/lib/clang/3.7.0/include/fxsrintrin.h +0 -55
  52. data/externals/oclint/lib/clang/3.7.0/include/htmintrin.h +0 -226
  53. data/externals/oclint/lib/clang/3.7.0/include/htmxlintrin.h +0 -363
  54. data/externals/oclint/lib/clang/3.7.0/include/ia32intrin.h +0 -101
  55. data/externals/oclint/lib/clang/3.7.0/include/immintrin.h +0 -203
  56. data/externals/oclint/lib/clang/3.7.0/include/inttypes.h +0 -102
  57. data/externals/oclint/lib/clang/3.7.0/include/iso646.h +0 -43
  58. data/externals/oclint/lib/clang/3.7.0/include/limits.h +0 -118
  59. data/externals/oclint/lib/clang/3.7.0/include/lzcntintrin.h +0 -72
  60. data/externals/oclint/lib/clang/3.7.0/include/mm3dnow.h +0 -167
  61. data/externals/oclint/lib/clang/3.7.0/include/mm_malloc.h +0 -75
  62. data/externals/oclint/lib/clang/3.7.0/include/mmintrin.h +0 -507
  63. data/externals/oclint/lib/clang/3.7.0/include/module.modulemap +0 -196
  64. data/externals/oclint/lib/clang/3.7.0/include/nmmintrin.h +0 -35
  65. data/externals/oclint/lib/clang/3.7.0/include/pmmintrin.h +0 -122
  66. data/externals/oclint/lib/clang/3.7.0/include/popcntintrin.h +0 -50
  67. data/externals/oclint/lib/clang/3.7.0/include/prfchwintrin.h +0 -39
  68. data/externals/oclint/lib/clang/3.7.0/include/rdseedintrin.h +0 -59
  69. data/externals/oclint/lib/clang/3.7.0/include/rtmintrin.h +0 -59
  70. data/externals/oclint/lib/clang/3.7.0/include/s390intrin.h +0 -39
  71. data/externals/oclint/lib/clang/3.7.0/include/sanitizer/allocator_interface.h +0 -66
  72. data/externals/oclint/lib/clang/3.7.0/include/sanitizer/asan_interface.h +0 -155
  73. data/externals/oclint/lib/clang/3.7.0/include/sanitizer/common_interface_defs.h +0 -118
  74. data/externals/oclint/lib/clang/3.7.0/include/sanitizer/coverage_interface.h +0 -63
  75. data/externals/oclint/lib/clang/3.7.0/include/sanitizer/dfsan_interface.h +0 -114
  76. data/externals/oclint/lib/clang/3.7.0/include/sanitizer/linux_syscall_hooks.h +0 -3070
  77. data/externals/oclint/lib/clang/3.7.0/include/sanitizer/lsan_interface.h +0 -84
  78. data/externals/oclint/lib/clang/3.7.0/include/sanitizer/msan_interface.h +0 -107
  79. data/externals/oclint/lib/clang/3.7.0/include/sanitizer/tsan_interface_atomic.h +0 -222
  80. data/externals/oclint/lib/clang/3.7.0/include/shaintrin.h +0 -79
  81. data/externals/oclint/lib/clang/3.7.0/include/smmintrin.h +0 -487
  82. data/externals/oclint/lib/clang/3.7.0/include/stdalign.h +0 -35
  83. data/externals/oclint/lib/clang/3.7.0/include/stdarg.h +0 -52
  84. data/externals/oclint/lib/clang/3.7.0/include/stdatomic.h +0 -190
  85. data/externals/oclint/lib/clang/3.7.0/include/stdbool.h +0 -44
  86. data/externals/oclint/lib/clang/3.7.0/include/stddef.h +0 -137
  87. data/externals/oclint/lib/clang/3.7.0/include/stdint.h +0 -707
  88. data/externals/oclint/lib/clang/3.7.0/include/stdnoreturn.h +0 -30
  89. data/externals/oclint/lib/clang/3.7.0/include/tbmintrin.h +0 -154
  90. data/externals/oclint/lib/clang/3.7.0/include/tgmath.h +0 -1374
  91. data/externals/oclint/lib/clang/3.7.0/include/tmmintrin.h +0 -230
  92. data/externals/oclint/lib/clang/3.7.0/include/unwind.h +0 -282
  93. data/externals/oclint/lib/clang/3.7.0/include/vadefs.h +0 -65
  94. data/externals/oclint/lib/clang/3.7.0/include/varargs.h +0 -26
  95. data/externals/oclint/lib/clang/3.7.0/include/vecintrin.h +0 -8946
  96. data/externals/oclint/lib/clang/3.7.0/include/wmmintrin.h +0 -42
  97. data/externals/oclint/lib/clang/3.7.0/include/x86intrin.h +0 -81
  98. data/externals/oclint/lib/clang/3.7.0/include/xmmintrin.h +0 -1008
  99. data/externals/oclint/lib/clang/3.7.0/include/xopintrin.h +0 -809
  100. data/externals/oclint/lib/clang/3.7.0/include/xtestintrin.h +0 -41
  101. data/externals/oclint/lib/clang/3.7.0/lib/darwin/libclang_rt.asan_iossim_dynamic.dylib +0 -0
  102. data/externals/oclint/lib/clang/3.7.0/lib/darwin/libclang_rt.asan_osx_dynamic.dylib +0 -0
  103. data/externals/oclint/lib/clang/3.7.0/lib/darwin/libclang_rt.builtins-i386.a +0 -0
  104. data/externals/oclint/lib/clang/3.7.0/lib/darwin/libclang_rt.builtins-x86_64.a +0 -0
  105. data/externals/oclint/lib/clang/3.7.0/lib/darwin/libclang_rt.profile_osx.a +0 -0
  106. data/externals/oclint/lib/clang/3.7.0/lib/darwin/libclang_rt.safestack_osx.a +0 -0
  107. data/externals/oclint/lib/clang/3.7.0/lib/darwin/libclang_rt.ubsan_iossim_dynamic.dylib +0 -0
  108. data/externals/oclint/lib/clang/3.7.0/lib/darwin/libclang_rt.ubsan_osx_dynamic.dylib +0 -0
  109. data/externals/oclint/lib/oclint/reporters/libHTMLReporter.dylib +0 -0
  110. data/externals/oclint/lib/oclint/reporters/libJSONReporter.dylib +0 -0
  111. data/externals/oclint/lib/oclint/reporters/libPMDReporter.dylib +0 -0
  112. data/externals/oclint/lib/oclint/reporters/libTextReporter.dylib +0 -0
  113. data/externals/oclint/lib/oclint/reporters/libXMLReporter.dylib +0 -0
  114. data/externals/oclint/lib/oclint/reporters/libXcodeReporter.dylib +0 -0
  115. data/externals/oclint/lib/oclint/rules/libAvoidBranchingStatementAsLastInLoopRule.dylib +0 -0
  116. data/externals/oclint/lib/oclint/rules/libAvoidDefaultArgumentsOnVirtualMethodsRule.dylib +0 -0
  117. data/externals/oclint/lib/oclint/rules/libAvoidPrivateStaticMembersRule.dylib +0 -0
  118. data/externals/oclint/lib/oclint/rules/libBaseClassDestructorShouldBeVirtualOrProtectedRule.dylib +0 -0
  119. data/externals/oclint/lib/oclint/rules/libBitwiseOperatorInConditionalRule.dylib +0 -0
  120. data/externals/oclint/lib/oclint/rules/libBrokenNullCheckRule.dylib +0 -0
  121. data/externals/oclint/lib/oclint/rules/libBrokenOddnessCheckRule.dylib +0 -0
  122. data/externals/oclint/lib/oclint/rules/libCollapsibleIfStatementsRule.dylib +0 -0
  123. data/externals/oclint/lib/oclint/rules/libConstantConditionalOperatorRule.dylib +0 -0
  124. data/externals/oclint/lib/oclint/rules/libConstantIfExpressionRule.dylib +0 -0
  125. data/externals/oclint/lib/oclint/rules/libCoveredSwitchStatementsDontNeedDefaultRule.dylib +0 -0
  126. data/externals/oclint/lib/oclint/rules/libCyclomaticComplexityRule.dylib +0 -0
  127. data/externals/oclint/lib/oclint/rules/libDeadCodeRule.dylib +0 -0
  128. data/externals/oclint/lib/oclint/rules/libDefaultLabelNotLastInSwitchStatementRule.dylib +0 -0
  129. data/externals/oclint/lib/oclint/rules/libDestructorOfVirtualClassRule.dylib +0 -0
  130. data/externals/oclint/lib/oclint/rules/libDoubleNegativeRule.dylib +0 -0
  131. data/externals/oclint/lib/oclint/rules/libEmptyCatchStatementRule.dylib +0 -0
  132. data/externals/oclint/lib/oclint/rules/libEmptyDoWhileStatementRule.dylib +0 -0
  133. data/externals/oclint/lib/oclint/rules/libEmptyElseBlockRule.dylib +0 -0
  134. data/externals/oclint/lib/oclint/rules/libEmptyFinallyStatementRule.dylib +0 -0
  135. data/externals/oclint/lib/oclint/rules/libEmptyForStatementRule.dylib +0 -0
  136. data/externals/oclint/lib/oclint/rules/libEmptyIfStatementRule.dylib +0 -0
  137. data/externals/oclint/lib/oclint/rules/libEmptySwitchStatementRule.dylib +0 -0
  138. data/externals/oclint/lib/oclint/rules/libEmptyTryStatementRule.dylib +0 -0
  139. data/externals/oclint/lib/oclint/rules/libEmptyWhileStatementRule.dylib +0 -0
  140. data/externals/oclint/lib/oclint/rules/libForLoopShouldBeWhileLoopRule.dylib +0 -0
  141. data/externals/oclint/lib/oclint/rules/libGotoStatementRule.dylib +0 -0
  142. data/externals/oclint/lib/oclint/rules/libInvertedLogicRule.dylib +0 -0
  143. data/externals/oclint/lib/oclint/rules/libJumbledIncrementerRule.dylib +0 -0
  144. data/externals/oclint/lib/oclint/rules/libLongClassRule.dylib +0 -0
  145. data/externals/oclint/lib/oclint/rules/libLongLineRule.dylib +0 -0
  146. data/externals/oclint/lib/oclint/rules/libLongMethodRule.dylib +0 -0
  147. data/externals/oclint/lib/oclint/rules/libLongVariableNameRule.dylib +0 -0
  148. data/externals/oclint/lib/oclint/rules/libMisplacedNullCheckRule.dylib +0 -0
  149. data/externals/oclint/lib/oclint/rules/libMissingBreakInSwitchStatementRule.dylib +0 -0
  150. data/externals/oclint/lib/oclint/rules/libMultipleUnaryOperatorRule.dylib +0 -0
  151. data/externals/oclint/lib/oclint/rules/libNPathComplexityRule.dylib +0 -0
  152. data/externals/oclint/lib/oclint/rules/libNcssMethodCountRule.dylib +0 -0
  153. data/externals/oclint/lib/oclint/rules/libNestedBlockDepthRule.dylib +0 -0
  154. data/externals/oclint/lib/oclint/rules/libNonCaseLabelInSwitchStatementRule.dylib +0 -0
  155. data/externals/oclint/lib/oclint/rules/libObjCAssignIvarOutsideAccessorsRule.dylib +0 -0
  156. data/externals/oclint/lib/oclint/rules/libObjCBoxedExpressionsRule.dylib +0 -0
  157. data/externals/oclint/lib/oclint/rules/libObjCContainerLiteralsRule.dylib +0 -0
  158. data/externals/oclint/lib/oclint/rules/libObjCNSNumberLiteralsRule.dylib +0 -0
  159. data/externals/oclint/lib/oclint/rules/libObjCObjectSubscriptingRule.dylib +0 -0
  160. data/externals/oclint/lib/oclint/rules/libObjCVerifyIsEqualHashRule.dylib +0 -0
  161. data/externals/oclint/lib/oclint/rules/libObjCVerifyMustCallSuperRule.dylib +0 -0
  162. data/externals/oclint/lib/oclint/rules/libObjCVerifyProhibitedCallRule.dylib +0 -0
  163. data/externals/oclint/lib/oclint/rules/libObjCVerifyProtectedMethodRule.dylib +0 -0
  164. data/externals/oclint/lib/oclint/rules/libObjCVerifySubclassMustImplementRule.dylib +0 -0
  165. data/externals/oclint/lib/oclint/rules/libParameterReassignmentRule.dylib +0 -0
  166. data/externals/oclint/lib/oclint/rules/libPreferEarlyExitRule.dylib +0 -0
  167. data/externals/oclint/lib/oclint/rules/libRedundantConditionalOperatorRule.dylib +0 -0
  168. data/externals/oclint/lib/oclint/rules/libRedundantIfStatementRule.dylib +0 -0
  169. data/externals/oclint/lib/oclint/rules/libRedundantLocalVariableRule.dylib +0 -0
  170. data/externals/oclint/lib/oclint/rules/libRedundantNilCheckRule.dylib +0 -0
  171. data/externals/oclint/lib/oclint/rules/libReturnFromFinallyBlockRule.dylib +0 -0
  172. data/externals/oclint/lib/oclint/rules/libShortVariableNameRule.dylib +0 -0
  173. data/externals/oclint/lib/oclint/rules/libSwitchStatementsShouldHaveDefaultRule.dylib +0 -0
  174. data/externals/oclint/lib/oclint/rules/libThrowExceptionFromFinallyBlockRule.dylib +0 -0
  175. data/externals/oclint/lib/oclint/rules/libTooFewBranchesInSwitchStatementRule.dylib +0 -0
  176. data/externals/oclint/lib/oclint/rules/libTooManyFieldsRule.dylib +0 -0
  177. data/externals/oclint/lib/oclint/rules/libTooManyMethodsRule.dylib +0 -0
  178. data/externals/oclint/lib/oclint/rules/libTooManyParametersRule.dylib +0 -0
  179. data/externals/oclint/lib/oclint/rules/libUnnecessaryElseStatementRule.dylib +0 -0
  180. data/externals/oclint/lib/oclint/rules/libUnnecessaryNullCheckForCXXDeallocRule.dylib +0 -0
  181. data/externals/oclint/lib/oclint/rules/libUnusedLocalVariableRule.dylib +0 -0
  182. data/externals/oclint/lib/oclint/rules/libUnusedMethodParameterRule.dylib +0 -0
  183. data/externals/oclint/lib/oclint/rules/libUselessParenthesesRule.dylib +0 -0
  184. data/lib/coverage_html_converter.rb +0 -141
  185. data/lib/coverage_plan.rb +0 -27
  186. data/lib/device.rb +0 -27
  187. data/lib/execute.rb +0 -7
  188. data/lib/lint_plan.rb +0 -41
  189. data/lib/rules.rb +0 -23
  190. data/lib/test_plan.rb +0 -11
  191. data/lib/version.rb +0 -3
  192. data/lib/xcode.rb +0 -128
  193. data/lib/xcodebuild-helper.rb +0 -135
  194. data/spec/coverage_html_coverter_spec.rb +0 -55
  195. data/spec/coverage_plan_spec.rb +0 -23
  196. data/spec/device_spec.rb +0 -24
  197. data/spec/lint_plan_spec.rb +0 -35
  198. data/spec/rule_spec.rb +0 -37
  199. data/spec/spec_helper.rb +0 -17
  200. data/spec/test_plan_spec.rb +0 -11
  201. data/spec/xcode_dsl_actions_spec.rb +0 -227
  202. data/spec/xcode_dsl_spec.rb +0 -176
  203. data/spec/xcode_spec.rb +0 -85
  204. data/xcodebuild-helper.gemspec +0 -27
@@ -1,88 +0,0 @@
1
- #!/usr/bin/env python
2
-
3
- import os
4
- import platform
5
- import json
6
- import argparse
7
- import re
8
- import subprocess
9
- import sys
10
-
11
- OCLINT_BIN_FOLDER = os.path.dirname(os.path.abspath(__file__))
12
- OCLINT_BIN = OCLINT_BIN_FOLDER + os.sep + "oclint"
13
- if platform.system() == "Windows":
14
- OCLINT_BIN += ".exe"
15
- CURRENT_WORKING_DIRECTORY = os.getcwd()
16
- JSON_COMPILATION_DATABASE = CURRENT_WORKING_DIRECTORY + os.sep + "compile_commands.json"
17
-
18
- arg_parser = argparse.ArgumentParser(description='OCLint for JSON Compilation Database (compile_commands.json)')
19
- arg_parser.add_argument("-v", action="store_true", dest="invocation", help="show invocation command with arguments")
20
- arg_parser.add_argument('-debug', '--debug', action="store_true", dest="debug", help="invoke OCLint in debug mode")
21
- arg_parser.add_argument('-i', '-include', '--include', action='append', dest='includes', help="extract files matching pattern")
22
- arg_parser.add_argument('-e', '-exclude', '--exclude', action='append', dest='excludes', help="remove files matching pattern")
23
- arg_parser.add_argument('oclint_args', nargs='*', help="arguments that are passed to OCLint invocation")
24
- args = arg_parser.parse_args()
25
-
26
- def get_source_path(file_attr, dir_attr):
27
- if file_attr.startswith(os.sep):
28
- return file_attr
29
- elif dir_attr.endswith(os.sep):
30
- return dir_attr + file_attr
31
- else:
32
- return dir_attr + os.sep + file_attr
33
-
34
- def source_exist_at(path):
35
- return os.path.isfile(path)
36
-
37
- def source_list_inclusion_filter(source_list, inclusion_filter):
38
- filtered_list = []
39
- for path in source_list:
40
- if re.search(inclusion_filter, path):
41
- filtered_list.append(path)
42
- return filtered_list
43
-
44
- def source_list_exclusion_filter(source_list, exclusion_filter):
45
- filtered_list = []
46
- for path in source_list:
47
- if not re.search(exclusion_filter, path):
48
- filtered_list.append(path)
49
- return filtered_list
50
-
51
- if not source_exist_at(OCLINT_BIN):
52
- print "Error: OCLint executable file not found."
53
- sys.exit(99)
54
-
55
- if not source_exist_at(JSON_COMPILATION_DATABASE):
56
- print "Error: compile_commands.json not found at current location."
57
- sys.exit(98)
58
-
59
- compilation_database = json.load(open(JSON_COMPILATION_DATABASE))
60
- source_list = []
61
- for file_item in compilation_database:
62
- file_path = file_item["file"]
63
- if not platform.system() == "Windows":
64
- file_path = get_source_path(file_item["file"], file_item["directory"])
65
- if source_exist_at(file_path) and not file_path in source_list:
66
- source_list.append(file_path)
67
- if args.includes:
68
- matched_list = []
69
- for inclusion_filter in args.includes:
70
- matched_list.extend( source_list_inclusion_filter(source_list, inclusion_filter) )
71
- source_list = matched_list
72
- if args.excludes:
73
- for exclusion_filter in args.excludes:
74
- source_list = source_list_exclusion_filter(source_list, exclusion_filter)
75
- source_paths = '"' + '" "'.join(source_list) + '"'
76
- oclint_arguments = ''
77
- if args.oclint_args:
78
- oclint_arguments = ' ' + ' '.join(args.oclint_args)
79
- debug_argument = ''
80
- if args.debug:
81
- debug_argument = ' -debug'
82
- oclint_invocation = OCLINT_BIN + debug_argument + oclint_arguments + ' ' + source_paths
83
- if args.invocation:
84
- print '------------------------------ OCLint ------------------------------'
85
- print oclint_invocation
86
- print '--------------------------------------------------------------------'
87
- exit_code = subprocess.call(oclint_invocation, shell=True)
88
- sys.exit(exit_code)
@@ -1,218 +0,0 @@
1
- #!/usr/bin/env python
2
-
3
- import os
4
- import sys
5
- import json
6
- import argparse
7
- import re
8
- import shlex
9
- import StringIO
10
- import glob
11
- import itertools
12
-
13
-
14
- SUPPORTED_COMPILERS = [
15
- "clang",
16
- "clang\+\+",
17
- "llvm-cpp-4.2",
18
- "llvm-g\+\+",
19
- "llvm-g\+\+-4.2",
20
- "llvm-gcc",
21
- "llvm-gcc-4.2",
22
- "arm-apple-darwin10-llvm-g\+\+-4.2",
23
- "arm-apple-darwin10-llvm-gcc-4.2",
24
- "i686-apple-darwin10-llvm-g\+\+-4.2",
25
- "i686-apple-darwin10-llvm-gcc-4.2",
26
- "gcc",
27
- "g\+\+",
28
- "c\+\+",
29
- "cc"
30
- ]
31
-
32
- DEFAULT_INPUT_FILE = "xcodebuild.log"
33
-
34
- JSON_COMPILATION_DATABASE = "compile_commands.json"
35
-
36
-
37
- _find_unsafe = re.compile('[ "\\\\]').search
38
-
39
- def clang_quote(s):
40
- """
41
- Return a minimally-escaped version of the string *s* that clang-based tools understand.
42
- (See http://clang.llvm.org/docs/JSONCompilationDatabase.html)
43
- ex:
44
- clang_quote('aa') == r'aa'
45
- clang_quote('a"a') == r'"a\"a"'
46
- clang_quote('--my-option=a"a') == r'"--my-option=a\"a"'
47
- """
48
- if not s:
49
- return '""'
50
-
51
- if _find_unsafe(s) is None:
52
- return s
53
-
54
- return '"' + s.replace('\\', '\\\\').replace('"', '\\"') + '"'
55
-
56
-
57
- _find_quoting = re.compile('[\'"\\\\]').search
58
-
59
- def tokenize_command(c):
60
- """Compute the list of shell arguments in *c* using shlex.split (note: make an explicit call to StringIO for compatibility with Python 2)."""
61
- if _find_quoting(c) is None:
62
- return map(str.strip, c.strip().split(' '))
63
- else:
64
- return shlex.split(StringIO.StringIO(c))
65
-
66
- # global table to map pth files to (source) pch files
67
- _pch_dictionary = {}
68
-
69
- def register_source_for_pth_file(clang_command, directory):
70
- tokens = iter(tokenize_command(clang_command))
71
- src_file = ""
72
- pth_file = ""
73
- try:
74
- while 1:
75
- tok = tokens.next()
76
- if tok == '-c':
77
- file = tokens.next()
78
- src_file = file
79
- elif tok == '-o':
80
- file = tokens.next()
81
- if file.endswith('.pch.pth') or file.endswith('.pch.pch') or file.endswith('.h.pch'):
82
- pth_file = file
83
- except StopIteration:
84
- if src_file and pth_file:
85
- _pch_dictionary[pth_file] = src_file
86
-
87
- def get_source_for_pth_file(file):
88
- src_file = _pch_dictionary.get(file + '.pth')
89
- if src_file is not None:
90
- return src_file
91
- return _pch_dictionary.get(file + '.pch')
92
-
93
- def process_clang_command(clang_command, directory):
94
- tokens = iter(tokenize_command(clang_command))
95
- command = []
96
- source_file = None
97
-
98
- try:
99
- while 1:
100
- tok = tokens.next()
101
- if tok == '-include':
102
- include_file = tokens.next()
103
- if not os.path.isfile(include_file):
104
- src_file = get_source_for_pth_file(include_file)
105
- if src_file is not None:
106
- include_file = src_file
107
- else:
108
- print "cannot find original pch source file for %s" % include_file
109
- exit(3)
110
- command.append(tok)
111
- command.append(clang_quote(include_file))
112
-
113
- elif tok == '-c':
114
- source_file = tokens.next()
115
- command.append(tok)
116
- command.append(clang_quote(source_file))
117
-
118
- else:
119
- command.append(clang_quote(tok))
120
-
121
- except StopIteration:
122
- return {"directory": directory, "command": " ".join(command), "file": os.path.normpath(source_file)}
123
-
124
-
125
- def read_directory(line):
126
- tokens = tokenize_command(line)
127
- if tokens[0] == "cd":
128
- return tokens[1]
129
- else:
130
- return ""
131
-
132
- def convert(input_file, output_file, is_excluded=None):
133
- json_input_mode = input_file.endswith('.json')
134
-
135
- find_compileC = re.compile("CompileC").search
136
-
137
- find_processPCH = re.compile("ProcessPCH").search
138
-
139
- find_clang_command = re.compile("(" + "|".join(SUPPORTED_COMPILERS) + ") .* -c .* -o ").search
140
-
141
- if is_excluded is None:
142
- is_excluded = (lambda x: False)
143
-
144
- with open(output_file, "w") as output:
145
- with open(input_file, "r") as input:
146
- if json_input_mode:
147
- lines = itertools.chain(*(json.loads(line).get('command', '').encode("utf8").splitlines(True) for line in input))
148
- else:
149
- lines = input
150
- try:
151
- output.write("[")
152
- cr = "\n"
153
- while 1:
154
- log_line = lines.next()
155
- compilation_section_re = find_compileC(log_line)
156
- if compilation_section_re:
157
- directory = read_directory(lines.next())
158
- if is_excluded(directory):
159
- continue
160
- while 1:
161
- log_line = lines.next()
162
- if not find_clang_command(log_line):
163
- continue
164
- output_record = process_clang_command(log_line, directory)
165
- output.write(cr)
166
- output.write(json.dumps(output_record, indent=2))
167
- cr = ",\n"
168
- break
169
- continue
170
- compilation_section_re = find_processPCH(log_line)
171
- if compilation_section_re:
172
- directory = read_directory(lines.next())
173
- if is_excluded(directory):
174
- continue
175
- while 1:
176
- log_line = lines.next()
177
- if not find_clang_command(log_line):
178
- continue
179
- register_source_for_pth_file(log_line, directory)
180
- break
181
- continue
182
- except StopIteration:
183
- output.write("\n]\n");
184
-
185
- def main():
186
- arg_parser = argparse.ArgumentParser(description='Converts xcodebuild logs or xctool-json-reporter logs to compile_commands.json')
187
- arg_parser.add_argument("-e", "-exclude", dest="exclusion", help="Directory exclusion pattern (regular expression)")
188
- arg_parser.add_argument("-o", "-output", dest="output_file", help="Output json file (default: ./%s)" % JSON_COMPILATION_DATABASE)
189
- arg_parser.add_argument(metavar="FILE", nargs='?', dest="input_file", help="Input log file (default: ./%s)" % DEFAULT_INPUT_FILE)
190
-
191
- args = arg_parser.parse_args()
192
-
193
- if args.input_file:
194
- input_file = args.input_file
195
- else:
196
- input_file = DEFAULT_INPUT_FILE
197
-
198
- if args.output_file:
199
- output_file = args.output_file
200
- else:
201
- output_file = JSON_COMPILATION_DATABASE
202
-
203
- if not os.path.isfile(input_file):
204
- print "Error: %s not found." % input_file
205
- exit(1)
206
-
207
- if args.exclusion:
208
- is_excluded = re.compile(args.exclusion).match
209
- else:
210
- is_excluded = None
211
-
212
- convert(input_file, output_file, is_excluded)
213
-
214
-
215
- if __name__ == '__main__':
216
- print "This binary is no longer under maintenance by OCLint team."
217
- print "Please consider using xcpretty (https://github.com/supermarin/xcpretty) instead!"
218
- main()
@@ -1,13 +0,0 @@
1
- # Blacklist for AddressSanitizer. Turns off instrumentation of particular
2
- # functions or sources. Use with care. You may set location of blacklist
3
- # at compile-time using -fsanitize-blacklist=<path> flag.
4
-
5
- # Example usage:
6
- # fun:*bad_function_name*
7
- # src:file_with_tricky_code.cc
8
- # global:*global_with_bad_access_or_initialization*
9
- # global:*global_with_initialization_issues*=init
10
- # type:*Namespace::ClassName*=init
11
-
12
- # Stack buffer overflow in VC/INCLUDE/xlocnum, see http://goo.gl/L4qqUG
13
- fun:*_Find_elem@*@std*