adlint 3.0.10 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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