<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><span style="color:rgb(0,0,0);font-family:宋体,arial,Verdana,sans-serif;font-size:14px">Hi, soot's developers and "experienced users", I'm new to soot and recently I've been using it to do some static analysis work on Java program(I'm also not familiar with static analysis, sorry about that).</span><br><div><span style="color:rgb(0,0,0);font-family:宋体,arial,Verdana,sans-serif;font-size:14px"><br></span></div><div><span style="color:rgb(0,0,0);font-family:宋体,arial,Verdana,sans-serif;font-size:14px">I wrote a Transformer to analyse some Java software. But there comes a problem. The attachment is the stack information.</span></div><div><span style="color:rgb(0,0,0);font-family:宋体,arial,Verdana,sans-serif;font-size:14px"><br></span></div><div><span style="color:rgb(0,0,0);font-family:宋体,arial,Verdana,sans-serif;font-size:14px">The detail is, this "</span><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px">org.apache.hadoop.hbase.regionserver.MetricsRegionServerSourceFactory</span></font><span style="color:rgb(0,0,0);font-family:宋体,arial,Verdana,sans-serif;font-size:14px">" is indeed an interface defined in "hbase/</span><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px">hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceFactory.java</span></font><span style="color:rgb(0,0,0);font-family:宋体,arial,Verdana,sans-serif;font-size:14px">" as follows:</span></div><div><span style="color:rgb(0,0,0);font-family:宋体,arial,Verdana,sans-serif;font-size:14px"><br></span></div><div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px"><br></span></font></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px">package org.apache.hadoop.hbase.regionserver;</span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px"><br></span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px">import org.apache.hadoop.hbase.io.MetricsIOSource;</span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px">import org.apache.hadoop.hbase.io.MetricsIOWrapper;</span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px">import org.apache.yetus.audience.InterfaceAudience;</span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px"><br></span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px">/**</span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px"> * Interface of a factory to create Metrics Sources used inside of regionservers.</span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px"> */</span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px">@InterfaceAudience.Private</span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px">public interface MetricsRegionServerSourceFactory {</span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px"><br></span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px">  /**</span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px">   * Given a wrapper create a MetricsRegionServerSource.</span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px">   *</span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px">   * @param regionServerWrapper The wrapped region server</span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px">   * @return a Metrics Source.</span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px">   */</span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px">  MetricsRegionServerSource createServer(MetricsRegionServerWrapper regionServerWrapper);</span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px"><br></span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px">  /**</span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px">   * Create a MetricsRegionSource from a MetricsRegionWrapper.</span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px">   *</span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px">   * @param wrapper The wrapped region</span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px">   * @return A metrics region source</span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px">   */</span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px">  MetricsRegionSource createRegion(MetricsRegionWrapper wrapper);</span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px"><br></span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px">  /**</span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px">   * Create a MetricsTableSource from a MetricsTableWrapper.</span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px">   *</span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px">   * @param table The table name</span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px">   * @param wrapper The wrapped table aggregate</span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px">   * @return A metrics table source</span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px">   */</span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px">  MetricsTableSource createTable(String table, MetricsTableWrapperAggregate wrapper);</span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px"><br></span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px">  /**</span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px">   * Get a MetricsTableAggregateSource</span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px">   *</span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px">   * @return A metrics table aggregate source</span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px">   */</span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px">  MetricsTableAggregateSource getTableAggregate();</span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px"><br></span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px">  /**</span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px">   * Get a MetricsHeapMemoryManagerSource</span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px">   * @return A metrics heap memory manager source</span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px">   */</span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px">  MetricsHeapMemoryManagerSource getHeapMemoryManager();</span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px"><br></span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px">  /**</span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px">   * Create a MetricsIOSource from a MetricsIOWrapper.</span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px">   *</span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px">   * @return A metrics IO source</span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px">   */</span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px">  MetricsIOSource createIO(MetricsIOWrapper wrapper);</span></font></div><div><font color="#000000" face="宋体, arial, Verdana, sans-serif"><span style="font-size:14px">}</span></font></div></blockquote><div style="color:rgb(0,0,0);font-family:宋体,arial,Verdana,sans-serif;font-size:14px"><br></div></div><div style="color:rgb(0,0,0);font-family:宋体,arial,Verdana,sans-serif;font-size:14px">So, what should I do with soot? </div><div style="color:rgb(0,0,0);font-family:宋体,arial,Verdana,sans-serif;font-size:14px"><br></div><div style="color:rgb(0,0,0);font-family:宋体,arial,Verdana,sans-serif;font-size:14px">Sincerely hope for suggestions from you! Thank you very much!</div><div style="color:rgb(0,0,0);font-family:宋体,arial,Verdana,sans-serif;font-size:14px"><br></div></div></div></div></div>