adlint 3.0.10 → 3.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (137) hide show
  1. data/ChangeLog +67 -0
  2. data/MANIFEST +2 -0
  3. data/NEWS +10 -3
  4. data/etc/mesg.d/c_builtin/en_US/messages.yml +29 -1
  5. data/etc/mesg.d/c_builtin/ja_JP/messages.yml +29 -1
  6. data/etc/mesg.d/core/en_US/messages.yml +1 -1
  7. data/etc/mesg.d/core/ja_JP/messages.yml +1 -1
  8. data/features/code_check/W0003.feature +5 -0
  9. data/features/code_check/W0023.feature +32 -0
  10. data/features/code_check/W0024.feature +22 -0
  11. data/features/code_check/W0093.feature +71 -0
  12. data/features/code_check/W0097.feature +4 -0
  13. data/features/code_check/W0100.feature +10 -0
  14. data/features/code_check/W0119.feature +8 -0
  15. data/features/code_check/W0133.feature +8 -0
  16. data/features/code_check/W0134.feature +8 -0
  17. data/features/code_check/W0136.feature +8 -0
  18. data/features/code_check/W0138.feature +8 -0
  19. data/features/code_check/W0140.feature +8 -0
  20. data/features/code_check/W0142.feature +8 -0
  21. data/features/code_check/W0143.feature +8 -0
  22. data/features/code_check/W0144.feature +8 -0
  23. data/features/code_check/W0145.feature +8 -0
  24. data/features/code_check/W0146.feature +8 -0
  25. data/features/code_check/W0147.feature +8 -0
  26. data/features/code_check/W0148.feature +8 -0
  27. data/features/code_check/W0149.feature +8 -0
  28. data/features/code_check/W0150.feature +8 -0
  29. data/features/code_check/W0151.feature +8 -0
  30. data/features/code_check/W0152.feature +8 -0
  31. data/features/code_check/W0153.feature +8 -0
  32. data/features/code_check/W0154.feature +8 -0
  33. data/features/code_check/W0155.feature +8 -0
  34. data/features/code_check/W0156.feature +8 -0
  35. data/features/code_check/W0157.feature +8 -0
  36. data/features/code_check/W0158.feature +8 -0
  37. data/features/code_check/W0159.feature +8 -0
  38. data/features/code_check/W0160.feature +8 -0
  39. data/features/code_check/W0161.feature +8 -0
  40. data/features/code_check/W0162.feature +8 -0
  41. data/features/code_check/W0163.feature +8 -0
  42. data/features/code_check/W0164.feature +8 -0
  43. data/features/code_check/W0165.feature +8 -0
  44. data/features/code_check/W0166.feature +8 -0
  45. data/features/code_check/W0167.feature +8 -0
  46. data/features/code_check/W0168.feature +8 -0
  47. data/features/code_check/W0169.feature +8 -0
  48. data/features/code_check/W0170.feature +8 -0
  49. data/features/code_check/W0171.feature +8 -0
  50. data/features/code_check/W0172.feature +8 -0
  51. data/features/code_check/W0173.feature +8 -0
  52. data/features/code_check/W0174.feature +8 -0
  53. data/features/code_check/W0175.feature +8 -0
  54. data/features/code_check/W0176.feature +8 -0
  55. data/features/code_check/W0177.feature +8 -0
  56. data/features/code_check/W0178.feature +8 -0
  57. data/features/code_check/W0179.feature +8 -0
  58. data/features/code_check/W0180.feature +8 -0
  59. data/features/code_check/W0181.feature +8 -0
  60. data/features/code_check/W0250.feature +8 -0
  61. data/features/code_check/W0422.feature +194 -0
  62. data/features/code_check/W0459.feature +16 -0
  63. data/features/code_check/W0460.feature +342 -0
  64. data/features/code_check/W0461.feature +5 -0
  65. data/features/code_check/W0497.feature +12 -0
  66. data/features/code_check/W0499.feature +6 -0
  67. data/features/code_check/W0502.feature +6 -0
  68. data/features/code_check/W0570.feature +47 -0
  69. data/features/code_check/W0573.feature +8 -0
  70. data/features/code_check/W0582.feature +4 -0
  71. data/features/code_check/W0583.feature +4 -0
  72. data/features/code_check/W0584.feature +10 -0
  73. data/features/code_check/W0599.feature +10 -0
  74. data/features/code_check/W0644.feature +2 -0
  75. data/features/code_check/W0649.feature +14 -0
  76. data/features/code_check/W0650.feature +12 -0
  77. data/features/code_check/W0685.feature +10 -0
  78. data/features/code_check/W0686.feature +8 -0
  79. data/features/code_check/W0711.feature +2 -0
  80. data/features/code_check/W0712.feature +2 -0
  81. data/features/code_check/W0713.feature +2 -0
  82. data/features/code_check/W0714.feature +2 -0
  83. data/features/code_check/W0715.feature +2 -0
  84. data/features/code_check/W0718.feature +2 -0
  85. data/features/code_check/W0719.feature +8 -0
  86. data/features/code_check/W0732.feature +18 -0
  87. data/features/code_check/W0733.feature +18 -0
  88. data/features/code_check/W0734.feature +24 -0
  89. data/features/code_check/W0735.feature +24 -0
  90. data/features/code_check/W0747.feature +8 -0
  91. data/features/code_check/W0749.feature +8 -0
  92. data/features/code_check/W0750.feature +8 -0
  93. data/features/code_check/W0753.feature +8 -0
  94. data/features/code_check/W0754.feature +8 -0
  95. data/features/code_check/W0759.feature +8 -0
  96. data/features/code_check/W0760.feature +8 -0
  97. data/features/code_check/W0761.feature +8 -0
  98. data/features/code_check/W0762.feature +8 -0
  99. data/features/code_check/W0794.feature +6 -0
  100. data/features/code_check/W1050.feature +8 -0
  101. data/features/code_check/W1066.feature +8 -0
  102. data/features/code_check/W1067.feature +8 -0
  103. data/features/code_check/W1068.feature +8 -0
  104. data/features/code_check/W1071.feature +4 -0
  105. data/features/code_check/W9003.feature +2 -0
  106. data/lib/adlint/cc1.rb +1 -0
  107. data/lib/adlint/cc1/branch.rb +34 -13
  108. data/lib/adlint/cc1/conv.rb +3 -3
  109. data/lib/adlint/cc1/ctrlexpr.rb +12 -7
  110. data/lib/adlint/cc1/environ.rb +12 -2
  111. data/lib/adlint/cc1/expr.rb +10 -8
  112. data/lib/adlint/cc1/interp.rb +56 -49
  113. data/lib/adlint/cc1/mediator.rb +9 -5
  114. data/lib/adlint/cc1/object.rb +37 -34
  115. data/lib/adlint/cc1/trace.rb +287 -0
  116. data/lib/adlint/cc1/type.rb +15 -15
  117. data/lib/adlint/cc1/value.rb +823 -427
  118. data/lib/adlint/cpp/eval.rb +5 -2
  119. data/lib/adlint/cpp/source.rb +21 -22
  120. data/lib/adlint/exam/c_builtin/cc1_check.rb +1636 -1067
  121. data/lib/adlint/exam/c_builtin/cc1_check_shima.rb +28 -22
  122. data/lib/adlint/exam/c_builtin/cc1_code.rb +4 -4
  123. data/lib/adlint/exam/c_builtin/cc1_metric.rb +14 -14
  124. data/lib/adlint/location.rb +5 -7
  125. data/lib/adlint/metric.rb +2 -2
  126. data/lib/adlint/prelude.rb +6 -2
  127. data/lib/adlint/report.rb +2 -2
  128. data/lib/adlint/version.rb +3 -3
  129. data/share/doc/developers_guide_ja.html +10 -4
  130. data/share/doc/developers_guide_ja.texi +8 -2
  131. data/share/doc/users_guide_en.html +679 -72
  132. data/share/doc/users_guide_en.texi +557 -12
  133. data/share/doc/users_guide_ja.html +678 -74
  134. data/share/doc/users_guide_ja.texi +554 -13
  135. data/spec/adlint/cc1/ctrlexpr_spec.rb +20 -11
  136. data/spec/adlint/cc1/domain_spec.rb +9 -0
  137. metadata +4 -2
@@ -46,8 +46,8 @@ module Cc1
46
46
  @symbol_table = SymbolTable.new
47
47
  @type_table = TypeTable.new(@adlint.traits, @monitor, @logger)
48
48
  @interpreter = Interpreter.new(@type_table)
49
- @int_i = @interpreter.define_variable(int_i_def)
50
- @int_j = @interpreter.define_variable(int_j_def)
49
+ @int_i = @interpreter.define_variable(int_i_def, nil)
50
+ @int_j = @interpreter.define_variable(int_j_def, nil)
51
51
  end
52
52
 
53
53
  context "`int i = ((> 0) && (< 10)) || (== 0)' and " +
@@ -63,9 +63,12 @@ module Cc1
63
63
  "and should not contain 10" do
64
64
  expr = EqualityExpression.new(eq_op, i_spec, j_spec)
65
65
  branched_eval(expr, NARROWING, FINAL) do
66
- @int_i.value.may_be_equal_to?(scalar_value_of(0)).should be_true
67
- @int_i.value.may_be_equal_to?(scalar_value_of(9)).should be_true
68
- @int_i.value.may_be_equal_to?(scalar_value_of(10)).should_not be_true
66
+ @int_i.value.test_may_be_equal_to(
67
+ scalar_value_of(0)).result.should be_true
68
+ @int_i.value.test_may_be_equal_to(
69
+ scalar_value_of(9)).result.should be_true
70
+ @int_i.value.test_may_be_equal_to(
71
+ scalar_value_of(10)).result.should be_false
69
72
  end
70
73
  end
71
74
 
@@ -73,9 +76,12 @@ module Cc1
73
76
  "and should not contain 10" do
74
77
  expr = EqualityExpression.new(ne_op, i_spec, j_spec)
75
78
  branched_eval(expr, NARROWING, FINAL) do
76
- @int_i.value.may_be_equal_to?(scalar_value_of(0)).should be_true
77
- @int_i.value.may_be_equal_to?(scalar_value_of(9)).should be_true
78
- @int_i.value.may_be_equal_to?(scalar_value_of(10)).should_not be_true
79
+ @int_i.value.test_may_be_equal_to(
80
+ scalar_value_of(0)).result.should be_true
81
+ @int_i.value.test_may_be_equal_to(
82
+ scalar_value_of(9)).result.should be_true
83
+ @int_i.value.test_may_be_equal_to(
84
+ scalar_value_of(10)).result.should be_false
79
85
  end
80
86
  end
81
87
  end
@@ -93,9 +99,12 @@ module Cc1
93
99
  "and should not contain 0" do
94
100
  expr = EqualityExpression.new(eq_op, i_spec, j_spec)
95
101
  branched_eval(expr, NARROWING, FINAL) do
96
- @int_i.value.may_be_equal_to?(scalar_value_of(3)).should be_true
97
- @int_i.value.may_be_equal_to?(scalar_value_of(4)).should be_true
98
- @int_i.value.may_be_equal_to?(scalar_value_of(0)).should_not be_true
102
+ @int_i.value.test_may_be_equal_to(
103
+ scalar_value_of(3)).result.should be_true
104
+ @int_i.value.test_may_be_equal_to(
105
+ scalar_value_of(4)).result.should be_true
106
+ @int_i.value.test_may_be_equal_to(
107
+ scalar_value_of(0)).result.should be_false
99
108
  end
100
109
  end
101
110
  end
@@ -834,6 +834,15 @@ module Cc1
834
834
  # (subject / rhs).to_s.should == "((< 10) && (> 0))"
835
835
  #end
836
836
  end
837
+
838
+ context "(== 0)" do
839
+ subject { value_domain_equal_to(0) }
840
+
841
+ it "narrowed by == ((== 3) || (== 4)) should be (== Nil)" do
842
+ rhs = value_domain_equal_to(3).union(value_domain_equal_to(4))
843
+ subject.narrow(Operator::EQ, rhs).to_s.should == "(== Nil)"
844
+ end
845
+ end
837
846
  end
838
847
 
839
848
  private
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: adlint
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.10
4
+ version: 3.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-06-28 00:00:00.000000000 Z
12
+ date: 2013-08-28 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: ! 'AdLint is a source code static analyzer.
15
15
 
@@ -255,6 +255,7 @@ files:
255
255
  - features/code_check/W0502.feature
256
256
  - features/code_check/W0534.feature
257
257
  - features/code_check/W0542.feature
258
+ - features/code_check/W0570.feature
258
259
  - features/code_check/W0573.feature
259
260
  - features/code_check/W0580.feature
260
261
  - features/code_check/W0582.feature
@@ -419,6 +420,7 @@ files:
419
420
  - lib/adlint/cc1/scope.rb
420
421
  - lib/adlint/cc1/seqp.rb
421
422
  - lib/adlint/cc1/syntax.rb
423
+ - lib/adlint/cc1/trace.rb
422
424
  - lib/adlint/cc1/type.rb
423
425
  - lib/adlint/cc1/util.rb
424
426
  - lib/adlint/cc1/value.rb