mirror of
https://github.com/ysoftdevs/DependencyCheck.git
synced 2026-03-26 02:51:27 +01:00
version 1.1.1 of gh-pages
This commit is contained in:
@@ -12,7 +12,7 @@
|
||||
<div class="separator"> </div>
|
||||
<table class="report">
|
||||
<thead><tr> <td class="heading">Classes in this File</td> <td class="heading"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">Line Coverage</a></td> <td class="heading"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">Branch Coverage</a></td> <td class="heading"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">Complexity</a></td></tr></thead>
|
||||
<tr><td><a href="org.owasp.dependencycheck.analyzer.DependencyBundlingAnalyzer.html">DependencyBundlingAnalyzer</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">48%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:48px"><span class="text">71/145</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">40%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:40px"><span class="text">60/150</span></div></div></td></tr></table></td><td class="value"><span class="hidden">7.846153846153846;</span>7.846</td></tr>
|
||||
<tr><td><a href="org.owasp.dependencycheck.analyzer.DependencyBundlingAnalyzer.html">DependencyBundlingAnalyzer</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">48%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:48px"><span class="text">71/145</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">39%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:39px"><span class="text">59/150</span></div></div></td></tr></table></td><td class="value"><span class="hidden">7.846153846153846;</span>7.846</td></tr>
|
||||
|
||||
</table>
|
||||
<div class="separator"> </div>
|
||||
@@ -107,7 +107,7 @@
|
||||
<td class="src"><pre class="src"> <span class="comment"> * @author Jeremy Long <jeremy.long@owasp.org></span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 45</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 46</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">class</span> DependencyBundlingAnalyzer <span class="keyword">extends</span> AbstractAnalyzer <span class="keyword">implements</span> Analyzer {</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 46</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">class</span> DependencyBundlingAnalyzer <span class="keyword">extends</span> AbstractAnalyzer <span class="keyword">implements</span> Analyzer {</pre></td></tr>
|
||||
<tr> <td class="numLine"> 47</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> </pre></td></tr>
|
||||
<tr> <td class="numLine"> 48</td> <td class="nbHits"> </td>
|
||||
@@ -118,14 +118,14 @@
|
||||
<td class="src"><pre class="src"> <span class="comment"> * A pattern for obtaining the first part of a filename.</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 51</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 52</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> Pattern STARTING_TEXT_PATTERN = Pattern.compile(<span class="string">"^[a-zA-Z]*"</span>);</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 52</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> Pattern STARTING_TEXT_PATTERN = Pattern.compile(<span class="string">"^[a-zA-Z]*"</span>);</pre></td></tr>
|
||||
<tr> <td class="numLine"> 53</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 54</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="comment"> * a flag indicating if this analyzer has run. This analyzer only runs once.</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 55</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 56</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">boolean</span> analyzed = <span class="keyword">false</span>;</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 56</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">boolean</span> analyzed = <span class="keyword">false</span>;</pre></td></tr>
|
||||
<tr> <td class="numLine"> 57</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="comment">//</editor-fold></span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 58</td> <td class="nbHits"> </td>
|
||||
@@ -136,7 +136,7 @@
|
||||
<td class="src"><pre class="src"> <span class="comment"> * The set of file extensions supported by this analyzer.</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 61</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 62</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> Set<String> EXTENSIONS = <span class="keyword">null</span>;</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 62</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> Set<String> EXTENSIONS = <span class="keyword">null</span>;</pre></td></tr>
|
||||
<tr> <td class="numLine"> 63</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 64</td> <td class="nbHits"> </td>
|
||||
@@ -151,7 +151,7 @@
|
||||
<td class="src"><pre class="src"> <span class="comment"> * The phase that this analyzer is intended to run in.</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 69</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 70</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> AnalysisPhase ANALYSIS_PHASE = AnalysisPhase.PRE_FINDING_ANALYSIS;</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 70</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> AnalysisPhase ANALYSIS_PHASE = AnalysisPhase.PRE_FINDING_ANALYSIS;</pre></td></tr>
|
||||
<tr> <td class="numLine"> 71</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> </pre></td></tr>
|
||||
<tr> <td class="numLine"> 72</td> <td class="nbHits"> </td>
|
||||
@@ -166,7 +166,7 @@
|
||||
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 77</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="keyword">public</span> Set<String> getSupportedExtensions() {</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 78</td> <td class="nbHitsCovered"> 266</td> <td class="src"><pre class="src"> <span class="keyword">return</span> EXTENSIONS;</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 78</td> <td class="nbHitsCovered"> 133</td> <td class="src"><pre class="src"> <span class="keyword">return</span> EXTENSIONS;</pre></td></tr>
|
||||
<tr> <td class="numLine"> 79</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLine"> 80</td> <td class="nbHits"> </td>
|
||||
@@ -183,7 +183,7 @@
|
||||
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 86</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="keyword">public</span> String getName() {</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 87</td> <td class="nbHitsCovered"> 20</td> <td class="src"><pre class="src"> <span class="keyword">return</span> ANALYZER_NAME;</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 87</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> <span class="keyword">return</span> ANALYZER_NAME;</pre></td></tr>
|
||||
<tr> <td class="numLine"> 88</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLine"> 89</td> <td class="nbHits"> </td>
|
||||
@@ -202,7 +202,7 @@
|
||||
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 96</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">boolean</span> supportsExtension(String extension) {</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 97</td> <td class="nbHitsCovered"> 20</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">true</span>;</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 97</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">true</span>;</pre></td></tr>
|
||||
<tr> <td class="numLine"> 98</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLine"> 99</td> <td class="nbHits"> </td>
|
||||
@@ -219,7 +219,7 @@
|
||||
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 105</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="keyword">public</span> AnalysisPhase getAnalysisPhase() {</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 106</td> <td class="nbHitsCovered"> 14</td> <td class="src"><pre class="src"> <span class="keyword">return</span> ANALYSIS_PHASE;</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 106</td> <td class="nbHitsCovered"> 7</td> <td class="src"><pre class="src"> <span class="keyword">return</span> ANALYSIS_PHASE;</pre></td></tr>
|
||||
<tr> <td class="numLine"> 107</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLine"> 108</td> <td class="nbHits"> </td>
|
||||
@@ -246,19 +246,19 @@
|
||||
<td class="src"><pre class="src"> @Override</pre></td></tr>
|
||||
<tr> <td class="numLine"> 119</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">void</span> analyze(Dependency ignore, Engine engine) <span class="keyword">throws</span> AnalysisException {</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 120</td> <td class="nbHitsCovered"><a title="Line 120: Conditional coverage 100% (2/2)."> 18</a></td> <td class="src"><pre class="src"> <a title="Line 120: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (!analyzed) {</a></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 121</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> analyzed = <span class="keyword">true</span>;</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 122</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">final</span> Set<Dependency> dependenciesToRemove = <span class="keyword">new</span> HashSet<Dependency>();</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 123</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">final</span> ListIterator<Dependency> mainIterator = engine.getDependencies().listIterator();</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 120</td> <td class="nbHitsCovered"><a title="Line 120: Conditional coverage 100% (2/2)."> 9</a></td> <td class="src"><pre class="src"> <a title="Line 120: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (!analyzed) {</a></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 121</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> analyzed = <span class="keyword">true</span>;</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 122</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> <span class="keyword">final</span> Set<Dependency> dependenciesToRemove = <span class="keyword">new</span> HashSet<Dependency>();</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 123</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> <span class="keyword">final</span> ListIterator<Dependency> mainIterator = engine.getDependencies().listIterator();</pre></td></tr>
|
||||
<tr> <td class="numLine"> 124</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="comment">//for (Dependency nextDependency : engine.getDependencies()) {</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 125</td> <td class="nbHitsCovered"><a title="Line 125: Conditional coverage 100% (2/2)."> 8</a></td> <td class="src"><pre class="src"> <a title="Line 125: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (mainIterator.hasNext()) {</a></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 126</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> <span class="keyword">final</span> Dependency dependency = mainIterator.next();</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 127</td> <td class="nbHitsCovered"><a title="Line 127: Conditional coverage 100% (2/2)."> 6</a></td> <td class="src"><pre class="src"> <a title="Line 127: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (mainIterator.hasNext()) {</a></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 128</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> <span class="keyword">final</span> ListIterator<Dependency> subIterator = engine.getDependencies().listIterator(mainIterator.nextIndex());</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 129</td> <td class="nbHitsCovered"><a title="Line 129: Conditional coverage 100% (2/2)."> 10</a></td> <td class="src"><pre class="src"> <a title="Line 129: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (subIterator.hasNext()) {</a></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 130</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> <span class="keyword">final</span> Dependency nextDependency = subIterator.next();</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 131</td> <td class="nbHitsUncovered"><a title="Line 131: Conditional coverage 50% (1/2)."> 6</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 131: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (isShadedJar(dependency, nextDependency)) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 125</td> <td class="nbHitsCovered"><a title="Line 125: Conditional coverage 100% (2/2)."> 4</a></td> <td class="src"><pre class="src"> <a title="Line 125: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (mainIterator.hasNext()) {</a></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 126</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src"> <span class="keyword">final</span> Dependency dependency = mainIterator.next();</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 127</td> <td class="nbHitsCovered"><a title="Line 127: Conditional coverage 100% (2/2)."> 3</a></td> <td class="src"><pre class="src"> <a title="Line 127: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (mainIterator.hasNext()) {</a></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 128</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">final</span> ListIterator<Dependency> subIterator = engine.getDependencies().listIterator(mainIterator.nextIndex());</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 129</td> <td class="nbHitsCovered"><a title="Line 129: Conditional coverage 100% (2/2)."> 5</a></td> <td class="src"><pre class="src"> <a title="Line 129: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (subIterator.hasNext()) {</a></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 130</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src"> <span class="keyword">final</span> Dependency nextDependency = subIterator.next();</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 131</td> <td class="nbHitsUncovered"><a title="Line 131: Conditional coverage 50% (1/2)."> 3</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 131: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (isShadedJar(dependency, nextDependency)) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 132</td> <td class="nbHitsUncovered"><a title="Line 132: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 132: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (dependency.getFileName().toLowerCase().endsWith(<span class="string">"pom.xml"</span>)) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 133</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> dependenciesToRemove.add(dependency);</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 134</td> <td class="nbHits"> </td>
|
||||
@@ -266,7 +266,7 @@
|
||||
<tr> <td class="numLineCover"> 135</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> dependenciesToRemove.add(nextDependency);</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 136</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 137</td> <td class="nbHitsUncovered"><a title="Line 137: Conditional coverage 50% (1/2)."> 6</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 137: Conditional coverage 50% (1/2)."> } <span class="keyword">else</span> <span class="keyword">if</span> (hashesMatch(dependency, nextDependency)) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 137</td> <td class="nbHitsUncovered"><a title="Line 137: Conditional coverage 50% (1/2)."> 3</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 137: Conditional coverage 50% (1/2)."> } <span class="keyword">else</span> <span class="keyword">if</span> (hashesMatch(dependency, nextDependency)) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 138</td> <td class="nbHitsUncovered"><a title="Line 138: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 138: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (isCore(dependency, nextDependency)) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 139</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> mergeDependencies(dependency, nextDependency, dependenciesToRemove);</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 140</td> <td class="nbHits"> </td>
|
||||
@@ -274,7 +274,7 @@
|
||||
<tr> <td class="numLineCover"> 141</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> mergeDependencies(nextDependency, dependency, dependenciesToRemove);</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 142</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 143</td> <td class="nbHitsUncovered"><a title="Line 143: Conditional coverage 50% (3/6) [each condition: 100%, 50%, 0%]."> 6</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 143: Conditional coverage 50% (3/6) [each condition: 100%, 50%, 0%]."> } <span class="keyword">else</span> <span class="keyword">if</span> (cpeIdentifiersMatch(dependency, nextDependency)</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 143</td> <td class="nbHitsUncovered"><a title="Line 143: Conditional coverage 50% (3/6) [each condition: 100%, 50%, 0%]."> 3</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 143: Conditional coverage 50% (3/6) [each condition: 100%, 50%, 0%]."> } <span class="keyword">else</span> <span class="keyword">if</span> (cpeIdentifiersMatch(dependency, nextDependency)</a></span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 144</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> && hasSameBasePath(dependency, nextDependency)</pre></td></tr>
|
||||
<tr> <td class="numLine"> 145</td> <td class="nbHits"> </td>
|
||||
@@ -290,20 +290,20 @@
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLine"> 152</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 153</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 153</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLine"> 154</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 155</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 155</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLine"> 156</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="comment">//removing dependencies here as ensuring correctness and avoiding ConcurrentUpdateExceptions</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 157</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="comment">// was difficult because of the inner iterator.</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 158</td> <td class="nbHitsUncovered"><a title="Line 158: Conditional coverage 50% (1/2)."> 2</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 158: Conditional coverage 50% (1/2)."> <span class="keyword">for</span> (Dependency d : dependenciesToRemove) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 158</td> <td class="nbHitsUncovered"><a title="Line 158: Conditional coverage 50% (1/2)."> 1</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 158: Conditional coverage 50% (1/2)."> <span class="keyword">for</span> (Dependency d : dependenciesToRemove) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 159</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> engine.getDependencies().remove(d);</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 160</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 161</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 162</td> <td class="nbHitsCovered"> 18</td> <td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 162</td> <td class="nbHitsCovered"> 9</td> <td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLine"> 163</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> </pre></td></tr>
|
||||
<tr> <td class="numLine"> 164</td> <td class="nbHits"> </td>
|
||||
@@ -470,43 +470,43 @@
|
||||
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 267</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">boolean</span> cpeIdentifiersMatch(Dependency dependency1, Dependency dependency2) {</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 268</td> <td class="nbHitsUncovered"><a title="Line 268: Conditional coverage 50% (4/8) [each condition: 50%, 50%, 50%, 50%]."> 6</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 268: Conditional coverage 50% (4/8) [each condition: 50%, 50%, 50%, 50%]."> <span class="keyword">if</span> (dependency1 == <span class="keyword">null</span> || dependency1.getIdentifiers() == <span class="keyword">null</span></a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 268</td> <td class="nbHitsUncovered"><a title="Line 268: Conditional coverage 50% (4/8) [each condition: 50%, 50%, 50%, 50%]."> 3</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 268: Conditional coverage 50% (4/8) [each condition: 50%, 50%, 50%, 50%]."> <span class="keyword">if</span> (dependency1 == <span class="keyword">null</span> || dependency1.getIdentifiers() == <span class="keyword">null</span></a></span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 269</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> || dependency2 == <span class="keyword">null</span> || dependency2.getIdentifiers() == <span class="keyword">null</span>) {</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 270</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span> <span class="keyword">false</span>;</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 271</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 272</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> <span class="keyword">boolean</span> matches = <span class="keyword">false</span>;</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 273</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> <span class="keyword">int</span> cpeCount1 = 0;</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 274</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> <span class="keyword">int</span> cpeCount2 = 0;</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 275</td> <td class="nbHitsCovered"><a title="Line 275: Conditional coverage 100% (2/2)."> 6</a></td> <td class="src"><pre class="src"> <a title="Line 275: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (Identifier i : dependency1.getIdentifiers()) {</a></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 276</td> <td class="nbHitsUncovered"><a title="Line 276: Conditional coverage 50% (1/2)."> 6</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 276: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (<span class="string">"cpe"</span>.equals(i.getType())) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 277</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> cpeCount1 += 1;</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 272</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src"> <span class="keyword">boolean</span> matches = <span class="keyword">false</span>;</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 273</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src"> <span class="keyword">int</span> cpeCount1 = 0;</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 274</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src"> <span class="keyword">int</span> cpeCount2 = 0;</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 275</td> <td class="nbHitsCovered"><a title="Line 275: Conditional coverage 100% (2/2)."> 3</a></td> <td class="src"><pre class="src"> <a title="Line 275: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (Identifier i : dependency1.getIdentifiers()) {</a></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 276</td> <td class="nbHitsUncovered"><a title="Line 276: Conditional coverage 50% (1/2)."> 3</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 276: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (<span class="string">"cpe"</span>.equals(i.getType())) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 277</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src"> cpeCount1 += 1;</pre></td></tr>
|
||||
<tr> <td class="numLine"> 278</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 279</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 280</td> <td class="nbHitsCovered"><a title="Line 280: Conditional coverage 100% (2/2)."> 6</a></td> <td class="src"><pre class="src"> <a title="Line 280: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (Identifier i : dependency2.getIdentifiers()) {</a></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 281</td> <td class="nbHitsCovered"><a title="Line 281: Conditional coverage 100% (2/2)."> 10</a></td> <td class="src"><pre class="src"> <a title="Line 281: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (<span class="string">"cpe"</span>.equals(i.getType())) {</a></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 282</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> cpeCount2 += 1;</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 279</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 280</td> <td class="nbHitsCovered"><a title="Line 280: Conditional coverage 100% (2/2)."> 3</a></td> <td class="src"><pre class="src"> <a title="Line 280: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (Identifier i : dependency2.getIdentifiers()) {</a></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 281</td> <td class="nbHitsUncovered"><a title="Line 281: Conditional coverage 50% (1/2)."> 3</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 281: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (<span class="string">"cpe"</span>.equals(i.getType())) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 282</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src"> cpeCount2 += 1;</pre></td></tr>
|
||||
<tr> <td class="numLine"> 283</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 284</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 285</td> <td class="nbHitsUncovered"><a title="Line 285: Conditional coverage 50% (2/4) [each condition: 50%, 50%]."> 6</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 285: Conditional coverage 50% (2/4) [each condition: 50%, 50%]."> <span class="keyword">if</span> (cpeCount1 > 0 && cpeCount1 == cpeCount2) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 286</td> <td class="nbHitsCovered"><a title="Line 286: Conditional coverage 100% (2/2)."> 6</a></td> <td class="src"><pre class="src"> <a title="Line 286: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (Identifier i : dependency1.getIdentifiers()) {</a></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 287</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> matches |= dependency2.getIdentifiers().contains(i);</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 288</td> <td class="nbHitsCovered"><a title="Line 288: Conditional coverage 100% (2/2)."> 6</a></td> <td class="src"><pre class="src"> <a title="Line 288: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (!matches) {</a></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 289</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> <span class="keyword">break</span>;</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 284</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 285</td> <td class="nbHitsUncovered"><a title="Line 285: Conditional coverage 50% (2/4) [each condition: 50%, 50%]."> 3</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 285: Conditional coverage 50% (2/4) [each condition: 50%, 50%]."> <span class="keyword">if</span> (cpeCount1 > 0 && cpeCount1 == cpeCount2) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 286</td> <td class="nbHitsCovered"><a title="Line 286: Conditional coverage 100% (2/2)."> 3</a></td> <td class="src"><pre class="src"> <a title="Line 286: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (Identifier i : dependency1.getIdentifiers()) {</a></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 287</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src"> matches |= dependency2.getIdentifiers().contains(i);</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 288</td> <td class="nbHitsCovered"><a title="Line 288: Conditional coverage 100% (2/2)."> 3</a></td> <td class="src"><pre class="src"> <a title="Line 288: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (!matches) {</a></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 289</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">break</span>;</pre></td></tr>
|
||||
<tr> <td class="numLine"> 290</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 291</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 291</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLine"> 292</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 293</td> <td class="nbHitsUncovered"><a title="Line 293: Conditional coverage 50% (1/2)."> 6</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 293: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (LogUtils.isVerboseLoggingEnabled()) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 293</td> <td class="nbHitsUncovered"><a title="Line 293: Conditional coverage 50% (1/2)."> 3</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 293: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (LogUtils.isVerboseLoggingEnabled()) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 294</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">final</span> String msg = String.format(<span class="string">"IdentifiersMatch=%s (%s, %s)"</span>, matches, dependency1.getFileName(), dependency2.getFileName());</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 295</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Logger.getLogger(DependencyBundlingAnalyzer.<span class="keyword">class</span>.getName()).log(Level.FINE, msg);</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 296</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 297</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> <span class="keyword">return</span> matches;</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 297</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src"> <span class="keyword">return</span> matches;</pre></td></tr>
|
||||
<tr> <td class="numLine"> 298</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLine"> 299</td> <td class="nbHits"> </td>
|
||||
@@ -527,40 +527,40 @@
|
||||
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 307</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">boolean</span> hasSameBasePath(Dependency dependency1, Dependency dependency2) {</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 308</td> <td class="nbHitsUncovered"><a title="Line 308: Conditional coverage 50% (2/4) [each condition: 50%, 50%]."> 2</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 308: Conditional coverage 50% (2/4) [each condition: 50%, 50%]."> <span class="keyword">if</span> (dependency1 == <span class="keyword">null</span> || dependency2 == <span class="keyword">null</span>) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 308</td> <td class="nbHitsUncovered"><a title="Line 308: Conditional coverage 50% (2/4) [each condition: 50%, 50%]."> 1</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 308: Conditional coverage 50% (2/4) [each condition: 50%, 50%]."> <span class="keyword">if</span> (dependency1 == <span class="keyword">null</span> || dependency2 == <span class="keyword">null</span>) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 309</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span> <span class="keyword">false</span>;</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 310</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 311</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">final</span> File lFile = <span class="keyword">new</span> File(dependency1.getFilePath());</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 312</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> String left = lFile.getParent();</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 313</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">final</span> File rFile = <span class="keyword">new</span> File(dependency2.getFilePath());</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 314</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> String right = rFile.getParent();</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 315</td> <td class="nbHitsUncovered"><a title="Line 315: Conditional coverage 50% (1/2)."> 2</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 315: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (left == <span class="keyword">null</span>) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 311</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> <span class="keyword">final</span> File lFile = <span class="keyword">new</span> File(dependency1.getFilePath());</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 312</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> String left = lFile.getParent();</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 313</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> <span class="keyword">final</span> File rFile = <span class="keyword">new</span> File(dependency2.getFilePath());</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 314</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> String right = rFile.getParent();</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 315</td> <td class="nbHitsUncovered"><a title="Line 315: Conditional coverage 50% (1/2)."> 1</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 315: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (left == <span class="keyword">null</span>) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 316</td> <td class="nbHitsUncovered"><a title="Line 316: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 316: Conditional coverage 0% (0/2)."> <span class="keyword">return</span> right == <span class="keyword">null</span>;</a></span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 317</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 318</td> <td class="nbHitsUncovered"><a title="Line 318: Conditional coverage 50% (1/2)."> 2</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 318: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (left.equalsIgnoreCase(right)) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 318</td> <td class="nbHitsUncovered"><a title="Line 318: Conditional coverage 50% (1/2)."> 1</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 318: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (left.equalsIgnoreCase(right)) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 319</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span> <span class="keyword">true</span>;</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 320</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 321</td> <td class="nbHitsUncovered"><a title="Line 321: Conditional coverage 25% (1/4) [each condition: 50%, 0%]."> 2</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 321: Conditional coverage 25% (1/4) [each condition: 50%, 0%]."> <span class="keyword">if</span> (left.matches(<span class="string">".*[/\\\\]repository[/\\\\].*"</span>) && right.matches(<span class="string">".*[/\\\\]repository[/\\\\].*"</span>)) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 321</td> <td class="nbHitsUncovered"><a title="Line 321: Conditional coverage 25% (1/4) [each condition: 50%, 0%]."> 1</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 321: Conditional coverage 25% (1/4) [each condition: 50%, 0%]."> <span class="keyword">if</span> (left.matches(<span class="string">".*[/\\\\]repository[/\\\\].*"</span>) && right.matches(<span class="string">".*[/\\\\]repository[/\\\\].*"</span>)) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 322</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> left = getBaseRepoPath(left);</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 323</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> right = getBaseRepoPath(right);</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 324</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 325</td> <td class="nbHitsUncovered"><a title="Line 325: Conditional coverage 50% (1/2)."> 2</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 325: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (left.equalsIgnoreCase(right)) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 325</td> <td class="nbHitsUncovered"><a title="Line 325: Conditional coverage 50% (1/2)."> 1</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 325: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (left.equalsIgnoreCase(right)) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 326</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span> <span class="keyword">true</span>;</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 327</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLine"> 328</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="comment">//new code</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 329</td> <td class="nbHitsUncovered"><a title="Line 329: Conditional coverage 50% (1/2)."> 2</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 329: Conditional coverage 50% (1/2)."> <span class="keyword">for</span> (Dependency child : dependency2.getRelatedDependencies()) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 329</td> <td class="nbHitsUncovered"><a title="Line 329: Conditional coverage 50% (1/2)."> 1</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 329: Conditional coverage 50% (1/2)."> <span class="keyword">for</span> (Dependency child : dependency2.getRelatedDependencies()) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 330</td> <td class="nbHitsUncovered"><a title="Line 330: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 330: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (hasSameBasePath(dependency1, child)) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 331</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span> <span class="keyword">true</span>;</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 332</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 333</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 334</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">false</span>;</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 334</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">false</span>;</pre></td></tr>
|
||||
<tr> <td class="numLine"> 335</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLine"> 336</td> <td class="nbHits"> </td>
|
||||
@@ -583,24 +583,24 @@
|
||||
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 345</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="keyword">boolean</span> isCore(Dependency left, Dependency right) {</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 346</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> <span class="keyword">final</span> String leftName = left.getFileName().toLowerCase();</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 347</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> <span class="keyword">final</span> String rightName = right.getFileName().toLowerCase();</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 346</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">final</span> String leftName = left.getFileName().toLowerCase();</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 347</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">final</span> String rightName = right.getFileName().toLowerCase();</pre></td></tr>
|
||||
<tr> <td class="numLine"> 348</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> </pre></td></tr>
|
||||
<tr> <td class="numLine"> 349</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="keyword">final</span> <span class="keyword">boolean</span> returnVal;</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 350</td> <td class="nbHitsUncovered"><a title="Line 350: Conditional coverage 41% (5/12) [each condition: 100%, 50%, 50%, 0%, 50%, 0%]."> 4</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 350: Conditional coverage 41% (5/12) [each condition: 100%, 50%, 50%, 0%, 50%, 0%]."> <span class="keyword">if</span> (!rightName.matches(<span class="string">".*\\.(tar|tgz|gz|zip|ear|war).+"</span>) && leftName.matches(<span class="string">".*\\.(tar|tgz|gz|zip|ear|war).+"</span>)</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 350</td> <td class="nbHitsUncovered"><a title="Line 350: Conditional coverage 41% (5/12) [each condition: 100%, 50%, 50%, 0%, 50%, 0%]."> 2</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 350: Conditional coverage 41% (5/12) [each condition: 100%, 50%, 50%, 0%, 50%, 0%]."> <span class="keyword">if</span> (!rightName.matches(<span class="string">".*\\.(tar|tgz|gz|zip|ear|war).+"</span>) && leftName.matches(<span class="string">".*\\.(tar|tgz|gz|zip|ear|war).+"</span>)</a></span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 351</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> || rightName.contains(<span class="string">"core"</span>) && !leftName.contains(<span class="string">"core"</span>)</pre></td></tr>
|
||||
<tr> <td class="numLine"> 352</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> || rightName.contains(<span class="string">"kernel"</span>) && !leftName.contains(<span class="string">"kernel"</span>)) {</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 353</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> returnVal = <span class="keyword">false</span>;</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 354</td> <td class="nbHitsUncovered"><a title="Line 354: Conditional coverage 58% (7/12) [each condition: 100%, 50%, 50%, 50%, 50%, 50%]."> 4</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 354: Conditional coverage 58% (7/12) [each condition: 100%, 50%, 50%, 50%, 50%, 50%]."> } <span class="keyword">else</span> <span class="keyword">if</span> (rightName.matches(<span class="string">".*\\.(tar|tgz|gz|zip|ear|war).+"</span>) && !leftName.matches(<span class="string">".*\\.(tar|tgz|gz|zip|ear|war).+"</span>)</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 354</td> <td class="nbHitsUncovered"><a title="Line 354: Conditional coverage 58% (7/12) [each condition: 100%, 50%, 50%, 50%, 50%, 50%]."> 2</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 354: Conditional coverage 58% (7/12) [each condition: 100%, 50%, 50%, 50%, 50%, 50%]."> } <span class="keyword">else</span> <span class="keyword">if</span> (rightName.matches(<span class="string">".*\\.(tar|tgz|gz|zip|ear|war).+"</span>) && !leftName.matches(<span class="string">".*\\.(tar|tgz|gz|zip|ear|war).+"</span>)</a></span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 355</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> || !rightName.contains(<span class="string">"core"</span>) && leftName.contains(<span class="string">"core"</span>)</pre></td></tr>
|
||||
<tr> <td class="numLine"> 356</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> || !rightName.contains(<span class="string">"kernel"</span>) && leftName.contains(<span class="string">"kernel"</span>)) {</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 357</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> returnVal = <span class="keyword">true</span>;</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 357</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> returnVal = <span class="keyword">true</span>;</pre></td></tr>
|
||||
<tr> <td class="numLine"> 358</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr>
|
||||
<tr> <td class="numLine"> 359</td> <td class="nbHits"> </td>
|
||||
@@ -624,12 +624,12 @@
|
||||
<tr> <td class="numLineCover"> 368</td> <td class="nbHitsUncovered"><a title="Line 368: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 368: Conditional coverage 0% (0/2)."> returnVal = leftName.length() <= rightName.length();</a></span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 369</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 370</td> <td class="nbHitsUncovered"><a title="Line 370: Conditional coverage 50% (1/2)."> 4</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 370: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (LogUtils.isVerboseLoggingEnabled()) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 370</td> <td class="nbHitsUncovered"><a title="Line 370: Conditional coverage 50% (1/2)."> 2</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 370: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (LogUtils.isVerboseLoggingEnabled()) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 371</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">final</span> String msg = String.format(<span class="string">"IsCore=%s (%s, %s)"</span>, returnVal, left.getFileName(), right.getFileName());</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 372</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Logger.getLogger(DependencyBundlingAnalyzer.<span class="keyword">class</span>.getName()).log(Level.FINE, msg);</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 373</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 374</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> <span class="keyword">return</span> returnVal;</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 374</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">return</span> returnVal;</pre></td></tr>
|
||||
<tr> <td class="numLine"> 375</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLine"> 376</td> <td class="nbHits"> </td>
|
||||
@@ -650,11 +650,11 @@
|
||||
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 384</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">boolean</span> hashesMatch(Dependency dependency1, Dependency dependency2) {</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 385</td> <td class="nbHitsUncovered"><a title="Line 385: Conditional coverage 50% (4/8) [each condition: 50%, 50%, 50%, 50%]."> 6</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 385: Conditional coverage 50% (4/8) [each condition: 50%, 50%, 50%, 50%]."> <span class="keyword">if</span> (dependency1 == <span class="keyword">null</span> || dependency2 == <span class="keyword">null</span> || dependency1.getSha1sum() == <span class="keyword">null</span> || dependency2.getSha1sum() == <span class="keyword">null</span>) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 385</td> <td class="nbHitsUncovered"><a title="Line 385: Conditional coverage 50% (4/8) [each condition: 50%, 50%, 50%, 50%]."> 3</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 385: Conditional coverage 50% (4/8) [each condition: 50%, 50%, 50%, 50%]."> <span class="keyword">if</span> (dependency1 == <span class="keyword">null</span> || dependency2 == <span class="keyword">null</span> || dependency1.getSha1sum() == <span class="keyword">null</span> || dependency2.getSha1sum() == <span class="keyword">null</span>) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 386</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span> <span class="keyword">false</span>;</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 387</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 388</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> <span class="keyword">return</span> dependency1.getSha1sum().equals(dependency2.getSha1sum());</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 388</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src"> <span class="keyword">return</span> dependency1.getSha1sum().equals(dependency2.getSha1sum());</pre></td></tr>
|
||||
<tr> <td class="numLine"> 389</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLine"> 390</td> <td class="nbHits"> </td>
|
||||
@@ -679,21 +679,21 @@
|
||||
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 400</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">boolean</span> isShadedJar(Dependency dependency, Dependency nextDependency) {</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 401</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> <span class="keyword">final</span> String mainName = dependency.getFileName().toLowerCase();</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 402</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> <span class="keyword">final</span> String nextName = nextDependency.getFileName().toLowerCase();</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 403</td> <td class="nbHitsUncovered"><a title="Line 403: Conditional coverage 25% (1/4) [each condition: 50%, 0%]."> 6</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 403: Conditional coverage 25% (1/4) [each condition: 50%, 0%]."> <span class="keyword">if</span> (mainName.endsWith(<span class="string">".jar"</span>) && nextName.endsWith(<span class="string">"pom.xml"</span>)) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 401</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src"> <span class="keyword">final</span> String mainName = dependency.getFileName().toLowerCase();</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 402</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src"> <span class="keyword">final</span> String nextName = nextDependency.getFileName().toLowerCase();</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 403</td> <td class="nbHitsUncovered"><a title="Line 403: Conditional coverage 25% (1/4) [each condition: 50%, 0%]."> 3</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 403: Conditional coverage 25% (1/4) [each condition: 50%, 0%]."> <span class="keyword">if</span> (mainName.endsWith(<span class="string">".jar"</span>) && nextName.endsWith(<span class="string">"pom.xml"</span>)) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 404</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span> dependency.getIdentifiers().containsAll(nextDependency.getIdentifiers());</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 405</td> <td class="nbHitsUncovered"><a title="Line 405: Conditional coverage 75% (3/4) [each condition: 100%, 50%]."> 6</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 405: Conditional coverage 75% (3/4) [each condition: 100%, 50%]."> } <span class="keyword">else</span> <span class="keyword">if</span> (nextName.endsWith(<span class="string">".jar"</span>) && mainName.endsWith(<span class="string">"pom.xml"</span>)) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 405</td> <td class="nbHitsUncovered"><a title="Line 405: Conditional coverage 75% (3/4) [each condition: 100%, 50%]."> 3</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 405: Conditional coverage 75% (3/4) [each condition: 100%, 50%]."> } <span class="keyword">else</span> <span class="keyword">if</span> (nextName.endsWith(<span class="string">".jar"</span>) && mainName.endsWith(<span class="string">"pom.xml"</span>)) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 406</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span> nextDependency.getIdentifiers().containsAll(dependency.getIdentifiers());</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 407</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 408</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">false</span>;</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 408</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">false</span>;</pre></td></tr>
|
||||
<tr> <td class="numLine"> 409</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLine"> 410</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
</table>
|
||||
|
||||
<div class="footer">Report generated by <a href="http://cobertura.sourceforge.net/" target="_top">Cobertura</a> 2.0.3 on 1/26/14 11:11 AM.</div>
|
||||
<div class="footer">Report generated by <a href="http://cobertura.sourceforge.net/" target="_top">Cobertura</a> 2.0.3 on 1/30/14 6:03 AM.</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user