adlint 1.18.6 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (376) hide show
  1. data/ChangeLog +287 -188
  2. data/MANIFEST +278 -92
  3. data/NEWS +16 -4
  4. data/bin/adlintize +124 -3
  5. data/etc/conf.d/fallback/traits.erb +54 -1
  6. data/etc/conf.d/i686-cygwin/traits-gcc_4.3.4.erb +54 -1
  7. data/etc/conf.d/i686-devkit/traits-gcc_4.5.2.erb +54 -1
  8. data/etc/conf.d/i686-linux/traits-gcc_4.5.1.erb +54 -1
  9. data/etc/conf.d/i686-mingw/traits-gcc_4.6.1.erb +54 -1
  10. data/etc/mesg.d/c_builtin/en_US/messages.yml +2998 -0
  11. data/etc/mesg.d/c_builtin/ja_JP/messages.yml +2998 -0
  12. data/etc/mesg.d/core/en_US/messages.yml +134 -0
  13. data/etc/mesg.d/core/ja_JP/messages.yml +134 -0
  14. data/features/{message_detection → code_check}/E0013.feature +2 -2
  15. data/features/{message_detection → code_check}/W0001.feature +4 -4
  16. data/features/{message_detection → code_check}/W0002.feature +6 -6
  17. data/features/{message_detection → code_check}/W0003.feature +8 -8
  18. data/features/{message_detection → code_check}/W0007.feature +16 -16
  19. data/features/{message_detection → code_check}/W0010.feature +8 -8
  20. data/features/{message_detection → code_check}/W0013.feature +16 -16
  21. data/features/code_check/W0016.feature +200 -0
  22. data/features/code_check/W0017.feature +270 -0
  23. data/features/code_check/W0025.feature +66 -0
  24. data/features/code_check/W0026.feature +143 -0
  25. data/features/{message_detection → code_check}/W0093.feature +6 -6
  26. data/features/{message_detection → code_check}/W0104.feature +14 -14
  27. data/features/{message_detection → code_check}/W0109.feature +6 -6
  28. data/features/code_check/W0119.feature +151 -0
  29. data/features/code_check/W0120.feature +137 -0
  30. data/features/code_check/W0121.feature +147 -0
  31. data/features/code_check/W0122.feature +142 -0
  32. data/features/code_check/W0123.feature +147 -0
  33. data/features/code_check/W0124.feature +142 -0
  34. data/features/code_check/W0125.feature +147 -0
  35. data/features/code_check/W0126.feature +142 -0
  36. data/features/code_check/W0127.feature +147 -0
  37. data/features/code_check/W0128.feature +147 -0
  38. data/features/code_check/W0129.feature +147 -0
  39. data/features/code_check/W0130.feature +159 -0
  40. data/features/code_check/W0131.feature +154 -0
  41. data/features/code_check/W0132.feature +137 -0
  42. data/features/code_check/W0133.feature +151 -0
  43. data/features/code_check/W0134.feature +151 -0
  44. data/features/code_check/W0135.feature +147 -0
  45. data/features/code_check/W0136.feature +151 -0
  46. data/features/code_check/W0137.feature +147 -0
  47. data/features/code_check/W0138.feature +151 -0
  48. data/features/code_check/W0139.feature +147 -0
  49. data/features/code_check/W0140.feature +159 -0
  50. data/features/code_check/W0141.feature +155 -0
  51. data/features/code_check/W0142.feature +152 -0
  52. data/features/code_check/W0143.feature +147 -0
  53. data/features/code_check/W0144.feature +146 -0
  54. data/features/code_check/W0145.feature +147 -0
  55. data/features/code_check/W0146.feature +146 -0
  56. data/features/code_check/W0147.feature +146 -0
  57. data/features/code_check/W0148.feature +147 -0
  58. data/features/code_check/W0149.feature +146 -0
  59. data/features/code_check/W0150.feature +146 -0
  60. data/features/code_check/W0151.feature +146 -0
  61. data/features/code_check/W0152.feature +155 -0
  62. data/features/code_check/W0153.feature +155 -0
  63. data/features/code_check/W0154.feature +154 -0
  64. data/features/code_check/W0155.feature +154 -0
  65. data/features/code_check/W0156.feature +167 -0
  66. data/features/code_check/W0157.feature +152 -0
  67. data/features/code_check/W0158.feature +147 -0
  68. data/features/code_check/W0159.feature +147 -0
  69. data/features/code_check/W0160.feature +147 -0
  70. data/features/code_check/W0161.feature +151 -0
  71. data/features/code_check/W0162.feature +146 -0
  72. data/features/code_check/W0163.feature +146 -0
  73. data/features/code_check/W0164.feature +146 -0
  74. data/features/code_check/W0165.feature +151 -0
  75. data/features/code_check/W0166.feature +146 -0
  76. data/features/code_check/W0167.feature +146 -0
  77. data/features/code_check/W0168.feature +146 -0
  78. data/features/code_check/W0169.feature +151 -0
  79. data/features/code_check/W0170.feature +146 -0
  80. data/features/code_check/W0171.feature +146 -0
  81. data/features/code_check/W0172.feature +146 -0
  82. data/features/code_check/W0173.feature +159 -0
  83. data/features/code_check/W0174.feature +159 -0
  84. data/features/code_check/W0175.feature +158 -0
  85. data/features/code_check/W0176.feature +158 -0
  86. data/features/code_check/W0177.feature +159 -0
  87. data/features/code_check/W0178.feature +155 -0
  88. data/features/code_check/W0179.feature +154 -0
  89. data/features/code_check/W0180.feature +154 -0
  90. data/features/code_check/W0181.feature +167 -0
  91. data/features/code_check/W0182.feature +147 -0
  92. data/features/code_check/W0183.feature +147 -0
  93. data/features/code_check/W0184.feature +148 -0
  94. data/features/code_check/W0185.feature +142 -0
  95. data/features/code_check/W0186.feature +142 -0
  96. data/features/code_check/W0187.feature +142 -0
  97. data/features/code_check/W0188.feature +142 -0
  98. data/features/code_check/W0189.feature +142 -0
  99. data/features/code_check/W0190.feature +142 -0
  100. data/features/code_check/W0191.feature +142 -0
  101. data/features/code_check/W0192.feature +142 -0
  102. data/features/code_check/W0193.feature +143 -0
  103. data/features/code_check/W0194.feature +142 -0
  104. data/features/code_check/W0195.feature +142 -0
  105. data/features/code_check/W0196.feature +142 -0
  106. data/features/code_check/W0197.feature +142 -0
  107. data/features/code_check/W0198.feature +142 -0
  108. data/features/code_check/W0199.feature +143 -0
  109. data/features/code_check/W0200.feature +142 -0
  110. data/features/code_check/W0201.feature +142 -0
  111. data/features/code_check/W0202.feature +142 -0
  112. data/features/code_check/W0203.feature +142 -0
  113. data/features/code_check/W0204.feature +142 -0
  114. data/features/code_check/W0205.feature +143 -0
  115. data/features/code_check/W0206.feature +150 -0
  116. data/features/code_check/W0207.feature +150 -0
  117. data/features/code_check/W0208.feature +150 -0
  118. data/features/code_check/W0209.feature +151 -0
  119. data/features/code_check/W0210.feature +151 -0
  120. data/features/code_check/W0211.feature +151 -0
  121. data/features/code_check/W0212.feature +147 -0
  122. data/features/code_check/W0213.feature +142 -0
  123. data/features/code_check/W0214.feature +147 -0
  124. data/features/code_check/W0215.feature +142 -0
  125. data/features/code_check/W0216.feature +142 -0
  126. data/features/code_check/W0217.feature +142 -0
  127. data/features/code_check/W0218.feature +142 -0
  128. data/features/code_check/W0219.feature +142 -0
  129. data/features/code_check/W0220.feature +142 -0
  130. data/features/code_check/W0221.feature +147 -0
  131. data/features/code_check/W0222.feature +142 -0
  132. data/features/code_check/W0223.feature +147 -0
  133. data/features/code_check/W0224.feature +142 -0
  134. data/features/code_check/W0225.feature +142 -0
  135. data/features/code_check/W0226.feature +142 -0
  136. data/features/code_check/W0227.feature +142 -0
  137. data/features/code_check/W0228.feature +142 -0
  138. data/features/code_check/W0229.feature +142 -0
  139. data/features/code_check/W0230.feature +147 -0
  140. data/features/code_check/W0231.feature +142 -0
  141. data/features/code_check/W0232.feature +148 -0
  142. data/features/code_check/W0233.feature +142 -0
  143. data/features/code_check/W0234.feature +143 -0
  144. data/features/code_check/W0235.feature +142 -0
  145. data/features/code_check/W0236.feature +143 -0
  146. data/features/code_check/W0237.feature +142 -0
  147. data/features/code_check/W0238.feature +143 -0
  148. data/features/code_check/W0239.feature +154 -0
  149. data/features/code_check/W0240.feature +155 -0
  150. data/features/code_check/W0241.feature +154 -0
  151. data/features/code_check/W0242.feature +155 -0
  152. data/features/code_check/W0243.feature +154 -0
  153. data/features/code_check/W0244.feature +155 -0
  154. data/features/code_check/W0245.feature +147 -0
  155. data/features/code_check/W0246.feature +147 -0
  156. data/features/code_check/W0247.feature +147 -0
  157. data/features/code_check/W0248.feature +142 -0
  158. data/features/code_check/W0249.feature +142 -0
  159. data/features/code_check/W0250.feature +146 -0
  160. data/features/code_check/W0251.feature +159 -0
  161. data/features/code_check/W0252.feature +155 -0
  162. data/features/code_check/W0253.feature +154 -0
  163. data/features/code_check/W0254.feature +154 -0
  164. data/features/code_check/W0477.feature +77 -0
  165. data/features/code_check/W0478.feature +103 -0
  166. data/features/code_check/W0479.feature +65 -0
  167. data/features/code_check/W0480.feature +119 -0
  168. data/features/code_check/W0481.feature +28 -0
  169. data/features/code_check/W0482.feature +64 -0
  170. data/features/code_check/W0483.feature +62 -0
  171. data/features/code_check/W0573.feature +91 -0
  172. data/features/{message_detection → code_check}/W0583.feature +2 -2
  173. data/features/{message_detection → code_check}/W0606.feature +2 -2
  174. data/features/{message_detection → code_check}/W0641.feature +16 -16
  175. data/features/{message_detection → code_check}/W0643.feature +12 -12
  176. data/features/{message_detection → code_check}/W0644.feature +50 -50
  177. data/features/{message_detection → code_check}/W0645.feature +16 -16
  178. data/features/{message_detection → code_check}/W0646.feature +16 -16
  179. data/features/{message_detection → code_check}/W0649.feature +28 -28
  180. data/features/{message_detection → code_check}/W0650.feature +24 -24
  181. data/features/code_check/W0685.feature +120 -0
  182. data/features/code_check/W0686.feature +92 -0
  183. data/features/{message_detection → code_check}/W0687.feature +4 -4
  184. data/features/{message_detection → code_check}/W0688.feature +12 -12
  185. data/features/{message_detection → code_check}/W0689.feature +8 -8
  186. data/features/{message_detection → code_check}/W0690.feature +6 -6
  187. data/features/{message_detection → code_check}/W0691.feature +14 -14
  188. data/features/{message_detection → code_check}/W0692.feature +4 -4
  189. data/features/{message_detection → code_check}/W0694.feature +10 -10
  190. data/features/code_check/W0695.feature +78 -0
  191. data/features/{message_detection → code_check}/W0697.feature +18 -18
  192. data/features/{message_detection → code_check}/W0698.feature +2 -2
  193. data/features/{message_detection → code_check}/W0699.feature +2 -2
  194. data/features/{message_detection → code_check}/W0700.feature +6 -6
  195. data/features/{message_detection → code_check}/W0703.feature +6 -6
  196. data/features/{message_detection → code_check}/W0705.feature +24 -24
  197. data/features/{message_detection → code_check}/W0707.feature +20 -20
  198. data/features/{message_detection → code_check}/W0711.feature +10 -10
  199. data/features/{message_detection → code_check}/W0712.feature +10 -10
  200. data/features/{message_detection → code_check}/W0713.feature +10 -10
  201. data/features/{message_detection → code_check}/W0714.feature +10 -10
  202. data/features/{message_detection → code_check}/W0715.feature +11 -11
  203. data/features/{message_detection → code_check}/W0716.feature +6 -6
  204. data/features/{message_detection → code_check}/W0717.feature +6 -6
  205. data/features/{message_detection → code_check}/W0718.feature +6 -6
  206. data/features/{message_detection → code_check}/W0719.feature +16 -16
  207. data/features/{message_detection → code_check}/W0723.feature +6 -6
  208. data/features/code_check/W0726.feature +95 -0
  209. data/features/{message_detection → code_check}/W0732.feature +6 -6
  210. data/features/{message_detection → code_check}/W0733.feature +6 -6
  211. data/features/{message_detection → code_check}/W0734.feature +16 -16
  212. data/features/{message_detection → code_check}/W0735.feature +16 -16
  213. data/features/{message_detection → code_check}/W0745.feature +10 -10
  214. data/features/code_check/W0747.feature +146 -0
  215. data/features/code_check/W0748.feature +148 -0
  216. data/features/code_check/W0749.feature +146 -0
  217. data/features/code_check/W0750.feature +146 -0
  218. data/features/code_check/W0751.feature +148 -0
  219. data/features/code_check/W0752.feature +143 -0
  220. data/features/code_check/W0753.feature +146 -0
  221. data/features/code_check/W0754.feature +146 -0
  222. data/features/code_check/W0755.feature +142 -0
  223. data/features/code_check/W0756.feature +148 -0
  224. data/features/code_check/W0757.feature +143 -0
  225. data/features/code_check/W0758.feature +143 -0
  226. data/features/code_check/W0759.feature +154 -0
  227. data/features/code_check/W0760.feature +154 -0
  228. data/features/code_check/W0761.feature +154 -0
  229. data/features/code_check/W0762.feature +154 -0
  230. data/features/code_check/W0763.feature +156 -0
  231. data/features/code_check/W0764.feature +151 -0
  232. data/features/code_check/W0765.feature +151 -0
  233. data/features/code_check/W0766.feature +151 -0
  234. data/features/code_check/W0767.feature +142 -0
  235. data/features/code_check/W0768.feature +142 -0
  236. data/features/code_check/W0769.feature +142 -0
  237. data/features/{message_detection → code_check}/W0780.feature +12 -12
  238. data/features/code_check/W0781.feature +145 -0
  239. data/features/{message_detection → code_check}/W0783.feature +8 -8
  240. data/features/{message_detection → code_check}/W0792.feature +16 -16
  241. data/features/{message_detection → code_check}/W0793.feature +16 -16
  242. data/features/{message_detection → code_check}/W0794.feature +10 -10
  243. data/features/code_check/W0801.feature +84 -0
  244. data/features/{message_detection → code_check}/W0805.feature +14 -14
  245. data/features/code_check/W0806.feature +24 -0
  246. data/features/code_check/W0807.feature +35 -0
  247. data/features/code_check/W0808.feature +34 -0
  248. data/features/code_check/W0809.feature +114 -0
  249. data/features/{message_detection → code_check}/W0811.feature +10 -10
  250. data/features/{message_detection → code_check}/W0830.feature +12 -12
  251. data/features/{message_detection → code_check}/W0833.feature +30 -30
  252. data/features/{message_detection → code_check}/W0834.feature +26 -26
  253. data/features/{message_detection → code_check}/W1026.feature +8 -8
  254. data/features/code_check/W1030.feature +84 -0
  255. data/features/{message_detection → code_check}/W1031.feature +36 -36
  256. data/features/{message_detection → code_check}/W1039.feature +24 -24
  257. data/features/{message_detection → code_check}/W1040.feature +8 -8
  258. data/features/{message_detection → code_check}/W1041.feature +2 -2
  259. data/features/{message_detection → code_check}/W1046.feature +6 -6
  260. data/features/{message_detection → code_check}/W1047.feature +12 -12
  261. data/features/{message_detection → code_check}/W1052.feature +6 -6
  262. data/features/{message_detection → code_check}/W1066.feature +6 -6
  263. data/features/{message_detection → code_check}/W1067.feature +6 -6
  264. data/features/{message_detection → code_check}/W1068.feature +6 -6
  265. data/features/{message_detection → code_check}/W1069.feature +10 -10
  266. data/features/{message_detection → code_check}/W1070.feature +15 -15
  267. data/features/{message_detection → code_check}/W1071.feature +8 -8
  268. data/features/{message_detection → code_check}/W1072.feature +2 -2
  269. data/features/{message_detection → code_check}/W1073.feature +14 -14
  270. data/features/{message_detection → code_check}/W1074.feature +10 -10
  271. data/features/{message_detection → code_check}/W1075.feature +10 -10
  272. data/features/{message_detection → code_check}/W1076.feature +8 -8
  273. data/features/{message_detection → code_check}/W1077.feature +18 -18
  274. data/features/{message_detection → code_check}/W9001.feature +2 -2
  275. data/features/{message_detection → code_check}/W9003.feature +12 -12
  276. data/features/step_definitions/{message_detection_steps.rb → code_check_steps.rb} +1 -1
  277. data/features/support/env.rb +19 -3
  278. data/lib/adlint.rb +1 -0
  279. data/lib/adlint/analyzer.rb +17 -1
  280. data/lib/adlint/c.rb +0 -4
  281. data/lib/adlint/c/phase.rb +55 -745
  282. data/lib/adlint/code.rb +0 -24
  283. data/lib/adlint/cpp.rb +0 -3
  284. data/lib/adlint/cpp/phase.rb +50 -112
  285. data/lib/adlint/driver.rb +2 -2
  286. data/lib/adlint/error.rb +4 -4
  287. data/lib/adlint/exam.rb +143 -0
  288. data/lib/adlint/exam/c_builtin.rb +813 -0
  289. data/lib/adlint/{c/message.rb → exam/c_builtin/c_check.rb} +2130 -798
  290. data/lib/adlint/{c/message_shima.rb → exam/c_builtin/c_check_shima.rb} +99 -28
  291. data/lib/adlint/{c/code.rb → exam/c_builtin/c_code.rb} +31 -5
  292. data/lib/adlint/{c/metric.rb → exam/c_builtin/c_metric.rb} +43 -11
  293. data/lib/adlint/{cpp/message.rb → exam/c_builtin/cpp_check.rb} +177 -73
  294. data/lib/adlint/{cpp/message_shima.rb → exam/c_builtin/cpp_check_shima.rb} +28 -8
  295. data/lib/adlint/{cpp/code.rb → exam/c_builtin/cpp_code.rb} +14 -3
  296. data/lib/adlint/{ld/message.rb → exam/c_builtin/ld_check.rb} +33 -12
  297. data/lib/adlint/{ld/metric.rb → exam/c_builtin/ld_metric.rb} +8 -3
  298. data/lib/adlint/lang.rb +2 -2
  299. data/lib/adlint/ld.rb +0 -2
  300. data/lib/adlint/ld/phase.rb +101 -101
  301. data/lib/adlint/message.rb +155 -98
  302. data/lib/adlint/metric.rb +0 -27
  303. data/lib/adlint/phase.rb +28 -3
  304. data/lib/adlint/report.rb +22 -12
  305. data/lib/adlint/traits.rb +97 -5
  306. data/lib/adlint/util.rb +100 -11
  307. data/lib/adlint/version.rb +5 -5
  308. data/share/doc/developers_guide_ja.html +3 -3
  309. data/share/doc/developers_guide_ja.texi +1 -1
  310. data/share/doc/users_guide_en.html +1817 -1648
  311. data/share/doc/users_guide_en.texi +202 -22
  312. data/share/doc/users_guide_ja.html +1836 -1663
  313. data/share/doc/users_guide_ja.texi +203 -20
  314. data/share/sample/bison-2.5/adlint/adlint_traits.yml +55 -2
  315. data/share/sample/bison-2.5/adlint/lib/adlint_traits.yml +47 -2
  316. data/share/sample/bison-2.5/adlint/src/adlint_traits.yml +47 -2
  317. data/share/sample/ctags-5.8/adlint/adlint_traits.yml +47 -2
  318. data/share/sample/flex-2.5.35/adlint/adlint_traits.yml +47 -2
  319. data/share/sample/ruby-1.9.3-p0/adlint/adlint_traits.yml +47 -2
  320. data/share/sample/ruby-1.9.3-p0/adlint/core/adlint_traits.yml +47 -2
  321. data/share/sample/ruby-1.9.3-p0/adlint/enc-trans/adlint_traits.yml +47 -2
  322. data/share/sample/ruby-1.9.3-p0/adlint/enc/adlint_traits.yml +47 -2
  323. data/share/sample/ruby-1.9.3-p0/adlint/ext-bigdecimal/adlint_traits.yml +47 -2
  324. data/share/sample/ruby-1.9.3-p0/adlint/ext-continuation/adlint_traits.yml +47 -2
  325. data/share/sample/ruby-1.9.3-p0/adlint/ext-coverage/adlint_traits.yml +47 -2
  326. data/share/sample/ruby-1.9.3-p0/adlint/ext-curses/adlint_traits.yml +47 -2
  327. data/share/sample/ruby-1.9.3-p0/adlint/ext-date/adlint_traits.yml +47 -2
  328. data/share/sample/ruby-1.9.3-p0/adlint/ext-dbm/adlint_traits.yml +47 -2
  329. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-bubblebabble/adlint_traits.yml +47 -2
  330. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-md5/adlint_traits.yml +47 -2
  331. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-rmd160/adlint_traits.yml +47 -2
  332. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha1/adlint_traits.yml +47 -2
  333. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha2/adlint_traits.yml +47 -2
  334. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest/adlint_traits.yml +47 -2
  335. data/share/sample/ruby-1.9.3-p0/adlint/ext-dl-callback/adlint_traits.yml +47 -2
  336. data/share/sample/ruby-1.9.3-p0/adlint/ext-dl/adlint_traits.yml +47 -2
  337. data/share/sample/ruby-1.9.3-p0/adlint/ext-etc/adlint_traits.yml +47 -2
  338. data/share/sample/ruby-1.9.3-p0/adlint/ext-fcntl/adlint_traits.yml +47 -2
  339. data/share/sample/ruby-1.9.3-p0/adlint/ext-fiber/adlint_traits.yml +47 -2
  340. data/share/sample/ruby-1.9.3-p0/adlint/ext-fiddle/adlint_traits.yml +47 -2
  341. data/share/sample/ruby-1.9.3-p0/adlint/ext-gdbm/adlint_traits.yml +47 -2
  342. data/share/sample/ruby-1.9.3-p0/adlint/ext-iconv/adlint_traits.yml +47 -2
  343. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-console/adlint_traits.yml +47 -2
  344. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-nonblock/adlint_traits.yml +47 -2
  345. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-wait/adlint_traits.yml +47 -2
  346. data/share/sample/ruby-1.9.3-p0/adlint/ext-json-generator/adlint_traits.yml +47 -2
  347. data/share/sample/ruby-1.9.3-p0/adlint/ext-json-parser/adlint_traits.yml +47 -2
  348. data/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-complex/adlint_traits.yml +47 -2
  349. data/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-rational/adlint_traits.yml +47 -2
  350. data/share/sample/ruby-1.9.3-p0/adlint/ext-nkf/adlint_traits.yml +47 -2
  351. data/share/sample/ruby-1.9.3-p0/adlint/ext-openssl/adlint_traits.yml +47 -2
  352. data/share/sample/ruby-1.9.3-p0/adlint/ext-pathname/adlint_traits.yml +47 -2
  353. data/share/sample/ruby-1.9.3-p0/adlint/ext-psych/adlint_traits.yml +47 -2
  354. data/share/sample/ruby-1.9.3-p0/adlint/ext-pty/adlint_traits.yml +47 -2
  355. data/share/sample/ruby-1.9.3-p0/adlint/ext-racc-cparse/adlint_traits.yml +47 -2
  356. data/share/sample/ruby-1.9.3-p0/adlint/ext-readline/adlint_traits.yml +47 -2
  357. data/share/sample/ruby-1.9.3-p0/adlint/ext-ripper/adlint_traits.yml +47 -2
  358. data/share/sample/ruby-1.9.3-p0/adlint/ext-sdbm/adlint_traits.yml +47 -2
  359. data/share/sample/ruby-1.9.3-p0/adlint/ext-socket/adlint_traits.yml +47 -2
  360. data/share/sample/ruby-1.9.3-p0/adlint/ext-stringio/adlint_traits.yml +47 -2
  361. data/share/sample/ruby-1.9.3-p0/adlint/ext-strscan/adlint_traits.yml +47 -2
  362. data/share/sample/ruby-1.9.3-p0/adlint/ext-syck/adlint_traits.yml +47 -2
  363. data/share/sample/ruby-1.9.3-p0/adlint/ext-syslog/adlint_traits.yml +47 -2
  364. data/share/sample/ruby-1.9.3-p0/adlint/ext-zlib/adlint_traits.yml +47 -2
  365. data/share/sample/screen-4.0.3/adlint/adlint_traits.yml +47 -2
  366. data/share/sample/vim-7.3/adlint/vim/adlint_traits.yml +47 -2
  367. data/share/sample/vim-7.3/adlint/xxd/adlint_traits.yml +47 -2
  368. data/share/sample/zsh-4.3.15/adlint/adlint_traits.yml +47 -2
  369. data/share/sample/zsh-4.3.15/adlint/builtins/adlint_traits.yml +47 -2
  370. data/share/sample/zsh-4.3.15/adlint/core/adlint_traits.yml +47 -2
  371. data/share/sample/zsh-4.3.15/adlint/modules/adlint_traits.yml +47 -2
  372. data/share/sample/zsh-4.3.15/adlint/zle/adlint_traits.yml +47 -2
  373. data/spec/conf.d/default_traits.yml +56 -3
  374. metadata +280 -94
  375. data/etc/mesg.d/en_US/messages.yml +0 -797
  376. data/etc/mesg.d/ja_JP/messages.yml +0 -797
@@ -3,7 +3,7 @@ Feature: W9001
3
3
  W9001 detects that the control never reach to a statement.
4
4
 
5
5
  Scenario: indefinitive controlling variable narrowing
6
- Given a target source named "W9001.c" with:
6
+ Given a target source named "fixture.c" with:
7
7
  """
8
8
  static void bar(int);
9
9
 
@@ -26,7 +26,7 @@ Feature: W9001
26
26
  return 0;
27
27
  }
28
28
  """
29
- When I successfully run `adlint W9001.c` on noarch
29
+ When I successfully run `adlint fixture.c` on noarch
30
30
  Then the output should exactly match with:
31
31
  | mesg | line | column |
32
32
 
@@ -5,7 +5,7 @@ Feature: W9003
5
5
 
6
6
  Scenario: passing an enum variable whose type differs from one of the
7
7
  corresponding enum parameter
8
- Given a target source named "W9003.c" with:
8
+ Given a target source named "fixture.c" with:
9
9
  """
10
10
  enum Color { RED, BLUE, GREEN };
11
11
  enum Fruit { APPLE, BANANA, ORANGE };
@@ -17,7 +17,7 @@ Feature: W9003
17
17
  foo(ORANGE); /* W9003 */
18
18
  }
19
19
  """
20
- When I successfully run `adlint W9003.c` on noarch
20
+ When I successfully run `adlint fixture.c` on noarch
21
21
  Then the output should exactly match with:
22
22
  | mesg | line | column |
23
23
  | W0118 | 4 | 13 |
@@ -28,7 +28,7 @@ Feature: W9003
28
28
  | W0628 | 6 | 13 |
29
29
 
30
30
  Scenario: passing an enum argument as an `int' parameter
31
- Given a target source named "W9003.c" with:
31
+ Given a target source named "fixture.c" with:
32
32
  """
33
33
  enum Color { RED, BLUE, GREEN };
34
34
 
@@ -39,7 +39,7 @@ Feature: W9003
39
39
  foo(RED); /* W9003 */
40
40
  }
41
41
  """
42
- When I successfully run `adlint W9003.c` on noarch
42
+ When I successfully run `adlint fixture.c` on noarch
43
43
  Then the output should exactly match with:
44
44
  | mesg | line | column |
45
45
  | W0118 | 3 | 13 |
@@ -50,7 +50,7 @@ Feature: W9003
50
50
  | W0628 | 5 | 13 |
51
51
 
52
52
  Scenario: passing an `int' argument as an enum parameter
53
- Given a target source named "W9003.c" with:
53
+ Given a target source named "fixture.c" with:
54
54
  """
55
55
  enum Color { RED, BLUE, GREEN };
56
56
 
@@ -61,7 +61,7 @@ Feature: W9003
61
61
  foo(0); /* W9003 */
62
62
  }
63
63
  """
64
- When I successfully run `adlint W9003.c` on noarch
64
+ When I successfully run `adlint fixture.c` on noarch
65
65
  Then the output should exactly match with:
66
66
  | mesg | line | column |
67
67
  | W0118 | 3 | 13 |
@@ -72,31 +72,31 @@ Feature: W9003
72
72
  | W0628 | 5 | 13 |
73
73
 
74
74
  Scenario: initializing an `int' variable with an enumerator
75
- Given a target source named "W9003.c" with:
75
+ Given a target source named "fixture.c" with:
76
76
  """
77
77
  enum Color { RED, BLUE, GREEN };
78
78
  int i = RED; /* W9003 */
79
79
  """
80
- When I successfully run `adlint W9003.c` on noarch
80
+ When I successfully run `adlint fixture.c` on noarch
81
81
  Then the output should exactly match with:
82
82
  | mesg | line | column |
83
83
  | W9003 | 2 | 9 |
84
84
  | W0117 | 2 | 5 |
85
85
 
86
86
  Scenario: initializing an enum variable with an `int' value
87
- Given a target source named "W9003.c" with:
87
+ Given a target source named "fixture.c" with:
88
88
  """
89
89
  enum Color { RED, BLUE, GREEN };
90
90
  enum Color c = 1; /* W9003 */
91
91
  """
92
- When I successfully run `adlint W9003.c` on noarch
92
+ When I successfully run `adlint fixture.c` on noarch
93
93
  Then the output should exactly match with:
94
94
  | mesg | line | column |
95
95
  | W9003 | 2 | 16 |
96
96
  | W0117 | 2 | 12 |
97
97
 
98
98
  Scenario: arithmetic expression with an `int' variable and an enum variable
99
- Given a target source named "W9003.c" with:
99
+ Given a target source named "fixture.c" with:
100
100
  """
101
101
  enum Color { RED, BLUE, GREEN };
102
102
 
@@ -110,7 +110,7 @@ Feature: W9003
110
110
  }
111
111
  }
112
112
  """
113
- When I successfully run `adlint W9003.c` on noarch
113
+ When I successfully run `adlint fixture.c` on noarch
114
114
  Then the output should exactly match with:
115
115
  | mesg | line | column |
116
116
  | W1076 | 3 | 12 |
@@ -10,7 +10,7 @@ end
10
10
  Then /^the output should exactly match with:$/ do |mesg_table|
11
11
  $all_output.each_line.zip(mesg_table.hashes).each do |line, row|
12
12
  if row
13
- line.should =~ /#{row[:line]}:#{row[:column]}:.*:#{row[:mesg]}/
13
+ line.should =~ /#{row[:line]}:#{row[:column]}:.*:.*:#{row[:mesg]}/
14
14
  else
15
15
  line.should =~ /::.*:/
16
16
  end
@@ -1,5 +1,8 @@
1
1
  NOARCH_TRAITS = <<EOF
2
- version: "1.0.0"
2
+ version: "2.0.0"
3
+
4
+ exam_packages:
5
+ - "c_builtin"
3
6
 
4
7
  project_traits:
5
8
  project_name: "features"
@@ -67,6 +70,11 @@ linker_traits:
67
70
 
68
71
  message_traits:
69
72
  language: "ja_JP"
73
+ message_with_class: false
74
+ warn_only_files_in:
75
+ individual_selection: true
76
+ exclusion:
77
+ inclusion:
70
78
  change_list:
71
79
  EOF
72
80
 
@@ -125,7 +133,15 @@ end
125
133
 
126
134
  def run_adlint(cmd, *args)
127
135
  create_adlint_files
128
- cd_to_tmpdir { $all_output = exec(cmd, *args) }
136
+ cd_to_tmpdir do
137
+ $all_output = exec(cmd, *args).each_line.map { |line|
138
+ if line =~ /_pinit\.h|_cinit\.h|stdio\.h|math\.h|assert\.h/
139
+ nil
140
+ else
141
+ line.chomp
142
+ end
143
+ }.compact.join("\n")
144
+ end
129
145
  end
130
146
 
131
147
  def cd_to_tmpdir(&block)
@@ -169,5 +185,5 @@ def create_adlint_files
169
185
  end
170
186
 
171
187
  def create_file(fname, content = "")
172
- File.open(fname, "w") { |io| io.puts content }
188
+ File.open(fname, "wb") { |io| io.puts content }
173
189
  end
data/lib/adlint.rb CHANGED
@@ -45,6 +45,7 @@ require "logger"
45
45
  require "adlint/prelude"
46
46
  require "adlint/analyzer"
47
47
  require "adlint/code"
48
+ require "adlint/exam"
48
49
  require "adlint/traits"
49
50
  require "adlint/driver"
50
51
  require "adlint/error"
@@ -64,6 +64,7 @@ module AdLint #:nodoc:
64
64
  @logger.datetime_format = "%F %T "
65
65
  begin
66
66
  Analyzer.current = self
67
+ log_start_analysis
67
68
  execute
68
69
  rescue => ex
69
70
  fatal(ex)
@@ -95,6 +96,21 @@ module AdLint #:nodoc:
95
96
  @log_base_fpath.add_ext(".log")
96
97
  end
97
98
  end
99
+
100
+ def log_start_analysis
101
+ exam_versions = Traits.instance.exam_packages.map { |exam_package|
102
+ exam_package.catalog
103
+ }.map { |catalog| "#{catalog.name}-#{catalog.short_version}" }
104
+
105
+ mesg = "start analysis by adlint-#{SHORT_VERSION} with "
106
+ if exam_versions.size < 3
107
+ mesg += exam_versions.join(" and ")
108
+ else
109
+ mesg += exam_versions[0..-2].join(", ") + " and " + exam_versions.last
110
+ end
111
+
112
+ info("#{mesg}.")
113
+ end
98
114
  end
99
115
 
100
116
  # == Single module analysis driver.
@@ -182,7 +198,7 @@ module AdLint #:nodoc:
182
198
  AdLint::Ld::TypedefReviewPhase,
183
199
  AdLint::Ld::FunctionReviewPhase,
184
200
  AdLint::Ld::VariableReviewPhase,
185
- AdLint::Ld::CommandPhase
201
+ AdLint::Ld::ExaminationPhase
186
202
  ].freeze
187
203
  private_constant :PHASE_CLASSES
188
204
 
data/lib/adlint/c.rb CHANGED
@@ -31,7 +31,6 @@
31
31
 
32
32
  require "adlint/c/branch"
33
33
  require "adlint/c/builtin"
34
- require "adlint/c/code"
35
34
  require "adlint/c/ctrlexpr"
36
35
  require "adlint/c/const"
37
36
  require "adlint/c/conv"
@@ -43,9 +42,6 @@ require "adlint/c/format"
43
42
  require "adlint/c/interp"
44
43
  require "adlint/c/lexer"
45
44
  require "adlint/c/mediator"
46
- require "adlint/c/message"
47
- require "adlint/c/message_shima"
48
- require "adlint/c/metric"
49
45
  require "adlint/c/object"
50
46
  require "adlint/c/operator"
51
47
  require "adlint/c/option"
@@ -31,793 +31,103 @@
31
31
 
32
32
  require "adlint/phase"
33
33
  require "adlint/error"
34
- require "adlint/monitor"
35
34
  require "adlint/c/lexer"
36
35
  require "adlint/c/parser"
37
36
  require "adlint/c/syntax"
38
37
  require "adlint/c/interp"
39
- require "adlint/c/code"
40
- require "adlint/c/metric"
41
- require "adlint/c/message"
42
38
  require "adlint/c/util"
43
39
 
44
40
  module AdLint #:nodoc:
45
41
  module C #:nodoc:
46
42
 
47
- class Prepare1Phase < Phase
48
- private
49
- def do_execute(context)
50
- monitored_region("pr3") do
51
- context[:c_visitor] = SyntaxTreeMulticastVisitor.new
52
- context[:c_parser] = Parser.new(context)
53
- context[:c_commands] = setup_message_detections(context)
54
- end
43
+ class CPhase < Phase
44
+ def initialize(context, phase_name)
45
+ super(context, "c", phase_name)
55
46
  end
47
+ end
56
48
 
57
- def setup_message_detections(context)
58
- [
59
- W0646.new(context)
60
- ]
49
+ class Prepare1Phase < CPhase
50
+ def initialize(context)
51
+ super(context, "pr3")
52
+ end
53
+
54
+ private
55
+ def do_execute(context, *)
56
+ context[:c_visitor] = SyntaxTreeMulticastVisitor.new
57
+ context[:c_parser] = Parser.new(context)
61
58
  end
62
59
  end
63
60
 
64
- class ParsePhase < Phase
61
+ class ParsePhase < CPhase
62
+ def initialize(context)
63
+ super(context, "prs")
64
+ end
65
+
65
66
  private
66
- def do_execute(context)
67
- monitored_region("prs") do
68
- begin
69
- context[:c_syntax_tree] = context[:c_parser].execute
70
- ensure
71
- context[:c_token_array] = context[:c_parser].token_array
72
- end
73
- end
67
+ def do_execute(context, *)
68
+ context[:c_syntax_tree] = context[:c_parser].execute
74
69
  ensure
70
+ context[:c_token_array] = context[:c_parser].token_array
75
71
  DebugUtil.dump_token_array(context)
76
72
  end
77
73
  end
78
74
 
79
- class ResolvePhase < Phase
80
- private
81
- def do_execute(context)
82
- monitored_region("typ") do
83
- resolver = StaticTypeResolver.new
84
- context[:c_type_table] = resolver.resolve(context[:c_syntax_tree])
85
- end
75
+ class ResolvePhase < CPhase
76
+ def initialize(context)
77
+ super(context, "typ")
86
78
  end
87
- end
88
79
 
89
- class Prepare2Phase < Phase
90
80
  private
91
- def do_execute(context)
92
- monitored_region("pr4") do
93
- context[:c_interpreter] = Interpreter.new(context[:c_type_table])
94
-
95
- context[:c_commands] += setup_code_extractions(context) +
96
- setup_metric_measurements(context) +
97
- setup_message_detections(context)
98
- end
81
+ def do_execute(context, *)
82
+ resolver = StaticTypeResolver.new
83
+ context[:c_type_table] = resolver.resolve(context[:c_syntax_tree])
99
84
  end
85
+ end
100
86
 
101
- def setup_code_extractions(context)
102
- [
103
- FuncCallExtraction.new(context),
104
- CrossRefExtraction.new(context),
105
- TypeDeclExtraction.new(context),
106
- GVarDeclExtraction.new(context),
107
- FuncDeclExtraction.new(context),
108
- VarDefExtraction.new(context),
109
- FuncDefExtraction.new(context),
110
- LabelDefExtraction.new(context),
111
- InitializationExtraction.new(context),
112
- AssignmentExtraction.new(context),
113
- LiteralExtraction.new(context)
114
- ]
87
+ class Prepare2Phase < CPhase
88
+ def initialize(context)
89
+ super(context, "pr4")
115
90
  end
116
91
 
117
- def setup_metric_measurements(context)
118
- [
119
- FN_UNUV.new(context),
120
- FN_PATH.new(context),
121
- FL_STMT.new(context),
122
- FL_FUNC.new(context),
123
- FN_STMT.new(context),
124
- FN_UNRC.new(context),
125
- FN_LINE.new(context),
126
- FN_PARA.new(context),
127
- FN_CSUB.new(context),
128
- FN_GOTO.new(context),
129
- FN_RETN.new(context),
130
- FN_UELS.new(context),
131
- FN_NEST.new(context),
132
- FN_CYCM.new(context)
133
- ]
92
+ private
93
+ def do_execute(context, *)
94
+ context[:c_interpreter] = Interpreter.new(context[:c_type_table])
134
95
  end
96
+ end
135
97
 
136
- def setup_message_detections(context)
137
- [
138
- W0001.new(context),
139
- W0002.new(context),
140
- W0003.new(context),
141
- W0007.new(context),
142
- W0010.new(context),
143
- W0013.new(context),
144
- W0016.new(context),
145
- W0017.new(context),
146
- W0018.new(context),
147
- W0019.new(context),
148
- W0021.new(context),
149
- W0023.new(context),
150
- W0024.new(context),
151
- W0027.new(context),
152
- W0028.new(context),
153
- W0030.new(context),
154
- W0031.new(context),
155
- W0033.new(context),
156
- W0035.new(context),
157
- W0036.new(context),
158
- W0037.new(context),
159
- W0038.new(context),
160
- W0039.new(context),
161
- W0040.new(context),
162
- W0041.new(context),
163
- W0042.new(context),
164
- W0043.new(context),
165
- W0049.new(context),
166
- W0050.new(context),
167
- W0051.new(context),
168
- W0052.new(context),
169
- W0058.new(context),
170
- W0062.new(context),
171
- W0063.new(context),
172
- W0065.new(context),
173
- W0066.new(context),
174
- W0064.new(context),
175
- W0067.new(context),
176
- W0068.new(context),
177
- W0070.new(context),
178
- W0071.new(context),
179
- W0076.new(context),
180
- W0077.new(context),
181
- W0078.new(context),
182
- W0079.new(context),
183
- W0080.new(context),
184
- W0081.new(context),
185
- W0082.new(context),
186
- W0084.new(context),
187
- W0085.new(context),
188
- W0086.new(context),
189
- W0087.new(context),
190
- W0088.new(context),
191
- W0093.new(context),
192
- W0096.new(context),
193
- W0097.new(context),
194
- W0100.new(context),
195
- W0101.new(context),
196
- W0102.new(context),
197
- W0103.new(context),
198
- W0104.new(context),
199
- W0105.new(context),
200
- W0107.new(context),
201
- W0108.new(context),
202
- W0109.new(context),
203
- W0110.new(context),
204
- W0112.new(context),
205
- W0114.new(context),
206
- W0115.new(context),
207
- W0116.new(context),
208
- W0117.new(context),
209
- W0118.new(context),
210
- W0119.new(context),
211
- W0120.new(context),
212
- W0121.new(context),
213
- W0122.new(context),
214
- W0123.new(context),
215
- W0124.new(context),
216
- W0125.new(context),
217
- W0126.new(context),
218
- W0127.new(context),
219
- W0128.new(context),
220
- W0129.new(context),
221
- W0130.new(context),
222
- W0131.new(context),
223
- W0132.new(context),
224
- W0133.new(context),
225
- W0134.new(context),
226
- W0135.new(context),
227
- W0136.new(context),
228
- W0137.new(context),
229
- W0138.new(context),
230
- W0139.new(context),
231
- W0140.new(context),
232
- W0141.new(context),
233
- W0142.new(context),
234
- W0143.new(context),
235
- W0144.new(context),
236
- W0145.new(context),
237
- W0146.new(context),
238
- W0147.new(context),
239
- W0148.new(context),
240
- W0149.new(context),
241
- W0150.new(context),
242
- W0151.new(context),
243
- W0152.new(context),
244
- W0153.new(context),
245
- W0154.new(context),
246
- W0155.new(context),
247
- W0156.new(context),
248
- W0157.new(context),
249
- W0158.new(context),
250
- W0159.new(context),
251
- W0160.new(context),
252
- W0161.new(context),
253
- W0162.new(context),
254
- W0163.new(context),
255
- W0164.new(context),
256
- W0165.new(context),
257
- W0166.new(context),
258
- W0167.new(context),
259
- W0168.new(context),
260
- W0169.new(context),
261
- W0170.new(context),
262
- W0171.new(context),
263
- W0172.new(context),
264
- W0173.new(context),
265
- W0174.new(context),
266
- W0175.new(context),
267
- W0176.new(context),
268
- W0177.new(context),
269
- W0178.new(context),
270
- W0179.new(context),
271
- W0180.new(context),
272
- W0181.new(context),
273
- W0182.new(context),
274
- W0183.new(context),
275
- W0184.new(context),
276
- W0185.new(context),
277
- W0186.new(context),
278
- W0187.new(context),
279
- W0188.new(context),
280
- W0189.new(context),
281
- W0190.new(context),
282
- W0191.new(context),
283
- W0192.new(context),
284
- W0193.new(context),
285
- W0194.new(context),
286
- W0195.new(context),
287
- W0196.new(context),
288
- W0197.new(context),
289
- W0198.new(context),
290
- W0199.new(context),
291
- W0200.new(context),
292
- W0201.new(context),
293
- W0202.new(context),
294
- W0203.new(context),
295
- W0204.new(context),
296
- W0205.new(context),
297
- W0206.new(context),
298
- W0207.new(context),
299
- W0208.new(context),
300
- W0209.new(context),
301
- W0210.new(context),
302
- W0211.new(context),
303
- W0212.new(context),
304
- W0213.new(context),
305
- W0214.new(context),
306
- W0215.new(context),
307
- W0216.new(context),
308
- W0217.new(context),
309
- W0218.new(context),
310
- W0219.new(context),
311
- W0220.new(context),
312
- W0221.new(context),
313
- W0222.new(context),
314
- W0223.new(context),
315
- W0224.new(context),
316
- W0225.new(context),
317
- W0226.new(context),
318
- W0227.new(context),
319
- W0228.new(context),
320
- W0229.new(context),
321
- W0230.new(context),
322
- W0231.new(context),
323
- W0232.new(context),
324
- W0233.new(context),
325
- W0234.new(context),
326
- W0235.new(context),
327
- W0236.new(context),
328
- W0237.new(context),
329
- W0238.new(context),
330
- W0239.new(context),
331
- W0240.new(context),
332
- W0241.new(context),
333
- W0242.new(context),
334
- W0243.new(context),
335
- W0244.new(context),
336
- W0245.new(context),
337
- W0246.new(context),
338
- W0247.new(context),
339
- W0248.new(context),
340
- W0249.new(context),
341
- W0250.new(context),
342
- W0251.new(context),
343
- W0252.new(context),
344
- W0253.new(context),
345
- W0254.new(context),
346
- W0255.new(context),
347
- W0256.new(context),
348
- W0257.new(context),
349
- W0258.new(context),
350
- W0259.new(context),
351
- W0260.new(context),
352
- W0261.new(context),
353
- W0262.new(context),
354
- W0263.new(context),
355
- W0264.new(context),
356
- W0265.new(context),
357
- W0266.new(context),
358
- W0267.new(context),
359
- W0268.new(context),
360
- W0269.new(context),
361
- W0270.new(context),
362
- W0271.new(context),
363
- W0272.new(context),
364
- W0273.new(context),
365
- W0274.new(context),
366
- W0275.new(context),
367
- W0276.new(context),
368
- W0277.new(context),
369
- W0278.new(context),
370
- W0279.new(context),
371
- W0280.new(context),
372
- W0281.new(context),
373
- W0282.new(context),
374
- W0283.new(context),
375
- W0284.new(context),
376
- W0285.new(context),
377
- W0286.new(context),
378
- W0287.new(context),
379
- W0288.new(context),
380
- W0289.new(context),
381
- W0290.new(context),
382
- W0291.new(context),
383
- W0292.new(context),
384
- W0293.new(context),
385
- W0294.new(context),
386
- W0295.new(context),
387
- W0296.new(context),
388
- W0297.new(context),
389
- W0298.new(context),
390
- W0299.new(context),
391
- W0300.new(context),
392
- W0301.new(context),
393
- W0302.new(context),
394
- W0303.new(context),
395
- W0304.new(context),
396
- W0305.new(context),
397
- W0306.new(context),
398
- W0307.new(context),
399
- W0308.new(context),
400
- W0309.new(context),
401
- W0310.new(context),
402
- W0311.new(context),
403
- W0312.new(context),
404
- W0313.new(context),
405
- W0314.new(context),
406
- W0315.new(context),
407
- W0316.new(context),
408
- W0317.new(context),
409
- W0318.new(context),
410
- W0319.new(context),
411
- W0320.new(context),
412
- W0321.new(context),
413
- W0322.new(context),
414
- W0323.new(context),
415
- W0324.new(context),
416
- W0325.new(context),
417
- W0326.new(context),
418
- W0327.new(context),
419
- W0328.new(context),
420
- W0329.new(context),
421
- W0330.new(context),
422
- W0331.new(context),
423
- W0332.new(context),
424
- W0333.new(context),
425
- W0334.new(context),
426
- W0335.new(context),
427
- W0336.new(context),
428
- W0337.new(context),
429
- W0338.new(context),
430
- W0339.new(context),
431
- W0340.new(context),
432
- W0341.new(context),
433
- W0342.new(context),
434
- W0343.new(context),
435
- W0344.new(context),
436
- W0345.new(context),
437
- W0346.new(context),
438
- W0347.new(context),
439
- W0348.new(context),
440
- W0349.new(context),
441
- W0350.new(context),
442
- W0351.new(context),
443
- W0352.new(context),
444
- W0353.new(context),
445
- W0354.new(context),
446
- W0355.new(context),
447
- W0356.new(context),
448
- W0357.new(context),
449
- W0358.new(context),
450
- W0359.new(context),
451
- W0360.new(context),
452
- W0361.new(context),
453
- W0362.new(context),
454
- W0363.new(context),
455
- W0364.new(context),
456
- W0365.new(context),
457
- W0366.new(context),
458
- W0367.new(context),
459
- W0368.new(context),
460
- W0369.new(context),
461
- W0370.new(context),
462
- W0371.new(context),
463
- W0372.new(context),
464
- W0373.new(context),
465
- W0374.new(context),
466
- W0375.new(context),
467
- W0376.new(context),
468
- W0377.new(context),
469
- W0378.new(context),
470
- W0379.new(context),
471
- W0380.new(context),
472
- W0381.new(context),
473
- W0382.new(context),
474
- W0383.new(context),
475
- W0384.new(context),
476
- W0385.new(context),
477
- W0386.new(context),
478
- W0387.new(context),
479
- W0388.new(context),
480
- W0389.new(context),
481
- W0390.new(context),
482
- W0391.new(context),
483
- W0392.new(context),
484
- W0393.new(context),
485
- W0394.new(context),
486
- W0395.new(context),
487
- W0396.new(context),
488
- W0397.new(context),
489
- W0398.new(context),
490
- W0399.new(context),
491
- W0400.new(context),
492
- W0401.new(context),
493
- W0402.new(context),
494
- W0403.new(context),
495
- W0404.new(context),
496
- W0405.new(context),
497
- W0406.new(context),
498
- W0407.new(context),
499
- W0408.new(context),
500
- W0409.new(context),
501
- W0410.new(context),
502
- W0411.new(context),
503
- W0413.new(context),
504
- W0414.new(context),
505
- W0421.new(context),
506
- W0422.new(context),
507
- W0423.new(context),
508
- W0424.new(context),
509
- W0425.new(context),
510
- W0431.new(context),
511
- W0432.new(context),
512
- W0440.new(context),
513
- W0441.new(context),
514
- W0446.new(context),
515
- W0447.new(context),
516
- W0456.new(context),
517
- W0457.new(context),
518
- W0458.new(context),
519
- W0459.new(context),
520
- W0460.new(context),
521
- W0461.new(context),
522
- W0462.new(context),
523
- W0488.new(context),
524
- W0489.new(context),
525
- W0490.new(context),
526
- W0491.new(context),
527
- W0492.new(context),
528
- W0493.new(context),
529
- W0495.new(context),
530
- W0496.new(context),
531
- W0497.new(context),
532
- W0498.new(context),
533
- W0499.new(context),
534
- W0500.new(context),
535
- W0501.new(context),
536
- W0502.new(context),
537
- W0508.new(context),
538
- W0512.new(context),
539
- W0525.new(context),
540
- W0529.new(context),
541
- W0530.new(context),
542
- W0532.new(context),
543
- W0534.new(context),
544
- W0535.new(context),
545
- W0538.new(context),
546
- W0540.new(context),
547
- W0542.new(context),
548
- W0543.new(context),
549
- W0544.new(context),
550
- W0546.new(context),
551
- W0551.new(context),
552
- W0552.new(context),
553
- W0553.new(context),
554
- W0556.new(context),
555
- W0559.new(context),
556
- W0560.new(context),
557
- W0561.new(context),
558
- W0562.new(context),
559
- W0563.new(context),
560
- W0564.new(context),
561
- W0565.new(context),
562
- W0566.new(context),
563
- W0567.new(context),
564
- W0568.new(context),
565
- W0569.new(context),
566
- W0570.new(context),
567
- W0571.new(context),
568
- W0572.new(context),
569
- W0573.new(context),
570
- W0578.new(context),
571
- W0579.new(context),
572
- W0580.new(context),
573
- W0581.new(context),
574
- W0582.new(context),
575
- W0583.new(context),
576
- W0584.new(context),
577
- W0585.new(context),
578
- W0597.new(context),
579
- W0598.new(context),
580
- W0599.new(context),
581
- W0600.new(context),
582
- W0605.new(context),
583
- W0606.new(context),
584
- W0607.new(context),
585
- W0608.new(context),
586
- W0609.new(context),
587
- W0610.new(context),
588
- W0611.new(context),
589
- W0612.new(context),
590
- W0613.new(context),
591
- W0614.new(context),
592
- W0622.new(context),
593
- W0623.new(context),
594
- W0624.new(context),
595
- W0625.new(context),
596
- W0626.new(context),
597
- W0627.new(context),
598
- W0629.new(context),
599
- W0635.new(context),
600
- W0636.new(context),
601
- W0637.new(context),
602
- W0638.new(context),
603
- W0639.new(context),
604
- W0640.new(context),
605
- W0641.new(context),
606
- W0642.new(context),
607
- W0644.new(context),
608
- W0645.new(context),
609
- W0649.new(context),
610
- W0650.new(context),
611
- W0653.new(context),
612
- W0654.new(context),
613
- W0655.new(context),
614
- W0656.new(context),
615
- W0657.new(context),
616
- W0658.new(context),
617
- W0659.new(context),
618
- W0660.new(context),
619
- W0661.new(context),
620
- W0662.new(context),
621
- W0663.new(context),
622
- W0664.new(context),
623
- W0665.new(context),
624
- W0666.new(context),
625
- W0667.new(context),
626
- W0668.new(context),
627
- W0669.new(context),
628
- W0670.new(context),
629
- W0671.new(context),
630
- W0672.new(context),
631
- W0673.new(context),
632
- W0674.new(context),
633
- W0675.new(context),
634
- W0676.new(context),
635
- W0677.new(context),
636
- W0678.new(context),
637
- W0679.new(context),
638
- W0680.new(context),
639
- W0681.new(context),
640
- W0682.new(context),
641
- W0683.new(context),
642
- W0684.new(context),
643
- W0685.new(context),
644
- W0686.new(context),
645
- W0694.new(context),
646
- W0697.new(context),
647
- W0698.new(context),
648
- W0699.new(context),
649
- W0700.new(context),
650
- W0703.new(context),
651
- W0704.new(context),
652
- W0705.new(context),
653
- W0707.new(context),
654
- W0708.new(context),
655
- W0711.new(context),
656
- W0712.new(context),
657
- W0713.new(context),
658
- W0714.new(context),
659
- W0715.new(context),
660
- W0716.new(context),
661
- W0717.new(context),
662
- W0718.new(context),
663
- W0719.new(context),
664
- W0720.new(context),
665
- W0721.new(context),
666
- W0722.new(context),
667
- W0723.new(context),
668
- W0726.new(context),
669
- W0727.new(context),
670
- W0728.new(context),
671
- W0729.new(context),
672
- W0730.new(context),
673
- W0731.new(context),
674
- W0732.new(context),
675
- W0733.new(context),
676
- W0734.new(context),
677
- W0735.new(context),
678
- W0736.new(context),
679
- W0737.new(context),
680
- W0738.new(context),
681
- W0739.new(context),
682
- W0740.new(context),
683
- W0741.new(context),
684
- W0742.new(context),
685
- W0743.new(context),
686
- W0744.new(context),
687
- W0745.new(context),
688
- W0747.new(context),
689
- W0748.new(context),
690
- W0749.new(context),
691
- W0750.new(context),
692
- W0751.new(context),
693
- W0752.new(context),
694
- W0753.new(context),
695
- W0754.new(context),
696
- W0755.new(context),
697
- W0756.new(context),
698
- W0757.new(context),
699
- W0758.new(context),
700
- W0759.new(context),
701
- W0760.new(context),
702
- W0761.new(context),
703
- W0762.new(context),
704
- W0763.new(context),
705
- W0764.new(context),
706
- W0765.new(context),
707
- W0766.new(context),
708
- W0767.new(context),
709
- W0768.new(context),
710
- W0769.new(context),
711
- W0771.new(context),
712
- W0774.new(context),
713
- W0775.new(context),
714
- W0776.new(context),
715
- W0777.new(context),
716
- W0778.new(context),
717
- W0779.new(context),
718
- W0780.new(context),
719
- W0781.new(context),
720
- W0783.new(context),
721
- W0785.new(context),
722
- W0786.new(context),
723
- W0787.new(context),
724
- W0788.new(context),
725
- W0789.new(context),
726
- W0790.new(context),
727
- W0792.new(context),
728
- W0793.new(context),
729
- W0794.new(context),
730
- W0795.new(context),
731
- W0796.new(context),
732
- W0797.new(context),
733
- W0798.new(context),
734
- W0799.new(context),
735
- W0800.new(context),
736
- W0801.new(context),
737
- W0809.new(context),
738
- W0810.new(context),
739
- W0827.new(context),
740
- W0828.new(context),
741
- W0830.new(context),
742
- W0833.new(context),
743
- W0834.new(context),
744
- W0947.new(context),
745
- W0948.new(context),
746
- W0949.new(context),
747
- W0950.new(context),
748
- W1026.new(context),
749
- W1027.new(context),
750
- W1028.new(context),
751
- W1029.new(context),
752
- W1030.new(context),
753
- W1031.new(context),
754
- W1032.new(context),
755
- W1033.new(context),
756
- W1034.new(context),
757
- W1039.new(context),
758
- W1047.new(context),
759
- W1049.new(context),
760
- W1050.new(context),
761
- W1051.new(context),
762
- W1052.new(context),
763
- W1053.new(context),
764
- W1054.new(context),
765
- W1055.new(context),
766
- W1056.new(context),
767
- W1057.new(context),
768
- W1058.new(context),
769
- W1059.new(context),
770
- W1060.new(context),
771
- W1061.new(context),
772
- W1062.new(context),
773
- W1063.new(context),
774
- W1064.new(context),
775
- W1065.new(context),
776
- W1066.new(context),
777
- W1067.new(context),
778
- W1068.new(context),
779
- W1069.new(context),
780
- W1070.new(context),
781
- W1071.new(context),
782
- W1072.new(context),
783
- W1073.new(context),
784
- W1074.new(context),
785
- W1075.new(context),
786
- W1076.new(context),
787
- W1077.new(context),
788
- W9001.new(context),
789
- W9003.new(context)
790
- ]
98
+ class InterpPhase < CPhase
99
+ def initialize(context)
100
+ super(context, "int")
791
101
  end
792
- end
793
102
 
794
- class InterpPhase < Phase
795
103
  private
796
- def do_execute(context)
797
- monitored_region("int") do
798
- Program.new(context[:c_interpreter], context[:c_syntax_tree]).execute
799
- ValueDomain.clear_memo
800
- end
104
+ def do_execute(context, *)
105
+ Program.new(context[:c_interpreter], context[:c_syntax_tree]).execute
106
+ ValueDomain.clear_memo
801
107
  ensure
802
108
  DebugUtil.dump_syntax_tree(context)
803
109
  end
804
110
  end
805
111
 
806
- class ReviewPhase < Phase
112
+ class ReviewPhase < CPhase
113
+ def initialize(context)
114
+ super(context, "rv2")
115
+ end
116
+
807
117
  private
808
- def do_execute(context)
809
- monitored_region("rv2") do
810
- context[:c_syntax_tree].accept(context[:c_visitor])
811
- end
118
+ def do_execute(context, *)
119
+ context[:c_syntax_tree].accept(context[:c_visitor])
812
120
  end
813
121
  end
814
122
 
815
- class CommandPhase < Phase
123
+ class ExaminationPhase < CPhase
124
+ def initialize(context)
125
+ super(context, "ex2")
126
+ end
127
+
816
128
  private
817
- def do_execute(context)
818
- monitored_region("cm2") do
819
- context[:c_commands].each { |command| command.execute }
820
- end
129
+ def do_execute(context, *)
130
+ examinations.each { |exam| exam.execute }
821
131
  end
822
132
  end
823
133