ruby-prof 0.14.1 → 0.14.2
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES +2 -2
- data/Rakefile +9 -5
- data/doc/LICENSE.html +5 -5
- data/doc/README_rdoc.html +43 -46
- data/doc/Rack/RubyProf.html +6 -6
- data/doc/RubyProf/AbstractPrinter.html +1 -1
- data/doc/RubyProf/CallInfo.html +2 -2
- data/doc/RubyProf/CallInfoPrinter.html +1 -1
- data/doc/RubyProf/CallStackPrinter.html +42 -42
- data/doc/RubyProf/CallTreePrinter.html +8 -8
- data/doc/RubyProf/Cmd.html +38 -38
- data/doc/RubyProf/DotPrinter.html +2 -2
- data/doc/RubyProf/FlatPrinterWithLineNumbers.html +3 -3
- data/doc/RubyProf/GraphHtmlPrinter.html +3 -3
- data/doc/RubyProf/MethodInfo.html +2 -2
- data/doc/RubyProf/ProfileTask.html +7 -7
- data/doc/RubyProf.html +4 -5
- data/doc/created.rid +2 -2
- data/doc/examples/flat_txt.html +1 -1
- data/doc/examples/graph_txt.html +3 -3
- data/doc/index.html +43 -46
- data/doc/js/search_index.js +1 -1
- data/ext/ruby_prof/extconf.rb +0 -2
- data/ext/ruby_prof/rp_measure_wall_time.c +1 -1
- data/lib/ruby-prof/version.rb +1 -1
- metadata +65 -55
- checksums.yaml +0 -7
- data/doc/RubyProf/Test.html +0 -539
@@ -220,7 +220,7 @@
|
|
220
220
|
<div class="method-source-code" id="arguments-source">
|
221
221
|
<pre><span class="ruby-comment"># File lib/ruby-prof/printers/call_stack_printer.rb, line 166</span>
|
222
222
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier">arguments</span>
|
223
|
-
<span class="ruby-constant">ARGV</span>.<span class="ruby-identifier">join</span>(<span class="ruby-string"
|
223
|
+
<span class="ruby-constant">ARGV</span>.<span class="ruby-identifier">join</span>(<span class="ruby-string">' '</span>)
|
224
224
|
<span class="ruby-keyword">end</span></pre>
|
225
225
|
</div>
|
226
226
|
|
@@ -297,7 +297,7 @@
|
|
297
297
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier">copy_image_files</span>
|
298
298
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@output</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">File</span>)
|
299
299
|
<span class="ruby-identifier">target_dir</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">dirname</span>(<span class="ruby-ivar">@output</span>.<span class="ruby-identifier">path</span>)
|
300
|
-
<span class="ruby-identifier">image_dir</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-constant">File</span>.<span class="ruby-identifier">dirname</span>(<span class="ruby-keyword">__FILE__</span>), <span class="ruby-string"
|
300
|
+
<span class="ruby-identifier">image_dir</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-constant">File</span>.<span class="ruby-identifier">dirname</span>(<span class="ruby-keyword">__FILE__</span>), <span class="ruby-string">'..'</span>, <span class="ruby-string">'images'</span>)
|
301
301
|
<span class="ruby-node">%w(empty plus minus)</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">img</span><span class="ruby-operator">|</span>
|
302
302
|
<span class="ruby-identifier">source_file</span> = <span class="ruby-node">"#{image_dir}/#{img}.png"</span>
|
303
303
|
<span class="ruby-identifier">target_file</span> = <span class="ruby-node">"#{target_dir}/#{img}.png"</span>
|
@@ -404,7 +404,7 @@
|
|
404
404
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier">graph_link</span>(<span class="ruby-identifier">call_info</span>)
|
405
405
|
<span class="ruby-identifier">total_calls</span> = <span class="ruby-identifier">call_info</span>.<span class="ruby-identifier">target</span>.<span class="ruby-identifier">call_infos</span>.<span class="ruby-identifier">inject</span>(<span class="ruby-value">0</span>){<span class="ruby-operator">|</span><span class="ruby-identifier">t</span>, <span class="ruby-identifier">ci</span><span class="ruby-operator">|</span> <span class="ruby-identifier">t</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">ci</span>.<span class="ruby-identifier">called</span>}
|
406
406
|
<span class="ruby-identifier">href</span> = <span class="ruby-node">"#{@graph_html}##{method_href(call_info.target)}"</span>
|
407
|
-
<span class="ruby-identifier">totals</span> = <span class="ruby-ivar">@graph_html</span> <span class="ruby-operator">?</span> <span class="ruby-node">"<a href
|
407
|
+
<span class="ruby-identifier">totals</span> = <span class="ruby-ivar">@graph_html</span> <span class="ruby-operator">?</span> <span class="ruby-node">"<a href='#{href}'>#{total_calls}</a>"</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">total_calls</span>.<span class="ruby-identifier">to_s</span>
|
408
408
|
<span class="ruby-node">"[#{call_info.called} calls, #{totals} total]"</span>
|
409
409
|
<span class="ruby-keyword">end</span></pre>
|
410
410
|
</div>
|
@@ -550,7 +550,7 @@
|
|
550
550
|
for it to be printed out in the report.
|
551
551
|
Default value is 0.
|
552
552
|
|
553
|
-
:print_file - True or false. Specifies if a method
|
553
|
+
:print_file - True or false. Specifies if a method's source
|
554
554
|
file should be printed. Default value if false.
|
555
555
|
|
556
556
|
:threshold - a float from 0 to 100 that sets the threshold of
|
@@ -682,7 +682,7 @@ end_commands</span>
|
|
682
682
|
<div class="method-source-code" id="print_css-source">
|
683
683
|
<pre><span class="ruby-comment"># File lib/ruby-prof/printers/call_stack_printer.rb, line 210</span>
|
684
684
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier">print_css</span>
|
685
|
-
<span class="ruby-ivar">@output</span>.<span class="ruby-identifier">puts</span> <span class="ruby-value"><<
|
685
|
+
<span class="ruby-ivar">@output</span>.<span class="ruby-identifier">puts</span> <span class="ruby-value"><<-'end_css'
|
686
686
|
<style type="text/css">
|
687
687
|
<!--
|
688
688
|
body {
|
@@ -816,7 +816,7 @@ end_css</span>
|
|
816
816
|
<div class="method-source-code" id="print_footer-source">
|
817
817
|
<pre><span class="ruby-comment"># File lib/ruby-prof/printers/call_stack_printer.rb, line 206</span>
|
818
818
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier">print_footer</span>
|
819
|
-
<span class="ruby-ivar">@output</span>.<span class="ruby-identifier">puts</span> <span class="ruby-string"
|
819
|
+
<span class="ruby-ivar">@output</span>.<span class="ruby-identifier">puts</span> <span class="ruby-string">'<div id="sentinel"></div></div></body></html>'</span>
|
820
820
|
<span class="ruby-keyword">end</span></pre>
|
821
821
|
</div>
|
822
822
|
|
@@ -850,11 +850,11 @@ end_css</span>
|
|
850
850
|
<pre><span class="ruby-comment"># File lib/ruby-prof/printers/call_stack_printer.rb, line 194</span>
|
851
851
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier">print_header</span>
|
852
852
|
<span class="ruby-ivar">@output</span>.<span class="ruby-identifier">puts</span> <span class="ruby-string">"<html><head>"</span>
|
853
|
-
<span class="ruby-ivar">@output</span>.<span class="ruby-identifier">puts</span> <span class="ruby-string"
|
853
|
+
<span class="ruby-ivar">@output</span>.<span class="ruby-identifier">puts</span> <span class="ruby-string">'<meta http-equiv="content-type" content="text/html; charset=utf-8">'</span>
|
854
854
|
<span class="ruby-ivar">@output</span>.<span class="ruby-identifier">puts</span> <span class="ruby-node">"<title>#{h title}</title>"</span>
|
855
855
|
<span class="ruby-identifier">print_css</span>
|
856
856
|
<span class="ruby-identifier">print_java_script</span>
|
857
|
-
<span class="ruby-ivar">@output</span>.<span class="ruby-identifier">puts</span> <span class="ruby-string"
|
857
|
+
<span class="ruby-ivar">@output</span>.<span class="ruby-identifier">puts</span> <span class="ruby-string">'</head><body><div style="display: inline-block;">'</span>
|
858
858
|
<span class="ruby-identifier">print_title_bar</span>
|
859
859
|
<span class="ruby-identifier">print_commands</span>
|
860
860
|
<span class="ruby-identifier">print_help</span>
|
@@ -890,7 +890,7 @@ end_css</span>
|
|
890
890
|
<div class="method-source-code" id="print_help-source">
|
891
891
|
<pre><span class="ruby-comment"># File lib/ruby-prof/printers/call_stack_printer.rb, line 753</span>
|
892
892
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier">print_help</span>
|
893
|
-
<span class="ruby-ivar">@output</span>.<span class="ruby-identifier">puts</span> <span class="ruby-value"><<
|
893
|
+
<span class="ruby-ivar">@output</span>.<span class="ruby-identifier">puts</span> <span class="ruby-value"><<-'end_help'
|
894
894
|
<div style="display: none;" id="help">
|
895
895
|
<img src="empty.png"> Enter a decimal value <i>d</i> into the threshold field and click "Apply"
|
896
896
|
to hide all nodes marked with time values lower than <i>d</i>.<br>
|
@@ -937,7 +937,7 @@ end_help</span>
|
|
937
937
|
<div class="method-source-code" id="print_java_script-source">
|
938
938
|
<pre><span class="ruby-comment"># File lib/ruby-prof/printers/call_stack_printer.rb, line 315</span>
|
939
939
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier">print_java_script</span>
|
940
|
-
<span class="ruby-ivar">@output</span>.<span class="ruby-identifier">puts</span> <span class="ruby-value"><<
|
940
|
+
<span class="ruby-ivar">@output</span>.<span class="ruby-identifier">puts</span> <span class="ruby-value"><<-'end_java_script'
|
941
941
|
<script type="text/javascript">
|
942
942
|
/*
|
943
943
|
Copyright (C) 2005,2009 Stefan Kaes
|
@@ -974,7 +974,7 @@ function findUlChild(li){
|
|
974
974
|
|
975
975
|
function isLeafNode(li) {
|
976
976
|
var img = li.firstChild;
|
977
|
-
return (img.src.indexOf(
|
977
|
+
return (img.src.indexOf('empty.png') > -1);
|
978
978
|
}
|
979
979
|
|
980
980
|
function hideLI(li) {
|
@@ -982,11 +982,11 @@ function hideLI(li) {
|
|
982
982
|
return;
|
983
983
|
|
984
984
|
var img = li.firstChild;
|
985
|
-
img.src =
|
985
|
+
img.src = 'plus.png';
|
986
986
|
|
987
987
|
var ul = findUlChild(li);
|
988
988
|
if (ul) {
|
989
|
-
ul.style.display =
|
989
|
+
ul.style.display = 'none';
|
990
990
|
hideUL(ul);
|
991
991
|
}
|
992
992
|
}
|
@@ -996,11 +996,11 @@ function showLI(li) {
|
|
996
996
|
return;
|
997
997
|
|
998
998
|
var img = li.firstChild;
|
999
|
-
img.src =
|
999
|
+
img.src = 'minus.png';
|
1000
1000
|
|
1001
1001
|
var ul = findUlChild(li);
|
1002
1002
|
if (ul) {
|
1003
|
-
ul.style.display =
|
1003
|
+
ul.style.display = 'block';
|
1004
1004
|
showUL(ul);
|
1005
1005
|
}
|
1006
1006
|
}
|
@@ -1017,7 +1017,7 @@ function toggleLI(li) {
|
|
1017
1017
|
|
1018
1018
|
function aboveThreshold(text, threshold) {
|
1019
1019
|
var match = text.match(/\d+[.,]\d+/);
|
1020
|
-
return (match && parseFloat(match[0].replace(/,/,
|
1020
|
+
return (match && parseFloat(match[0].replace(/,/, '.'))>=threshold);
|
1021
1021
|
}
|
1022
1022
|
|
1023
1023
|
function setThresholdLI(li, threshold) {
|
@@ -1032,16 +1032,16 @@ function setThresholdLI(li, threshold) {
|
|
1032
1032
|
count = setThresholdUL(ul, threshold);
|
1033
1033
|
}
|
1034
1034
|
if (count>0) {
|
1035
|
-
img.src =
|
1035
|
+
img.src = 'minus.png';
|
1036
1036
|
}
|
1037
1037
|
else {
|
1038
|
-
img.src =
|
1038
|
+
img.src = 'empty.png';
|
1039
1039
|
}
|
1040
1040
|
if (visible) {
|
1041
|
-
li.style.display =
|
1041
|
+
li.style.display = 'block'
|
1042
1042
|
}
|
1043
1043
|
else {
|
1044
|
-
li.style.display =
|
1044
|
+
li.style.display = 'none'
|
1045
1045
|
}
|
1046
1046
|
return visible;
|
1047
1047
|
}
|
@@ -1057,10 +1057,10 @@ function setThresholdUL(node, threshold) {
|
|
1057
1057
|
|
1058
1058
|
var visible = (count > 0) ? 1 : 0;
|
1059
1059
|
if (visible) {
|
1060
|
-
node.style.display =
|
1060
|
+
node.style.display = 'block';
|
1061
1061
|
}
|
1062
1062
|
else {
|
1063
|
-
node.style.display =
|
1063
|
+
node.style.display = 'none';
|
1064
1064
|
}
|
1065
1065
|
return visible;
|
1066
1066
|
}
|
@@ -1068,24 +1068,24 @@ function setThresholdUL(node, threshold) {
|
|
1068
1068
|
function toggleChildren(img, event) {
|
1069
1069
|
event.cancelBubble=true;
|
1070
1070
|
|
1071
|
-
if (img.src.indexOf(
|
1071
|
+
if (img.src.indexOf('empty.png') > -1)
|
1072
1072
|
return;
|
1073
1073
|
|
1074
|
-
var minus = (img.src.indexOf(
|
1074
|
+
var minus = (img.src.indexOf('minus.png') > -1);
|
1075
1075
|
|
1076
1076
|
if (minus) {
|
1077
|
-
img.src =
|
1077
|
+
img.src = 'plus.png';
|
1078
1078
|
}
|
1079
1079
|
else
|
1080
|
-
img.src =
|
1080
|
+
img.src = 'minus.png';
|
1081
1081
|
|
1082
1082
|
var li = img.parentNode;
|
1083
1083
|
var ul = findUlChild(li);
|
1084
1084
|
if (ul) {
|
1085
1085
|
if (minus)
|
1086
|
-
ul.style.display =
|
1086
|
+
ul.style.display = 'none';
|
1087
1087
|
else
|
1088
|
-
ul.style.display =
|
1088
|
+
ul.style.display = 'block';
|
1089
1089
|
}
|
1090
1090
|
if (minus)
|
1091
1091
|
moveSelectionIfNecessary(li);
|
@@ -1093,27 +1093,27 @@ function toggleChildren(img, event) {
|
|
1093
1093
|
|
1094
1094
|
function showChildren(li) {
|
1095
1095
|
var img = li.firstChild;
|
1096
|
-
if (img.src.indexOf(
|
1096
|
+
if (img.src.indexOf('empty.png') > -1)
|
1097
1097
|
return;
|
1098
|
-
img.src =
|
1098
|
+
img.src = 'minus.png';
|
1099
1099
|
|
1100
1100
|
var ul = findUlChild(li);
|
1101
1101
|
if (ul) {
|
1102
|
-
ul.style.display =
|
1102
|
+
ul.style.display = 'block';
|
1103
1103
|
}
|
1104
1104
|
}
|
1105
1105
|
|
1106
1106
|
function setThreshold() {
|
1107
1107
|
var tv = document.getElementById("threshold").value;
|
1108
1108
|
if (tv.match(/[0-9]+([.,][0-9]+)?/)) {
|
1109
|
-
var f = parseFloat(tv.replace(/,/,
|
1109
|
+
var f = parseFloat(tv.replace(/,/, '.'));
|
1110
1110
|
var threads = document.getElementsByName("thread");
|
1111
1111
|
var l = threads.length;
|
1112
1112
|
for ( var i = 0; i < l ; i++ ) {
|
1113
1113
|
setThresholdUL(threads[i], f);
|
1114
1114
|
}
|
1115
1115
|
var p = selectedNode;
|
1116
|
-
while (p && p.style.display
|
1116
|
+
while (p && p.style.display=='none')
|
1117
1117
|
p=p.parentNode.parentNode;
|
1118
1118
|
if (p && p.nodeName=="LI")
|
1119
1119
|
selectNode(p);
|
@@ -1146,11 +1146,11 @@ function toggleHelp(node) {
|
|
1146
1146
|
var help = document.getElementById("help");
|
1147
1147
|
if (node.value == "Show Help") {
|
1148
1148
|
node.value = "Hide Help";
|
1149
|
-
help.style.display =
|
1149
|
+
help.style.display = 'block';
|
1150
1150
|
}
|
1151
1151
|
else {
|
1152
1152
|
node.value = "Show Help";
|
1153
|
-
help.style.display =
|
1153
|
+
help.style.display = 'none';
|
1154
1154
|
}
|
1155
1155
|
}
|
1156
1156
|
|
@@ -1187,7 +1187,7 @@ function selectNode(node, event) {
|
|
1187
1187
|
|
1188
1188
|
function moveUp(){
|
1189
1189
|
var p = selectedNode.previousSibling;
|
1190
|
-
while (p && p.style.display ==
|
1190
|
+
while (p && p.style.display == 'none')
|
1191
1191
|
p = p.previousSibling;
|
1192
1192
|
if (p && p.nodeName == "LI") {
|
1193
1193
|
selectNode(p, null);
|
@@ -1196,7 +1196,7 @@ function moveUp(){
|
|
1196
1196
|
|
1197
1197
|
function moveDown(){
|
1198
1198
|
var p = selectedNode.nextSibling;
|
1199
|
-
while (p && p.style.display ==
|
1199
|
+
while (p && p.style.display == 'none')
|
1200
1200
|
p = p.nextSibling;
|
1201
1201
|
if (p && p.nodeName == "LI") {
|
1202
1202
|
selectNode(p, null);
|
@@ -1223,7 +1223,7 @@ function moveRight(){
|
|
1223
1223
|
function moveForward(){
|
1224
1224
|
if (isLeafNode(selectedNode)) {
|
1225
1225
|
var p = selectedNode;
|
1226
|
-
while ((p.nextSibling == null || p.nextSibling.style.display
|
1226
|
+
while ((p.nextSibling == null || p.nextSibling.style.display=='none') && p.nodeName=="LI") {
|
1227
1227
|
p = p.parentNode.parentNode;
|
1228
1228
|
}
|
1229
1229
|
if (p.nodeName=="LI")
|
@@ -1236,20 +1236,20 @@ function moveForward(){
|
|
1236
1236
|
|
1237
1237
|
function isExpandedNode(li){
|
1238
1238
|
var img = li.firstChild;
|
1239
|
-
return(img.src.indexOf(
|
1239
|
+
return(img.src.indexOf('minus.png')>-1);
|
1240
1240
|
}
|
1241
1241
|
|
1242
1242
|
function moveBackward(){
|
1243
1243
|
var p = selectedNode;
|
1244
1244
|
var q = p.previousSibling;
|
1245
|
-
while (q != null && q.style.display
|
1245
|
+
while (q != null && q.style.display=='none')
|
1246
1246
|
q = q.previousSibling;
|
1247
1247
|
if (q == null) {
|
1248
1248
|
p = p.parentNode.parentNode;
|
1249
1249
|
} else {
|
1250
1250
|
while (!isLeafNode(q) && isExpandedNode(q)) {
|
1251
1251
|
q = findUlChild(q).lastChild;
|
1252
|
-
while (q.style.display
|
1252
|
+
while (q.style.display=='none')
|
1253
1253
|
q = q.previousSibling;
|
1254
1254
|
}
|
1255
1255
|
p = q;
|
@@ -1404,7 +1404,7 @@ end_java_script</span>
|
|
1404
1404
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">expanded</span>
|
1405
1405
|
<span class="ruby-ivar">@output</span>.<span class="ruby-identifier">print</span> <span class="ruby-string">"<ul>"</span>
|
1406
1406
|
<span class="ruby-keyword">else</span>
|
1407
|
-
<span class="ruby-ivar">@output</span>.<span class="ruby-identifier">print</span> <span class="ruby-string"
|
1407
|
+
<span class="ruby-ivar">@output</span>.<span class="ruby-identifier">print</span> <span class="ruby-string">'<ul style="display:none">'</span>
|
1408
1408
|
<span class="ruby-keyword">end</span>
|
1409
1409
|
<span class="ruby-identifier">kids</span>.<span class="ruby-identifier">sort_by</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">c</span><span class="ruby-operator">|</span> <span class="ruby-operator">-</span><span class="ruby-identifier">c</span>.<span class="ruby-identifier">total_time</span>}.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">callinfo</span><span class="ruby-operator">|</span>
|
1410
1410
|
<span class="ruby-identifier">print_stack</span> <span class="ruby-identifier">callinfo</span>, <span class="ruby-identifier">total_time</span>
|
@@ -209,7 +209,7 @@ and similar tools.</p>
|
|
209
209
|
for it to be printed out in the report.
|
210
210
|
Default value is 0.
|
211
211
|
|
212
|
-
:print_file - True or false. Specifies if a method
|
212
|
+
:print_file - True or false. Specifies if a method's source
|
213
213
|
file should be printed. Default value if false.</pre>
|
214
214
|
|
215
215
|
|
@@ -226,25 +226,25 @@ and similar tools.</p>
|
|
226
226
|
<span class="ruby-keyword">case</span> <span class="ruby-constant">RubyProf</span>.<span class="ruby-identifier">measure_mode</span>
|
227
227
|
<span class="ruby-keyword">when</span> <span class="ruby-constant">RubyProf</span><span class="ruby-operator">::</span><span class="ruby-constant">PROCESS_TIME</span>
|
228
228
|
<span class="ruby-ivar">@value_scale</span> = <span class="ruby-constant">RubyProf</span><span class="ruby-operator">::</span><span class="ruby-constant">CLOCKS_PER_SEC</span>;
|
229
|
-
<span class="ruby-ivar">@output</span> <span class="ruby-operator"><<</span> <span class="ruby-string"
|
229
|
+
<span class="ruby-ivar">@output</span> <span class="ruby-operator"><<</span> <span class="ruby-string">'process_time'</span>
|
230
230
|
<span class="ruby-keyword">when</span> <span class="ruby-constant">RubyProf</span><span class="ruby-operator">::</span><span class="ruby-constant">WALL_TIME</span>
|
231
231
|
<span class="ruby-ivar">@value_scale</span> = <span class="ruby-value">1_000_000</span>
|
232
|
-
<span class="ruby-ivar">@output</span> <span class="ruby-operator"><<</span> <span class="ruby-string"
|
232
|
+
<span class="ruby-ivar">@output</span> <span class="ruby-operator"><<</span> <span class="ruby-string">'wall_time'</span>
|
233
233
|
<span class="ruby-keyword">when</span> <span class="ruby-constant">RubyProf</span>.<span class="ruby-identifier">const_defined?</span>(<span class="ruby-value">:CPU_TIME</span>) <span class="ruby-operator">&&</span> <span class="ruby-constant">RubyProf</span><span class="ruby-operator">::</span><span class="ruby-constant">CPU_TIME</span>
|
234
234
|
<span class="ruby-ivar">@value_scale</span> = <span class="ruby-constant">RubyProf</span>.<span class="ruby-identifier">cpu_frequency</span>
|
235
|
-
<span class="ruby-ivar">@output</span> <span class="ruby-operator"><<</span> <span class="ruby-string"
|
235
|
+
<span class="ruby-ivar">@output</span> <span class="ruby-operator"><<</span> <span class="ruby-string">'cpu_time'</span>
|
236
236
|
<span class="ruby-keyword">when</span> <span class="ruby-constant">RubyProf</span>.<span class="ruby-identifier">const_defined?</span>(<span class="ruby-value">:ALLOCATIONS</span>) <span class="ruby-operator">&&</span> <span class="ruby-constant">RubyProf</span><span class="ruby-operator">::</span><span class="ruby-constant">ALLOCATIONS</span>
|
237
237
|
<span class="ruby-ivar">@value_scale</span> = <span class="ruby-value">1</span>
|
238
|
-
<span class="ruby-ivar">@output</span> <span class="ruby-operator"><<</span> <span class="ruby-string"
|
238
|
+
<span class="ruby-ivar">@output</span> <span class="ruby-operator"><<</span> <span class="ruby-string">'allocations'</span>
|
239
239
|
<span class="ruby-keyword">when</span> <span class="ruby-constant">RubyProf</span>.<span class="ruby-identifier">const_defined?</span>(<span class="ruby-value">:MEMORY</span>) <span class="ruby-operator">&&</span> <span class="ruby-constant">RubyProf</span><span class="ruby-operator">::</span><span class="ruby-constant">MEMORY</span>
|
240
240
|
<span class="ruby-ivar">@value_scale</span> = <span class="ruby-value">1</span>
|
241
|
-
<span class="ruby-ivar">@output</span> <span class="ruby-operator"><<</span> <span class="ruby-string"
|
241
|
+
<span class="ruby-ivar">@output</span> <span class="ruby-operator"><<</span> <span class="ruby-string">'memory'</span>
|
242
242
|
<span class="ruby-keyword">when</span> <span class="ruby-constant">RubyProf</span>.<span class="ruby-identifier">const_defined?</span>(<span class="ruby-value">:GC_RUNS</span>) <span class="ruby-operator">&&</span> <span class="ruby-constant">RubyProf</span><span class="ruby-operator">::</span><span class="ruby-constant">GC_RUNS</span>
|
243
243
|
<span class="ruby-ivar">@value_scale</span> = <span class="ruby-value">1</span>
|
244
|
-
<span class="ruby-ivar">@output</span> <span class="ruby-operator"><<</span> <span class="ruby-string"
|
244
|
+
<span class="ruby-ivar">@output</span> <span class="ruby-operator"><<</span> <span class="ruby-string">'gc_runs'</span>
|
245
245
|
<span class="ruby-keyword">when</span> <span class="ruby-constant">RubyProf</span>.<span class="ruby-identifier">const_defined?</span>(<span class="ruby-value">:GC_TIME</span>) <span class="ruby-operator">&&</span> <span class="ruby-constant">RubyProf</span><span class="ruby-operator">::</span><span class="ruby-constant">GC_TIME</span>
|
246
246
|
<span class="ruby-ivar">@value_scale</span> = <span class="ruby-value">1000000</span>
|
247
|
-
<span class="ruby-ivar">@output</span> <span class="ruby-operator"><<</span> <span class="ruby-string"
|
247
|
+
<span class="ruby-ivar">@output</span> <span class="ruby-operator"><<</span> <span class="ruby-string">'gc_time'</span>
|
248
248
|
<span class="ruby-keyword">else</span>
|
249
249
|
<span class="ruby-identifier">raise</span> <span class="ruby-node">"Unknown measure mode: #{RubyProf.measure_mode}"</span>
|
250
250
|
<span class="ruby-keyword">end</span>
|
data/doc/RubyProf/Cmd.html
CHANGED
@@ -285,15 +285,15 @@
|
|
285
285
|
<span class="ruby-identifier">opts</span>.<span class="ruby-identifier">separator</span> <span class="ruby-string">""</span>
|
286
286
|
<span class="ruby-identifier">opts</span>.<span class="ruby-identifier">separator</span> <span class="ruby-string">"Options:"</span>
|
287
287
|
|
288
|
-
<span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-string"
|
289
|
-
<span class="ruby-string"
|
290
|
-
<span class="ruby-string"
|
291
|
-
<span class="ruby-string"
|
292
|
-
<span class="ruby-string"
|
293
|
-
<span class="ruby-string"
|
294
|
-
<span class="ruby-string"
|
295
|
-
<span class="ruby-string"
|
296
|
-
<span class="ruby-string"
|
288
|
+
<span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-string">'-p printer'</span>, <span class="ruby-string">'--printer=printer'</span>, [<span class="ruby-value">:flat</span>, <span class="ruby-value">:flat_with_line_numbers</span>, <span class="ruby-value">:graph</span>, <span class="ruby-value">:graph_html</span>, <span class="ruby-value">:call_tree</span>, <span class="ruby-value">:call_stack</span>, <span class="ruby-value">:dot</span>],
|
289
|
+
<span class="ruby-string">'Select a printer:'</span>,
|
290
|
+
<span class="ruby-string">' flat - Prints a flat profile as text (default).'</span>,
|
291
|
+
<span class="ruby-string">' flat_with_line_numbers - same as flat, with line numbers.'</span>,
|
292
|
+
<span class="ruby-string">' graph - Prints a graph profile as text.'</span>,
|
293
|
+
<span class="ruby-string">' graph_html - Prints a graph profile as html.'</span>,
|
294
|
+
<span class="ruby-string">' call_tree - format for KCacheGrind'</span>,
|
295
|
+
<span class="ruby-string">' call_stack - prints a HTML visualization of the call tree'</span>,
|
296
|
+
<span class="ruby-string">' dot - Prints a graph profile as a dot file'</span>
|
297
297
|
) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">printer</span><span class="ruby-operator">|</span>
|
298
298
|
|
299
299
|
|
@@ -315,29 +315,29 @@
|
|
315
315
|
<span class="ruby-keyword">end</span>
|
316
316
|
<span class="ruby-keyword">end</span>
|
317
317
|
|
318
|
-
<span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-string"
|
319
|
-
<span class="ruby-string"
|
320
|
-
<span class="ruby-string"
|
321
|
-
<span class="ruby-string"
|
318
|
+
<span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-string">'-m min_percent'</span>, <span class="ruby-string">'--min_percent=min_percent'</span>, <span class="ruby-constant">Float</span>,
|
319
|
+
<span class="ruby-string">'The minimum percent a method must take before '</span>,
|
320
|
+
<span class="ruby-string">' being included in output reports.'</span>,
|
321
|
+
<span class="ruby-string">' this option is not supported for call tree.'</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">min_percent</span><span class="ruby-operator">|</span>
|
322
322
|
<span class="ruby-identifier">options</span>.<span class="ruby-identifier">min_percent</span> = <span class="ruby-identifier">min_percent</span>
|
323
323
|
<span class="ruby-keyword">end</span>
|
324
324
|
|
325
|
-
<span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-string"
|
326
|
-
<span class="ruby-string"
|
325
|
+
<span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-string">'-f path'</span>, <span class="ruby-string">'--file=path'</span>,
|
326
|
+
<span class="ruby-string">'Output results to a file instead of standard out.'</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">file</span><span class="ruby-operator">|</span>
|
327
327
|
<span class="ruby-identifier">options</span>.<span class="ruby-identifier">file</span> = <span class="ruby-identifier">file</span>
|
328
328
|
<span class="ruby-identifier">options</span>.<span class="ruby-identifier">old_wd</span> = <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">pwd</span>
|
329
329
|
<span class="ruby-keyword">end</span>
|
330
330
|
|
331
|
-
<span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-string"
|
331
|
+
<span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-string">'--mode=measure_mode'</span>,
|
332
332
|
[<span class="ruby-value">:process</span>, <span class="ruby-value">:wall</span>, <span class="ruby-value">:cpu</span>, <span class="ruby-value">:allocations</span>, <span class="ruby-value">:memory</span>, <span class="ruby-value">:gc_runs</span>, <span class="ruby-value">:gc_time</span>],
|
333
|
-
<span class="ruby-string"
|
334
|
-
<span class="ruby-string"
|
335
|
-
<span class="ruby-string"
|
336
|
-
<span class="ruby-string"
|
337
|
-
<span class="ruby-string"
|
338
|
-
<span class="ruby-string"
|
339
|
-
<span class="ruby-string"
|
340
|
-
<span class="ruby-string"
|
333
|
+
<span class="ruby-string">'Select what ruby-prof should measure:'</span>,
|
334
|
+
<span class="ruby-string">' process - Process time (default).'</span>,
|
335
|
+
<span class="ruby-string">' wall - Wall time.'</span>,
|
336
|
+
<span class="ruby-string">' cpu - CPU time (Pentium and PowerPCs only).'</span>,
|
337
|
+
<span class="ruby-string">' allocations - Object allocations (requires patched Ruby interpreter).'</span>,
|
338
|
+
<span class="ruby-string">' memory - Allocated memory in KB (requires patched Ruby interpreter).'</span>,
|
339
|
+
<span class="ruby-string">' gc_runs - Number of garbage collections (requires patched Ruby interpreter).'</span>,
|
340
|
+
<span class="ruby-string">' gc_time - Time spent in garbage collection (requires patched Ruby interpreter).'</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">measure_mode</span><span class="ruby-operator">|</span>
|
341
341
|
|
342
342
|
<span class="ruby-keyword">case</span> <span class="ruby-identifier">measure_mode</span>
|
343
343
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:process</span>
|
@@ -357,12 +357,12 @@
|
|
357
357
|
<span class="ruby-keyword">end</span>
|
358
358
|
<span class="ruby-keyword">end</span>
|
359
359
|
|
360
|
-
<span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-string"
|
361
|
-
<span class="ruby-string"
|
362
|
-
<span class="ruby-string"
|
363
|
-
<span class="ruby-string"
|
364
|
-
<span class="ruby-string"
|
365
|
-
<span class="ruby-string"
|
360
|
+
<span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-string">'-s sort_mode'</span>, <span class="ruby-string">'--sort=sort_mode'</span>, [<span class="ruby-value">:total</span>, <span class="ruby-value">:self</span>, <span class="ruby-value">:wait</span>, <span class="ruby-value">:child</span>],
|
361
|
+
<span class="ruby-string">'Select how ruby-prof results should be sorted:'</span>,
|
362
|
+
<span class="ruby-string">' total - Total time'</span>,
|
363
|
+
<span class="ruby-string">' self - Self time'</span>,
|
364
|
+
<span class="ruby-string">' wait - Wait time'</span>,
|
365
|
+
<span class="ruby-string">' child - Child time'</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">sort_mode</span><span class="ruby-operator">|</span>
|
366
366
|
|
367
367
|
<span class="ruby-identifier">options</span>.<span class="ruby-identifier">sort_method</span> = <span class="ruby-keyword">case</span> <span class="ruby-identifier">sort_mode</span>
|
368
368
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:total</span>
|
@@ -397,7 +397,7 @@
|
|
397
397
|
<span class="ruby-keyword">end</span>
|
398
398
|
|
399
399
|
<span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-string">"-v"</span>,<span class="ruby-string">"Show version, set $VERBOSE to true, profile script if option given"</span>) <span class="ruby-keyword">do</span>
|
400
|
-
<span class="ruby-identifier">puts</span> <span class="ruby-string">"ruby version: "</span> <span class="ruby-operator">+</span> [<span class="ruby-constant">RUBY_PATCHLEVEL</span>, <span class="ruby-constant">RUBY_PLATFORM</span>, <span class="ruby-constant">RUBY_VERSION</span>].<span class="ruby-identifier">join</span>(<span class="ruby-string"
|
400
|
+
<span class="ruby-identifier">puts</span> <span class="ruby-string">"ruby version: "</span> <span class="ruby-operator">+</span> [<span class="ruby-constant">RUBY_PATCHLEVEL</span>, <span class="ruby-constant">RUBY_PLATFORM</span>, <span class="ruby-constant">RUBY_VERSION</span>].<span class="ruby-identifier">join</span>(<span class="ruby-string">' '</span>)
|
401
401
|
<span class="ruby-identifier">$VERBOSE</span> = <span class="ruby-keyword">true</span>
|
402
402
|
<span class="ruby-keyword">end</span>
|
403
403
|
|
@@ -405,25 +405,25 @@
|
|
405
405
|
<span class="ruby-identifier">$DEBUG</span> = <span class="ruby-keyword">true</span>
|
406
406
|
<span class="ruby-keyword">end</span>
|
407
407
|
|
408
|
-
<span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-string"
|
408
|
+
<span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-string">'-R lib'</span>, <span class="ruby-string">'--require-noprof lib'</span>, <span class="ruby-string">'require a specific library (not profiled)'</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">lib</span><span class="ruby-operator">|</span>
|
409
409
|
<span class="ruby-identifier">options</span>.<span class="ruby-identifier">pre_libs</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">lib</span>
|
410
410
|
<span class="ruby-keyword">end</span>
|
411
411
|
|
412
|
-
<span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-string"
|
412
|
+
<span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-string">'-E code'</span>, <span class="ruby-string">'--eval-noprof code'</span>, <span class="ruby-string">'execute the ruby statements (not profiled)'</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">code</span><span class="ruby-operator">|</span>
|
413
413
|
<span class="ruby-identifier">options</span>.<span class="ruby-identifier">pre_execs</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">code</span>
|
414
414
|
<span class="ruby-keyword">end</span>
|
415
415
|
|
416
|
-
<span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-string"
|
416
|
+
<span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-string">'-x regexp'</span>, <span class="ruby-string">'--exclude regexp'</span>, <span class="ruby-string">'exclude methods by regexp (see method elimination)'</span>) <span class="ruby-keyword">do</span><span class="ruby-operator">|</span><span class="ruby-identifier">meth</span><span class="ruby-operator">|</span>
|
417
417
|
<span class="ruby-identifier">options</span>.<span class="ruby-identifier">eliminate_methods</span> <span class="ruby-operator">||=</span> []
|
418
418
|
<span class="ruby-identifier">options</span>.<span class="ruby-identifier">eliminate_methods</span> <span class="ruby-operator"><<</span> <span class="ruby-constant">Regexp</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">meth</span>)
|
419
419
|
<span class="ruby-keyword">end</span>
|
420
420
|
|
421
|
-
<span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-string"
|
421
|
+
<span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-string">'-X file'</span>, <span class="ruby-string">'--exclude-file file'</span>, <span class="ruby-string">'exclude methods by regexp listed in file (see method elimination)'</span>) <span class="ruby-keyword">do</span><span class="ruby-operator">|</span><span class="ruby-identifier">file</span><span class="ruby-operator">|</span>
|
422
422
|
<span class="ruby-identifier">options</span>.<span class="ruby-identifier">eliminate_methods_files</span> <span class="ruby-operator">||=</span> []
|
423
423
|
<span class="ruby-identifier">options</span>.<span class="ruby-identifier">eliminate_methods_files</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">file</span>
|
424
424
|
<span class="ruby-keyword">end</span>
|
425
425
|
|
426
|
-
<span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-string"
|
426
|
+
<span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-string">'--exclude-common-cycles'</span>, <span class="ruby-string">'make common iterators like Integer#times appear inlined'</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">meth</span><span class="ruby-operator">|</span>
|
427
427
|
<span class="ruby-identifier">options</span>.<span class="ruby-identifier">eliminate_methods</span> <span class="ruby-operator">||=</span> []
|
428
428
|
<span class="ruby-identifier">options</span>.<span class="ruby-identifier">eliminate_methods</span> <span class="ruby-operator">+=</span> <span class="ruby-node">%w{
|
429
429
|
Integer#times
|
@@ -454,10 +454,10 @@
|
|
454
454
|
Enumerable#collect
|
455
455
|
Enumerable#reduce
|
456
456
|
}</span>
|
457
|
-
<span class="ruby-comment">#TODO: may be the whole Enumerable module should be excluded via
|
457
|
+
<span class="ruby-comment">#TODO: may be the whole Enumerable module should be excluded via 'Enumerable#.*', we need feedback on use cases.</span>
|
458
458
|
<span class="ruby-keyword">end</span>
|
459
459
|
|
460
|
-
<span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-string"
|
460
|
+
<span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-string">'--exclude-common-callbacks'</span>, <span class="ruby-string">'make common callbacks invocations like Integer#times appear inlined so you can see call origins in graph'</span>) <span class="ruby-keyword">do</span><span class="ruby-operator">|</span><span class="ruby-identifier">meth</span><span class="ruby-operator">|</span>
|
461
461
|
<span class="ruby-identifier">options</span>.<span class="ruby-identifier">eliminate_methods</span> <span class="ruby-operator">||=</span> []
|
462
462
|
<span class="ruby-identifier">options</span>.<span class="ruby-identifier">eliminate_methods</span> <span class="ruby-operator">+=</span> <span class="ruby-node">%w{
|
463
463
|
Method#call
|
@@ -229,12 +229,12 @@ to use the :min_percent option, for example:</p>
|
|
229
229
|
<span class="ruby-ivar">@output</span> = <span class="ruby-identifier">output</span>
|
230
230
|
<span class="ruby-identifier">setup_options</span>(<span class="ruby-identifier">options</span>)
|
231
231
|
|
232
|
-
<span class="ruby-identifier">puts</span> <span class="ruby-string"
|
232
|
+
<span class="ruby-identifier">puts</span> <span class="ruby-string">'digraph "Profile" {'</span>
|
233
233
|
<span class="ruby-comment">#puts "label=\"#{mode_name} >=#{min_percent}%\\nTotal: #{total_time}\";"</span>
|
234
234
|
<span class="ruby-identifier">puts</span> <span class="ruby-string">"labelloc=t;"</span>
|
235
235
|
<span class="ruby-identifier">puts</span> <span class="ruby-string">"labeljust=l;"</span>
|
236
236
|
<span class="ruby-identifier">print_threads</span>
|
237
|
-
<span class="ruby-identifier">puts</span> <span class="ruby-string"
|
237
|
+
<span class="ruby-identifier">puts</span> <span class="ruby-string">'}'</span>
|
238
238
|
<span class="ruby-keyword">end</span></pre>
|
239
239
|
</div>
|
240
240
|
|
@@ -162,14 +162,14 @@ printer.print(STDOUT, {})</pre>
|
|
162
162
|
<span class="ruby-identifier">method</span>.<span class="ruby-identifier">recursive?</span> <span class="ruby-operator">?</span> <span class="ruby-string">"*"</span> <span class="ruby-operator">:</span> <span class="ruby-string">" "</span>, <span class="ruby-comment"># cycle</span>
|
163
163
|
<span class="ruby-identifier">method_name</span>(<span class="ruby-identifier">method</span>) <span class="ruby-comment"># name</span>
|
164
164
|
]
|
165
|
-
<span class="ruby-keyword">if</span> <span class="ruby-identifier">method</span>.<span class="ruby-identifier">source_file</span> <span class="ruby-operator">!=</span> <span class="ruby-string"
|
165
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">method</span>.<span class="ruby-identifier">source_file</span> <span class="ruby-operator">!=</span> <span class="ruby-string">'ruby_runtime'</span>
|
166
166
|
<span class="ruby-ivar">@output</span> <span class="ruby-operator"><<</span> <span class="ruby-string">" %s:%s"</span> <span class="ruby-operator">%</span> [<span class="ruby-constant">File</span>.<span class="ruby-identifier">expand_path</span>(<span class="ruby-identifier">method</span>.<span class="ruby-identifier">source_file</span>), <span class="ruby-identifier">method</span>.<span class="ruby-identifier">line</span>]
|
167
167
|
<span class="ruby-keyword">end</span>
|
168
168
|
<span class="ruby-ivar">@output</span> <span class="ruby-operator"><<</span> <span class="ruby-string">"\n\tcalled from: "</span>
|
169
169
|
|
170
|
-
<span class="ruby-comment"># make sure they
|
170
|
+
<span class="ruby-comment"># make sure they're unique</span>
|
171
171
|
<span class="ruby-identifier">method</span>.<span class="ruby-identifier">call_infos</span>.<span class="ruby-identifier">map</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">ci</span><span class="ruby-operator">|</span>
|
172
|
-
<span class="ruby-keyword">if</span> <span class="ruby-identifier">ci</span>.<span class="ruby-identifier">parent</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">ci</span>.<span class="ruby-identifier">parent</span>.<span class="ruby-identifier">target</span>.<span class="ruby-identifier">source_file</span> <span class="ruby-operator">!=</span> <span class="ruby-string"
|
172
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">ci</span>.<span class="ruby-identifier">parent</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">ci</span>.<span class="ruby-identifier">parent</span>.<span class="ruby-identifier">target</span>.<span class="ruby-identifier">source_file</span> <span class="ruby-operator">!=</span> <span class="ruby-string">'ruby_runtime'</span>
|
173
173
|
[<span class="ruby-identifier">method_name</span>(<span class="ruby-identifier">ci</span>.<span class="ruby-identifier">parent</span>.<span class="ruby-identifier">target</span>), <span class="ruby-constant">File</span>.<span class="ruby-identifier">expand_path</span>(<span class="ruby-identifier">ci</span>.<span class="ruby-identifier">parent</span>.<span class="ruby-identifier">target</span>.<span class="ruby-identifier">source_file</span>), <span class="ruby-identifier">ci</span>.<span class="ruby-identifier">parent</span>.<span class="ruby-identifier">target</span>.<span class="ruby-identifier">line</span>]
|
174
174
|
<span class="ruby-keyword">else</span>
|
175
175
|
<span class="ruby-keyword">nil</span>
|