Convert source code(Java,C++,C code) to srcML(XML format)
./src2srcml <input_filename.java> -o <output_filename.xml>

Extract method calls in order as in an srcml file.
Retains the full path of the method call

Preethas-MacBook-Pro:srcML preethac$ ./srcml2src –xpath=“src:call/src:name” SplashActivity.xml“
<?xml version=“1.0” encoding=“UTF-8” standalone=“yes”?>
<unit xmlns=“http://www.sdml.info/srcML/src”>
<unit language=“Java” filename=“SplashActivity.java” item=“1”><name><name>super</name>.<name>onCreate</name></name></unit>
<unit language=“Java” filename=“SplashActivity.java” item=“2”><name>setContentView</name></unit>
<unit language=“Java” filename=“SplashActivity.java” item=“3”><name><name>super</name>.<name>onResume</name></name></unit>
<unit language=“Java” filename=“SplashActivity.java” item=“4”><name>Handler</name></unit>
<unit language=“Java” filename=“SplashActivity.java” item=“5”><name>postDelayed</name></unit>
<unit language=“Java” filename=“SplashActivity.java” item=“6”><name><name>SplashActivity</name>.<name>this</name>.<name>finish</name>\</name></unit>
<unit language=“Java” filename=“SplashActivity.java” item=“7”><name>Intent</name></unit>
<unit language=“Java” filename=“SplashActivity.java” item=“8”><name><name>SplashActivity</name>.<name>this</name>.<name>startActivity</name></name></unit>
<unit language=“Java” filename=“SplashActivity.java” item=“9”><name>finish</name></unit>
<unit language=“Java” filename=“SplashActivity.java” item=“10”><name>Intent</name></unit>
<unit language=“Java” filename=“SplashActivity.java” item=“11”><name><name>SplashActivity</name>.<name>this</name>.<name>startActivity</name></name></unit>
</unit>
Extract method calls in order from a specific class

Preethas-MacBook-Pro:srcML preethac$ ./srcml2src –xpath=”
src:class[src:name='<class_name>']src:call“ <filename.xml>
Storing the output in a file

<xpath-expression> > <outputfile_name>

Counting number of blocks/functions:

wifi-roaming-128-4-153-85:srcML preethac$ ./srcml2src –xpath=“count(
src:block)” SplashActivity.xml

7
wifi-roaming-128-4-153-85:srcML preethac$ ./srcml2src –xpath=“count(src:function)” SplashActivity.xml
3
Counting the number of calls with arguments

'Preethas-MacBook-Pro:srcML preethac$ ./srcml2src –xpath=”
src:blocksrc:call“ SplashActivity.xml'


<?xml version=“1.0” encoding=“UTF-8” standalone=“yes”?>
<unit xmlns=“http://www.sdml.info/srcML/src”>
<unit language=“Java” filename=“SplashActivity.java” item=“1”><call><name><name>super</name>.<name>onCreate</name></name><argument_list>(<argument><expr><name>savedInstanceState</name></expr></argument>)</argument_list></call></unit>
<unit language=“Java” filename=“SplashActivity.java” item=“2”><call><name>setContentView</name><argument_list>(<argument><expr><name><name>R</name>.<name>layout</name>.<name>splash</name></name></expr></argument>)</argument_list></call></unit>
<unit language=“Java” filename=“SplashActivity.java” item=“3”><call><name><name>super</name>.<name>onResume</name></name><argument_list>()</argument_list></call></unit>
<unit language=“Java” filename=“SplashActivity.java” item=“4”><call><name>Handler</name><argument_list>()</argument_list></call></unit>
<unit language=“Java” filename=“SplashActivity.java” item=“5”><call><name>postDelayed</name><argument_list>(<argument><expr>new <class><super><name>Runnable</name></super><argument_list>()</argument_list> <block>{ <function><type><specifier>public</specifier> <name>void</name></type> <name>run</name><parameter_list>()</parameter_list> <block>{ <comment type=“line”>
Finish the splash activity so it can't be returned to.</comment>

                  <expr_stmt><expr><call><name><name>SplashActivity</name>.<name>this</name>.<name>finish</name></name><argument_list>()</argument_list></call></expr>;</expr_stmt>
                  <comment type="line">// Create an Intent that will start the main activity.</comment>
                  <decl_stmt><decl><type><name>Intent</name></type> <name>mainIntent</name> <init>= <expr>new <call><name>Intent</name><argument_list>(<argument><expr><name><name>SplashActivity</name>.<name>this</name></name></expr></argument>, <argument><expr><name><name>CuringDepressionActivity</name>.<name>class</name></name></expr></argument>)</argument_list></call></expr></init></decl>;</decl_stmt>
                  <expr_stmt><expr><call><name><name>SplashActivity</name>.<name>this</name>.<name>startActivity</name></name><argument_list>(<argument><expr><name>mainIntent</name></expr></argument>)</argument_list></call></expr>;</expr_stmt>
              }</block></function>
          }</block></class></expr></argument>, <argument><expr><name>SPLASH_DISPLAY_LENGTH</name></expr></argument>)</argument_list></call></unit>

<unit language=“Java” filename=“SplashActivity.java” item=“6”><call><name><name>SplashActivity</name>.<name>this</name>.<name>finish</name></name><argument_list>()</argument_list></call></unit>

<unit language=“Java” filename=“SplashActivity.java” item=“7”><call><name>Intent</name><argument_list>(<argument><expr><name><name>SplashActivity</name>.<name>this</name></name></expr></argument>, <argument><expr><name><name>CuringDepressionActivity</name>.<name>class</name></name></expr></argument>)</argument_list></call></unit>

<unit language=“Java” filename=“SplashActivity.java” item=“8”><call><name><name>SplashActivity</name>.<name>this</name>.<name>startActivity</name></name><argument_list>(<argument><expr><name>mainIntent</name></expr></argument>)</argument_list></call></unit>

<unit language=“Java” filename=“SplashActivity.java” item=“9”><call><name>finish</name><argument_list>()</argument_list></call></unit>

<unit language=“Java” filename=“SplashActivity.java” item=“10”><call><name>Intent</name><argument_list>(<argument><expr><name><name>SplashActivity</name>.<name>this</name></name></expr></argument>, <argument><expr><name><name>CuringDepressionActivity</name>.<name>class</name></name></expr></argument>)</argument_list></call></unit>

<unit language=“Java” filename=“SplashActivity.java” item=“11”><call><name><name>SplashActivity</name>.<name>this</name>.<name>startActivity</name></name><argument_list>(<argument><expr><name>mainIntent</name></expr></argument>)</argument_list></call></unit>

</unit> Preethas-MacBook-Pro:srcML preethac$

Extracting method call sequences between control statements

Important: Does not work for commented out snippets of code.


Preethas-MacBook-Pro:srcML preethac$ ./srcml2src –xpath=”src:forsrc:call/src:name“ CuringDepressionActivity.xml

<?xml version=“1.0” encoding=“UTF-8” standalone=“yes”?> <unit xmlns=“http://www.sdml.info/srcML/src”>

<unit language=“Java” filename=“CuringDepressionActivity.java” item=“1”><name><name>Log</name>.<name>v</name></name></unit>

<unit language=“Java” filename=“CuringDepressionActivity.java” item=“2”><name><name>question</name>.<name>toString</name></name></unit>

<unit language=“Java” filename=“CuringDepressionActivity.java” item=“3”><name>View</name></unit>

<unit language=“Java” filename=“CuringDepressionActivity.java” item=“4”><name><name>question</name>.<name>type</name>.<name>equals</name></name></unit>

<unit language=“Java” filename=“CuringDepressionActivity.java” item=“5”><name><name>question</name>.<name>type</name>.<name>equals</name></name></unit>

<unit language=“Java” filename=“CuringDepressionActivity.java” item=“6”><name><name>question</name>.<name>type</name>.<name>equals</name></name></unit>

<unit language=“Java” filename=“CuringDepressionActivity.java” item=“7”><name><name>questionViews</name>.<name>add</name></name></unit>

<unit language=“Java” filename=“CuringDepressionActivity.java” item=“8”><name><name>text</name>.<name>append</name></name></unit>

<unit language=“Java” filename=“CuringDepressionActivity.java” item=“9”><name><name>question</name>.<name>toString</name></name></unit>

</unit>
Preethas-MacBook-Pro:srcML preethac$ ./srcml2src –xpath=”src:ifsrc:call/src:name“ CuringDepressionActivity.xml
<?xml version=“1.0” encoding=“UTF-8” standalone=“yes”?> <unit xmlns=“http://www.sdml.info/srcML/src”>

<unit language=“Java” filename=“CuringDepressionActivity.java” item=“1”><name>moveTaskToBack</name></unit>

<unit language=“Java” filename=“CuringDepressionActivity.java” item=“2”><name>setContentView</name></unit>

<unit language=“Java” filename=“CuringDepressionActivity.java” item=“3”><name><name>question</name>.<name>type</name>.<name>equals</name></name></unit>

<unit language=“Java” filename=“CuringDepressionActivity.java” item=“4”><name><name>question</name>.<name>type</name>.<name>equals</name></name></unit>

<unit language=“Java” filename=“CuringDepressionActivity.java” item=“5”><name><name>question</name>.<name>type</name>.<name>equals</name></name></unit>

</unit> Preethas-MacBook-Pro:srcML preethac$
With Position Enabled

Preethas-MacBook-Pro:srcML preethac$ ./srcml2src –xpath=”src:ifsrc:call/src:name“ CuringDepressionActivity.xml <?xml version=“1.0” encoding=“UTF-8” standalone=“yes”?> <unit xmlns=“http://www.sdml.info/srcML/src” xmlns:pos=“http://www.sdml.info/srcML/position”>

<unit language=“Java” filename=“CuringDepressionActivity.java” pos:tabs=“8” pos:line=“1” pos:column=“1” item=“1”><name pos:line=“97” pos:column=“17”>moveTaskToBack</name></unit>

<unit language=“Java” filename=“CuringDepressionActivity.java” pos:tabs=“8” pos:line=“1” pos:column=“1” item=“2”><name pos:line=“102” pos:column=“13”>setContentView</name></unit>

<unit language=“Java” filename=“CuringDepressionActivity.java” pos:tabs=“8” pos:line=“1” pos:column=“1” item=“3”><name><name pos:line=“113” pos:column=“17”>question</name>.<name pos:line=“113” pos:column=“26”>type</name>.<name pos:line=“113” pos:column=“31”>equals</name></name></unit>

<unit language=“Java” filename=“CuringDepressionActivity.java” pos:tabs=“8” pos:line=“1” pos:column=“1” item=“4”><name><name pos:line=“116” pos:column=“22”>question</name>.<name pos:line=“116” pos:column=“31”>type</name>.<name pos:line=“116” pos:column=“36”>equals</name></name></unit>

<unit language=“Java” filename=“CuringDepressionActivity.java” pos:tabs=“8” pos:line=“1” pos:column=“1” item=“5”><name><name pos:line=“119” pos:column=“22”>question</name>.<name pos:line=“119” pos:column=“31”>type</name>.<name pos:line=“119” pos:column=“36”>equals</name></name></unit>


Preethas-MacBook-Pro:srcML preethac$ ./srcml2src –xpath=”src:ifsrc:blocksrc:call/src:name“ CuringDepressionActivity.xml
<?xml version=“1.0” encoding=“UTF-8” standalone=“yes”?> <unit xmlns=“http://www.sdml.info/srcML/src”> <unit language=“Java” filename=“CuringDepressionActivity.java” item=“1”><name>moveTaskToBack</name></unit> <unit language=“Java” filename=“CuringDepressionActivity.java” item=“2”><name>setContentView</name></unit> </unit>
With position enabled:

Preethas-MacBook-Pro:srcML preethac$ ./srcml2src –xpath=”
src:ifsrc:blocksrc:call/src:name“ CuringDepressionActivity.xml <?xml version=“1.0” encoding=“UTF-8” standalone=“yes”?> <unit xmlns=“http://www.sdml.info/srcML/src” xmlns:pos=“http://www.sdml.info/srcML/position”>

<unit language=“Java” filename=“CuringDepressionActivity.java” pos:tabs=“8” pos:line=“1” pos:column=“1” item=“1”><name pos:line=“97” pos:column=“17”>moveTaskToBack</name></unit>

<unit language=“Java” filename=“CuringDepressionActivity.java” pos:tabs=“8” pos:line=“1” pos:column=“1” item=“2”><name pos:line=“102” pos:column=“13”>setContentView</name></unit>



To store line numbers of source code

Preethas-MacBook-Pro:srcML preethac$ ./src2srcml –position CuringDepressionActivity.java -o CuringDepressionActivity.xml

Question?

How to determine the control statements?if/for etc?