Merge pull request #1841 from ian-semmle/valuetext

C++: Split valuetext off into its own table
This commit is contained in:
Nick Rolfe 2019-08-29 17:42:14 +01:00 коммит произвёл GitHub
Родитель 11da14c5f2 c08eb7e8c7
Коммит 36b42def1c
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
8 изменённых файлов: 4067 добавлений и 258 удалений

Просмотреть файл

@ -85,10 +85,32 @@ class Expr extends StmtParent, @expr {
override string toString() { none() }
/** Gets the value of this expression, if it is a constant. */
string getValue() { exists(@value v | values(v,result,_) and valuebind(v,underlyingElement(this))) }
string getValue() { exists(@value v | values(v,result) and valuebind(v,underlyingElement(this))) }
/** Gets the value text of this expression that's in the database. */
private string getDbValueText() {
exists(@value v | valuebind(v,underlyingElement(this)) and valuetext(v, result))
}
/**
* Gets the value text of `this`. If it doesn't have one, then instead
* gets the value text is `this`'s nearest compatible conversion, if any.
*/
private string getValueTextFollowingConversions() {
if exists(this.getDbValueText())
then result = this.getDbValueText()
else exists(Expr e |
e = this.getConversion() and
e.getValue() = this.getValue() and
result = e.getValueTextFollowingConversions())
}
/** Gets the source text for the value of this expression, if it is a constant. */
string getValueText() { exists(@value v | values(v,_,result) and valuebind(v,underlyingElement(this))) }
string getValueText() {
if exists(this.getValueTextFollowingConversions())
then result = this.getValueTextFollowingConversions()
else result = this.getValue()
}
/** Holds if this expression has a value that can be determined at compile time. */
cached

Просмотреть файл

@ -1237,11 +1237,15 @@ expr_cond_false(
int false: @expr ref
);
// the second field is a string representation of the value
// the third field is the actual text in the source or the same as the second field
/** A string representation of the value. */
values(
unique int id: @value,
string str: string ref,
string str: string ref
);
/** The actual text in the source code for the value, if any. */
valuetext(
unique int id: @value ref,
string text: string ref
);

Просмотреть файл

@ -1492,7 +1492,7 @@
</e>
<e>
<k>seconds</k>
<v>12352</v>
<v>12182</v>
</e>
</columnsizes>
<dependencies>
@ -1538,12 +1538,12 @@
<b>
<a>3</a>
<b>4</b>
<v>3173</v>
<v>3149</v>
</b>
<b>
<a>4</a>
<b>5</b>
<v>7392</v>
<v>7416</v>
</b>
</bs>
</hist>
@ -1589,8 +1589,8 @@
<budget>12</budget>
<bs>
<b>
<a>1016</a>
<b>1017</b>
<a>1002</a>
<b>1003</b>
<v>12</v>
</b>
</bs>
@ -1642,18 +1642,18 @@
<v>12</v>
</b>
<b>
<a>9</a>
<b>10</b>
<a>10</a>
<b>11</b>
<v>12</v>
</b>
<b>
<a>549</a>
<b>550</b>
<a>547</a>
<b>548</b>
<v>12</v>
</b>
<b>
<a>590</a>
<b>591</b>
<a>577</a>
<b>578</b>
<v>12</v>
</b>
</bs>
@ -1670,27 +1670,27 @@
<b>
<a>1</a>
<b>2</b>
<v>8061</v>
<v>7684</v>
</b>
<b>
<a>2</a>
<b>3</b>
<v>2310</v>
<v>2662</v>
</b>
<b>
<a>3</a>
<b>4</b>
<v>838</v>
<v>814</v>
</b>
<b>
<a>4</a>
<b>9</b>
<v>948</v>
<b>14</b>
<v>924</v>
</b>
<b>
<a>9</a>
<b>611</b>
<v>194</v>
<a>14</a>
<b>616</b>
<v>97</v>
</b>
</bs>
</hist>
@ -1706,7 +1706,7 @@
<b>
<a>1</a>
<b>2</b>
<v>12352</v>
<v>12182</v>
</b>
</bs>
</hist>
@ -1722,12 +1722,17 @@
<b>
<a>1</a>
<b>2</b>
<v>10675</v>
<v>10517</v>
</b>
<b>
<a>2</a>
<b>3</b>
<v>1677</v>
<v>1653</v>
</b>
<b>
<a>3</a>
<b>4</b>
<v>12</v>
</b>
</bs>
</hist>
@ -2106,7 +2111,7 @@
</e>
<e>
<k>cpu_seconds</k>
<v>8535</v>
<v>8437</v>
</e>
<e>
<k>elapsed_seconds</k>
@ -2156,17 +2161,17 @@
<b>
<a>1</a>
<b>2</b>
<v>7319</v>
<v>7112</v>
</b>
<b>
<a>2</a>
<b>3</b>
<v>765</v>
<v>911</v>
</b>
<b>
<a>3</a>
<b>9</b>
<v>449</v>
<v>413</v>
</b>
</bs>
</hist>
@ -2182,12 +2187,12 @@
<b>
<a>1</a>
<b>2</b>
<v>7975</v>
<v>7951</v>
</b>
<b>
<a>2</a>
<b>3</b>
<v>559</v>
<v>486</v>
</b>
</bs>
</hist>
@ -2208,7 +2213,7 @@
<b>
<a>2</a>
<b>3</b>
<v>12</v>
<v>24</v>
</b>
<b>
<a>3</a>
@ -2216,53 +2221,43 @@
<v>12</v>
</b>
<b>
<a>4</a>
<b>5</b>
<a>9</a>
<b>10</b>
<v>12</v>
</b>
<b>
<a>5</a>
<b>6</b>
<a>11</a>
<b>12</b>
<v>12</v>
</b>
<b>
<a>10</a>
<b>11</b>
<a>21</a>
<b>22</b>
<v>24</v>
</b>
<b>
<a>45</a>
<b>46</b>
<v>12</v>
</b>
<b>
<a>20</a>
<b>21</b>
<a>129</a>
<b>130</b>
<v>12</v>
</b>
<b>
<a>22</a>
<b>23</b>
<a>133</a>
<b>134</b>
<v>12</v>
</b>
<b>
<a>50</a>
<b>51</b>
<a>245</a>
<b>246</b>
<v>12</v>
</b>
<b>
<a>136</a>
<b>137</b>
<v>12</v>
</b>
<b>
<a>143</a>
<b>144</b>
<v>12</v>
</b>
<b>
<a>231</a>
<b>232</b>
<v>12</v>
</b>
<b>
<a>243</a>
<b>244</b>
<a>248</a>
<b>249</b>
<v>12</v>
</b>
</bs>
@ -2284,7 +2279,7 @@
<b>
<a>2</a>
<b>3</b>
<v>12</v>
<v>24</v>
</b>
<b>
<a>3</a>
@ -2292,53 +2287,43 @@
<v>12</v>
</b>
<b>
<a>4</a>
<b>5</b>
<a>9</a>
<b>10</b>
<v>12</v>
</b>
<b>
<a>5</a>
<b>6</b>
<a>11</a>
<b>12</b>
<v>12</v>
</b>
<b>
<a>10</a>
<b>11</b>
<a>21</a>
<b>22</b>
<v>24</v>
</b>
<b>
<a>45</a>
<b>46</b>
<v>12</v>
</b>
<b>
<a>20</a>
<b>21</b>
<a>107</a>
<b>108</b>
<v>12</v>
</b>
<b>
<a>22</a>
<b>23</b>
<a>119</a>
<b>120</b>
<v>12</v>
</b>
<b>
<a>49</a>
<b>50</b>
<a>177</a>
<b>178</b>
<v>12</v>
</b>
<b>
<a>106</a>
<b>107</b>
<v>12</v>
</b>
<b>
<a>131</a>
<b>132</b>
<v>12</v>
</b>
<b>
<a>169</a>
<b>170</b>
<v>12</v>
</b>
<b>
<a>225</a>
<b>226</b>
<a>215</a>
<b>216</b>
<v>12</v>
</b>
</bs>
@ -31195,10 +31180,6 @@
<k>str</k>
<v>651390</v>
</e>
<e>
<k>text</k>
<v>694155</v>
</e>
</columnsizes>
<dependencies>
<dep>
@ -31218,22 +31199,6 @@
</val>
</dep>
<dep>
<src>id</src>
<trg>text</trg>
<val>
<hist>
<budget>12</budget>
<bs>
<b>
<a>1</a>
<b>2</b>
<v>8776937</v>
</b>
</bs>
</hist>
</val>
</dep>
<dep>
<src>str</src>
<trg>id</trg>
<val>
@ -31259,8 +31224,24 @@
</hist>
</val>
</dep>
</dependencies>
</relation>
<relation>
<name>valuetext</name>
<cardinality>4759522</cardinality>
<columnsizes>
<e>
<k>id</k>
<v>4759522</v>
</e>
<e>
<k>text</k>
<v>704971</v>
</e>
</columnsizes>
<dependencies>
<dep>
<src>str</src>
<src>id</src>
<trg>text</trg>
<val>
<hist>
@ -31269,12 +31250,7 @@
<b>
<a>1</a>
<b>2</b>
<v>639589</v>
</b>
<b>
<a>2</a>
<b>1792</b>
<v>11801</v>
<v>4759522</v>
</b>
</bs>
</hist>
@ -31290,43 +31266,22 @@
<b>
<a>1</a>
<b>2</b>
<v>556144</v>
<v>528095</v>
</b>
<b>
<a>2</a>
<b>3</b>
<v>79204</v>
<v>102815</v>
</b>
<b>
<a>3</a>
<b>15</b>
<v>52136</v>
<b>7</b>
<v>56849</v>
</b>
<b>
<a>15</a>
<b>3666580</b>
<v>6671</v>
</b>
</bs>
</hist>
</val>
</dep>
<dep>
<src>text</src>
<trg>str</trg>
<val>
<hist>
<budget>12</budget>
<bs>
<b>
<a>1</a>
<b>2</b>
<v>692986</v>
</b>
<b>
<a>2</a>
<b>26</b>
<v>1169</v>
<a>7</a>
<b>427516</b>
<v>17212</v>
</b>
</bs>
</hist>
@ -32168,11 +32123,11 @@
</e>
<e>
<k>kind</k>
<v>606</v>
<v>1167</v>
</e>
<e>
<k>location</k>
<v>5532480</v>
<v>3937292</v>
</e>
</columnsizes>
<dependencies>
@ -32216,69 +32171,69 @@
<budget>12</budget>
<bs>
<b>
<a>1</a>
<b>7</b>
<v>46</v>
<a>4</a>
<b>18</b>
<v>97</v>
</b>
<b>
<a>7</a>
<b>17</b>
<v>52</v>
<a>22</a>
<b>48</b>
<v>85</v>
</b>
<b>
<a>17</a>
<b>43</b>
<v>46</v>
<a>48</a>
<b>91</b>
<v>97</v>
</b>
<b>
<a>61</a>
<b>145</b>
<v>46</v>
<a>123</a>
<b>295</b>
<v>97</v>
</b>
<b>
<a>149</a>
<b>438</b>
<v>46</v>
<a>341</a>
<b>541</b>
<v>97</v>
</b>
<b>
<a>505</a>
<b>721</b>
<v>46</v>
<a>541</a>
<b>883</b>
<v>97</v>
</b>
<b>
<a>814</a>
<b>1919</b>
<v>46</v>
<a>1163</a>
<b>2188</b>
<v>97</v>
</b>
<b>
<a>2005</a>
<b>2849</b>
<v>46</v>
<a>2428</a>
<b>3029</b>
<v>97</v>
</b>
<b>
<a>3020</a>
<b>5339</b>
<v>46</v>
<a>3265</a>
<b>4616</b>
<v>97</v>
</b>
<b>
<a>5533</a>
<b>7390</b>
<v>46</v>
<a>4933</a>
<b>6580</b>
<v>97</v>
</b>
<b>
<a>10801</a>
<b>17823</b>
<v>46</v>
<a>6933</a>
<b>20444</b>
<v>97</v>
</b>
<b>
<a>19465</a>
<b>42687</b>
<v>46</v>
<a>30541</a>
<b>198015</b>
<v>97</v>
</b>
<b>
<a>67461</a>
<b>815731</b>
<v>46</v>
<a>399017</a>
<b>399018</b>
<v>12</v>
</b>
</bs>
</hist>
@ -32293,73 +32248,63 @@
<bs>
<b>
<a>1</a>
<b>3</b>
<v>46</v>
<b>7</b>
<v>97</v>
</b>
<b>
<a>3</a>
<b>9</b>
<v>46</v>
<a>7</a>
<b>14</b>
<v>97</v>
</b>
<b>
<a>12</a>
<b>21</b>
<v>46</v>
<a>15</a>
<b>28</b>
<v>97</v>
</b>
<b>
<a>21</a>
<b>85</b>
<v>46</v>
<a>29</a>
<b>47</b>
<v>97</v>
</b>
<b>
<a>86</a>
<b>186</b>
<v>46</v>
<a>74</a>
<b>171</b>
<v>97</v>
</b>
<b>
<a>191</a>
<b>309</b>
<v>46</v>
<a>175</a>
<b>325</b>
<v>97</v>
</b>
<b>
<a>419</a>
<b>726</b>
<v>46</v>
<a>371</a>
<b>515</b>
<v>97</v>
</b>
<b>
<a>740</a>
<b>1251</b>
<v>46</v>
<a>623</a>
<b>1087</b>
<v>97</v>
</b>
<b>
<a>1517</a>
<b>2150</b>
<v>46</v>
<a>1127</a>
<b>1577</b>
<v>97</v>
</b>
<b>
<a>2341</a>
<b>3745</b>
<v>46</v>
<a>1827</a>
<b>2138</b>
<v>97</v>
</b>
<b>
<a>3792</a>
<b>7357</b>
<v>46</v>
<a>2219</a>
<b>8862</b>
<v>97</v>
</b>
<b>
<a>7374</a>
<b>16640</b>
<v>46</v>
</b>
<b>
<a>18652</a>
<b>177112</b>
<v>46</v>
</b>
<b>
<a>374771</a>
<b>374772</b>
<v>6</v>
<a>9363</a>
<b>117436</b>
<v>97</v>
</b>
</bs>
</hist>
@ -32375,22 +32320,37 @@
<b>
<a>1</a>
<b>2</b>
<v>3742949</v>
<v>1896838</v>
</b>
<b>
<a>2</a>
<b>3</b>
<v>1014113</v>
<v>762528</v>
</b>
<b>
<a>3</a>
<b>4</b>
<v>367780</v>
</b>
<b>
<a>4</a>
<b>5</b>
<v>438180</v>
<v>283559</v>
</b>
<b>
<a>5</a>
<b>283788</b>
<v>337238</v>
<b>9</b>
<v>309310</v>
</b>
<b>
<a>9</a>
<b>73</b>
<v>295656</v>
</b>
<b>
<a>73</a>
<b>110845</b>
<v>21617</v>
</b>
</bs>
</hist>
@ -32406,17 +32366,17 @@
<b>
<a>1</a>
<b>2</b>
<v>4350941</v>
<v>2811371</v>
</b>
<b>
<a>2</a>
<b>3</b>
<v>894927</v>
<v>875346</v>
</b>
<b>
<a>3</a>
<b>21</b>
<v>286612</v>
<b>30</b>
<v>250573</v>
</b>
</bs>
</hist>
@ -32999,15 +32959,15 @@
</relation>
<relation>
<name>aggregate_array_init</name>
<cardinality>731431</cardinality>
<cardinality>731623</cardinality>
<columnsizes>
<e>
<k>aggregate</k>
<v>65696</v>
<v>65741</v>
</e>
<e>
<k>initializer</k>
<v>731431</v>
<v>731623</v>
</e>
<e>
<k>element_index</k>
@ -33030,7 +32990,7 @@
<b>
<a>2</a>
<b>3</b>
<v>7794</v>
<v>7812</v>
</b>
<b>
<a>3</a>
@ -33040,7 +33000,7 @@
<b>
<a>4</a>
<b>5</b>
<v>7996</v>
<v>8017</v>
</b>
<b>
<a>5</a>
@ -33055,12 +33015,12 @@
<b>
<a>8</a>
<b>11</b>
<v>5391</v>
<v>5394</v>
</b>
<b>
<a>11</a>
<b>22</b>
<v>5001</v>
<v>5004</v>
</b>
<b>
<a>22</a>
@ -33086,7 +33046,7 @@
<b>
<a>2</a>
<b>3</b>
<v>7794</v>
<v>7812</v>
</b>
<b>
<a>3</a>
@ -33096,7 +33056,7 @@
<b>
<a>4</a>
<b>5</b>
<v>7996</v>
<v>8017</v>
</b>
<b>
<a>5</a>
@ -33111,12 +33071,12 @@
<b>
<a>8</a>
<b>11</b>
<v>5391</v>
<v>5394</v>
</b>
<b>
<a>11</a>
<b>22</b>
<v>5001</v>
<v>5004</v>
</b>
<b>
<a>22</a>
@ -33137,7 +33097,7 @@
<b>
<a>1</a>
<b>2</b>
<v>731431</v>
<v>731623</v>
</b>
</bs>
</hist>
@ -33153,7 +33113,7 @@
<b>
<a>1</a>
<b>2</b>
<v>731431</v>
<v>731623</v>
</b>
</bs>
</hist>
@ -33208,7 +33168,7 @@
</b>
<b>
<a>202</a>
<b>65696</b>
<b>65741</b>
<v>314</v>
</b>
</bs>
@ -33264,7 +33224,7 @@
</b>
<b>
<a>202</a>
<b>65696</b>
<b>65741</b>
<v>314</v>
</b>
</bs>

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -0,0 +1,5 @@
description: Split off valuetext table
compatibility: partial
values.rel: run values.qlo
valuetext.rel: run valuetext.qlo

Просмотреть файл

@ -0,0 +1,7 @@
class Value extends @value { string toString() { none() } }
from Value v, string s
where values(v, s, _)
select v, s

Просмотреть файл

@ -0,0 +1,7 @@
class Value extends @value { string toString() { none() } }
from Value v, string s
where values(v, _, s)
select v, s