mirror of
https://github.com/ysoftdevs/DependencyCheck.git
synced 2026-03-29 05:12:14 +02:00
documentation version 1.4.2
This commit is contained in:
@@ -113,7 +113,7 @@
|
||||
<td class="src"><pre class="src"> <span class="comment"> * @author Jeremy Long</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 48</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 49</td> <td class="nbHitsCovered"> 20</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"> 49</td> <td class="nbHitsCovered"> 10</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"> 50</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> </pre></td></tr>
|
||||
<tr> <td class="numLine"> 51</td> <td class="nbHits"> </td>
|
||||
@@ -122,7 +122,7 @@
|
||||
<td class="src"><pre class="src"> <span class="comment"> * The Logger.</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="numLineCover"> 54</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> Logger LOGGER = LoggerFactory.getLogger(DependencyBundlingAnalyzer.<span class="keyword">class</span>);</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 54</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> Logger LOGGER = LoggerFactory.getLogger(DependencyBundlingAnalyzer.<span class="keyword">class</span>);</pre></td></tr>
|
||||
<tr> <td class="numLine"> 55</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> </pre></td></tr>
|
||||
<tr> <td class="numLine"> 56</td> <td class="nbHits"> </td>
|
||||
@@ -133,14 +133,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"> 59</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 60</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-Z0-9]*"</span>);</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 60</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-Z0-9]*"</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="numLine"> 62</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"> 63</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 64</td> <td class="nbHitsCovered"> 20</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"> 64</td> <td class="nbHitsCovered"> 10</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"> 65</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="comment">//</editor-fold></span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 66</td> <td class="nbHits"> </td>
|
||||
@@ -159,7 +159,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"> 73</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 74</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"> 74</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"> 75</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> </pre></td></tr>
|
||||
<tr> <td class="numLine"> 76</td> <td class="nbHits"> </td>
|
||||
@@ -176,7 +176,7 @@
|
||||
<td class="src"><pre class="src"> @Override</pre></td></tr>
|
||||
<tr> <td class="numLine"> 82</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"> 83</td> <td class="nbHitsCovered"> 34</td> <td class="src"><pre class="src"> <span class="keyword">return</span> ANALYZER_NAME;</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 83</td> <td class="nbHitsCovered"> 17</td> <td class="src"><pre class="src"> <span class="keyword">return</span> ANALYZER_NAME;</pre></td></tr>
|
||||
<tr> <td class="numLine"> 84</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLine"> 85</td> <td class="nbHits"> </td>
|
||||
@@ -195,7 +195,7 @@
|
||||
<td class="src"><pre class="src"> @Override</pre></td></tr>
|
||||
<tr> <td class="numLine"> 92</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"> 93</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> <span class="keyword">return</span> ANALYSIS_PHASE;</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 93</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> <span class="keyword">return</span> ANALYSIS_PHASE;</pre></td></tr>
|
||||
<tr> <td class="numLine"> 94</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLine"> 95</td> <td class="nbHits"> </td>
|
||||
@@ -226,19 +226,19 @@
|
||||
<td class="src"><pre class="src"> @Override</pre></td></tr>
|
||||
<tr> <td class="numLine"> 108</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"> 109</td> <td class="nbHitsCovered"><a title="Line 109: Conditional coverage 100% (2/2)."> 8</a></td> <td class="src"><pre class="src"> <a title="Line 109: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (!analyzed) {</a></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 110</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> analyzed = <span class="keyword">true</span>;</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 111</td> <td class="nbHitsCovered"> 4</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"> 112</td> <td class="nbHitsCovered"> 4</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"> 109</td> <td class="nbHitsCovered"><a title="Line 109: Conditional coverage 100% (2/2)."> 4</a></td> <td class="src"><pre class="src"> <a title="Line 109: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (!analyzed) {</a></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 110</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"> 111</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"> 112</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="numLine"> 113</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"> 114</td> <td class="nbHitsCovered"><a title="Line 114: Conditional coverage 100% (2/2)."> 12</a></td> <td class="src"><pre class="src"> <a title="Line 114: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (mainIterator.hasNext()) {</a></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 115</td> <td class="nbHitsCovered"> 8</td> <td class="src"><pre class="src"> <span class="keyword">final</span> Dependency dependency = mainIterator.next();</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 116</td> <td class="nbHitsUncovered"><a title="Line 116: Conditional coverage 75% (3/4) [each condition: 100%, 50%]."> 8</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 116: Conditional coverage 75% (3/4) [each condition: 100%, 50%]."> <span class="keyword">if</span> (mainIterator.hasNext() && !dependenciesToRemove.contains(dependency)) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 117</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"> 118</td> <td class="nbHitsCovered"><a title="Line 118: Conditional coverage 100% (2/2)."> 8</a></td> <td class="src"><pre class="src"> <a title="Line 118: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (subIterator.hasNext()) {</a></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 119</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> <span class="keyword">final</span> Dependency nextDependency = subIterator.next();</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 120</td> <td class="nbHitsUncovered"><a title="Line 120: Conditional coverage 25% (1/4) [each condition: 50%, 0%]."> 4</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 120: Conditional coverage 25% (1/4) [each condition: 50%, 0%]."> <span class="keyword">if</span> (hashesMatch(dependency, nextDependency) && !containedInWar(dependency.getFilePath())</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 114</td> <td class="nbHitsCovered"><a title="Line 114: Conditional coverage 100% (2/2)."> 6</a></td> <td class="src"><pre class="src"> <a title="Line 114: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (mainIterator.hasNext()) {</a></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 115</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> <span class="keyword">final</span> Dependency dependency = mainIterator.next();</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 116</td> <td class="nbHitsUncovered"><a title="Line 116: Conditional coverage 75% (3/4) [each condition: 100%, 50%]."> 4</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 116: Conditional coverage 75% (3/4) [each condition: 100%, 50%]."> <span class="keyword">if</span> (mainIterator.hasNext() && !dependenciesToRemove.contains(dependency)) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 117</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"> 118</td> <td class="nbHitsCovered"><a title="Line 118: Conditional coverage 100% (2/2)."> 4</a></td> <td class="src"><pre class="src"> <a title="Line 118: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (subIterator.hasNext()) {</a></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 119</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">final</span> Dependency nextDependency = subIterator.next();</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 120</td> <td class="nbHitsUncovered"><a title="Line 120: Conditional coverage 25% (1/4) [each condition: 50%, 0%]."> 2</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 120: Conditional coverage 25% (1/4) [each condition: 50%, 0%]."> <span class="keyword">if</span> (hashesMatch(dependency, nextDependency) && !containedInWar(dependency.getFilePath())</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 121</td> <td class="nbHitsUncovered"><a title="Line 121: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 121: Conditional coverage 0% (0/2)."> && !containedInWar(nextDependency.getFilePath())) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 122</td> <td class="nbHitsUncovered"><a title="Line 122: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 122: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (firstPathIsShortest(dependency.getFilePath(), nextDependency.getFilePath())) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 123</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> mergeDependencies(dependency, nextDependency, dependenciesToRemove);</span></pre></td></tr>
|
||||
@@ -248,7 +248,7 @@
|
||||
<tr> <td class="numLineCover"> 126</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">break</span>; <span class="comment">//since we merged into the next dependency - skip forward to the next in mainIterator</span></span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 127</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 128</td> <td class="nbHitsUncovered"><a title="Line 128: Conditional coverage 50% (1/2)."> 4</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 128: Conditional coverage 50% (1/2)."> } <span class="keyword">else</span> <span class="keyword">if</span> (isShadedJar(dependency, nextDependency)) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 128</td> <td class="nbHitsUncovered"><a title="Line 128: Conditional coverage 50% (1/2)."> 2</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 128: Conditional coverage 50% (1/2)."> } <span class="keyword">else</span> <span class="keyword">if</span> (isShadedJar(dependency, nextDependency)) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 129</td> <td class="nbHitsUncovered"><a title="Line 129: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 129: 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"> 130</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="numLineCover"> 131</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> nextDependency.getRelatedDependencies().remove(dependency);</span></pre></td></tr>
|
||||
@@ -259,7 +259,7 @@
|
||||
<tr> <td class="numLineCover"> 135</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> dependency.getRelatedDependencies().remove(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)."> 4</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> (cpeIdentifiersMatch(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)."> 2</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> (cpeIdentifiersMatch(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)."> && hasSameBasePath(dependency, nextDependency)</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 139</td> <td class="nbHitsUncovered"><a title="Line 139: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 139: Conditional coverage 0% (0/2)."> && fileNameMatch(dependency, nextDependency)) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 140</td> <td class="nbHitsUncovered"><a title="Line 140: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 140: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (isCore(dependency, nextDependency)) {</a></span></pre></td></tr>
|
||||
@@ -270,7 +270,7 @@
|
||||
<tr> <td class="numLineCover"> 144</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">break</span>; <span class="comment">//since we merged into the next dependency - skip forward to the next in mainIterator</span></span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 145</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 146</td> <td class="nbHitsUncovered"><a title="Line 146: Conditional coverage 50% (1/2)."> 4</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 146: Conditional coverage 50% (1/2)."> } <span class="keyword">else</span> <span class="keyword">if</span> (isSameRubyGem(dependency, nextDependency)) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 146</td> <td class="nbHitsUncovered"><a title="Line 146: Conditional coverage 50% (1/2)."> 2</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 146: Conditional coverage 50% (1/2)."> } <span class="keyword">else</span> <span class="keyword">if</span> (isSameRubyGem(dependency, nextDependency)) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 147</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">final</span> Dependency main = getMainGemspecDependency(dependency, nextDependency);</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 148</td> <td class="nbHitsUncovered"><a title="Line 148: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 148: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (main == dependency) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 149</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> mergeDependencies(dependency, nextDependency, dependenciesToRemove);</span></pre></td></tr>
|
||||
@@ -282,18 +282,18 @@
|
||||
<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"> 4</td> <td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 155</td> <td class="nbHitsCovered"> 2</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"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 157</td> <td class="nbHitsCovered"> 8</td> <td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 157</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLine"> 158</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"> 159</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"> 160</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> engine.getDependencies().removeAll(dependenciesToRemove);</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 160</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> engine.getDependencies().removeAll(dependenciesToRemove);</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"> 8</td> <td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 162</td> <td class="nbHitsCovered"> 4</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>
|
||||
@@ -447,27 +447,27 @@
|
||||
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 256</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"> 257</td> <td class="nbHitsUncovered"><a title="Line 257: Conditional coverage 50% (3/6) [each condition: 50%, 50%, 50%]."> 4</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 257: Conditional coverage 50% (3/6) [each condition: 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"> 258</td> <td class="nbHitsUncovered"><a title="Line 258: Conditional coverage 50% (1/2)."> 4</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 258: Conditional coverage 50% (1/2)."> || dependency2 == <span class="keyword">null</span> || dependency2.getIdentifiers() == <span class="keyword">null</span>) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 257</td> <td class="nbHitsUncovered"><a title="Line 257: Conditional coverage 50% (3/6) [each condition: 50%, 50%, 50%]."> 2</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 257: Conditional coverage 50% (3/6) [each condition: 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"> 258</td> <td class="nbHitsUncovered"><a title="Line 258: Conditional coverage 50% (1/2)."> 2</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 258: Conditional coverage 50% (1/2)."> || dependency2 == <span class="keyword">null</span> || dependency2.getIdentifiers() == <span class="keyword">null</span>) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 259</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"> 260</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 261</td> <td class="nbHitsCovered"> 4</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"> 262</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> <span class="keyword">int</span> cpeCount1 = 0;</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 263</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> <span class="keyword">int</span> cpeCount2 = 0;</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 264</td> <td class="nbHitsUncovered"><a title="Line 264: Conditional coverage 50% (1/2)."> 4</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 264: Conditional coverage 50% (1/2)."> <span class="keyword">for</span> (Identifier i : dependency1.getIdentifiers()) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 261</td> <td class="nbHitsCovered"> 2</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"> 262</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">int</span> cpeCount1 = 0;</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 263</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">int</span> cpeCount2 = 0;</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 264</td> <td class="nbHitsUncovered"><a title="Line 264: Conditional coverage 50% (1/2)."> 2</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 264: Conditional coverage 50% (1/2)."> <span class="keyword">for</span> (Identifier i : dependency1.getIdentifiers()) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 265</td> <td class="nbHitsUncovered"><a title="Line 265: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 265: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (<span class="string">"cpe"</span>.equals(i.getType())) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 266</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> cpeCount1 += 1;</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 267</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 268</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 269</td> <td class="nbHitsCovered"><a title="Line 269: Conditional coverage 100% (2/2)."> 4</a></td> <td class="src"><pre class="src"> <a title="Line 269: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (Identifier i : dependency2.getIdentifiers()) {</a></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 270</td> <td class="nbHitsUncovered"><a title="Line 270: Conditional coverage 50% (1/2)."> 6</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 270: 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"> 271</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> cpeCount2 += 1;</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 269</td> <td class="nbHitsCovered"><a title="Line 269: Conditional coverage 100% (2/2)."> 2</a></td> <td class="src"><pre class="src"> <a title="Line 269: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (Identifier i : dependency2.getIdentifiers()) {</a></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 270</td> <td class="nbHitsUncovered"><a title="Line 270: Conditional coverage 50% (1/2)."> 3</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 270: 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"> 271</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src"> cpeCount2 += 1;</pre></td></tr>
|
||||
<tr> <td class="numLine"> 272</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 273</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 274</td> <td class="nbHitsUncovered"><a title="Line 274: Conditional coverage 25% (1/4) [each condition: 50%, 0%]."> 4</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 274: Conditional coverage 25% (1/4) [each condition: 50%, 0%]."> <span class="keyword">if</span> (cpeCount1 > 0 && cpeCount1 == cpeCount2) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 273</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 274</td> <td class="nbHitsUncovered"><a title="Line 274: Conditional coverage 25% (1/4) [each condition: 50%, 0%]."> 2</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 274: Conditional coverage 25% (1/4) [each condition: 50%, 0%]."> <span class="keyword">if</span> (cpeCount1 > 0 && cpeCount1 == cpeCount2) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 275</td> <td class="nbHitsUncovered"><a title="Line 275: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 275: Conditional coverage 0% (0/2)."> <span class="keyword">for</span> (Identifier i : dependency1.getIdentifiers()) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 276</td> <td class="nbHitsUncovered"><a title="Line 276: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 276: Conditional coverage 0% (0/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="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> matches |= dependency2.getIdentifiers().contains(i);</span></pre></td></tr>
|
||||
@@ -480,8 +480,8 @@
|
||||
<tr> <td class="numLineCover"> 282</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></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"> 4</td> <td class="src"><pre class="src"> LOGGER.debug(<span class="string">"IdentifiersMatch={} ({}, {})"</span>, matches, dependency1.getFileName(), dependency2.getFileName());</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 285</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> <span class="keyword">return</span> matches;</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 284</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> LOGGER.debug(<span class="string">"IdentifiersMatch={} ({}, {})"</span>, matches, dependency1.getFileName(), dependency2.getFileName());</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 285</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">return</span> matches;</pre></td></tr>
|
||||
<tr> <td class="numLine"> 286</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLine"> 287</td> <td class="nbHits"> </td>
|
||||
@@ -562,12 +562,12 @@
|
||||
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 335</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">boolean</span> isSameRubyGem(Dependency dependency1, Dependency dependency2) {</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 336</td> <td class="nbHitsUncovered"><a title="Line 336: Conditional coverage 50% (2/4) [each condition: 50%, 50%]."> 4</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 336: 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"> 337</td> <td class="nbHitsUncovered"><a title="Line 337: Conditional coverage 50% (1/2)."> 4</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 337: Conditional coverage 50% (1/2)."> || !dependency1.getFileName().endsWith(<span class="string">".gemspec"</span>)</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 336</td> <td class="nbHitsUncovered"><a title="Line 336: Conditional coverage 50% (2/4) [each condition: 50%, 50%]."> 2</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 336: 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"> 337</td> <td class="nbHitsUncovered"><a title="Line 337: Conditional coverage 50% (1/2)."> 2</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 337: Conditional coverage 50% (1/2)."> || !dependency1.getFileName().endsWith(<span class="string">".gemspec"</span>)</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 338</td> <td class="nbHitsUncovered"><a title="Line 338: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 338: Conditional coverage 0% (0/2)."> || !dependency2.getFileName().endsWith(<span class="string">".gemspec"</span>)</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 339</td> <td class="nbHitsUncovered"><a title="Line 339: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 339: Conditional coverage 0% (0/2)."> || dependency1.getPackagePath() == <span class="keyword">null</span></a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 340</td> <td class="nbHitsUncovered"><a title="Line 340: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 340: Conditional coverage 0% (0/2)."> || dependency2.getPackagePath() == <span class="keyword">null</span>) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 341</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">false</span>;</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 341</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="numLine"> 342</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 343</td> <td class="nbHitsUncovered"><a title="Line 343: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 343: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (dependency1.getPackagePath().equalsIgnoreCase(dependency2.getPackagePath())) {</a></span></pre></td></tr>
|
||||
@@ -652,20 +652,20 @@
|
||||
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 388</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"> 389</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"> 390</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"> 389</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"> 390</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"> 391</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> </pre></td></tr>
|
||||
<tr> <td class="numLine"> 392</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"> 393</td> <td class="nbHitsUncovered"><a title="Line 393: Conditional coverage 75% (3/4) [each condition: 100%, 50%]."> 4</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 393: Conditional coverage 75% (3/4) [each condition: 100%, 50%]."> <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"> 394</td> <td class="nbHitsUncovered"><a title="Line 394: Conditional coverage 25% (1/4) [each condition: 50%, 0%]."> 4</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 394: Conditional coverage 25% (1/4) [each condition: 50%, 0%]."> || rightName.contains(<span class="string">"core"</span>) && !leftName.contains(<span class="string">"core"</span>)</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 395</td> <td class="nbHitsUncovered"><a title="Line 395: Conditional coverage 25% (1/4) [each condition: 50%, 0%]."> 4</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 395: Conditional coverage 25% (1/4) [each condition: 50%, 0%]."> || rightName.contains(<span class="string">"kernel"</span>) && !leftName.contains(<span class="string">"kernel"</span>)) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 393</td> <td class="nbHitsUncovered"><a title="Line 393: Conditional coverage 75% (3/4) [each condition: 100%, 50%]."> 2</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 393: Conditional coverage 75% (3/4) [each condition: 100%, 50%]."> <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"> 394</td> <td class="nbHitsUncovered"><a title="Line 394: Conditional coverage 25% (1/4) [each condition: 50%, 0%]."> 2</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 394: Conditional coverage 25% (1/4) [each condition: 50%, 0%]."> || rightName.contains(<span class="string">"core"</span>) && !leftName.contains(<span class="string">"core"</span>)</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 395</td> <td class="nbHitsUncovered"><a title="Line 395: Conditional coverage 25% (1/4) [each condition: 50%, 0%]."> 2</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 395: Conditional coverage 25% (1/4) [each condition: 50%, 0%]."> || rightName.contains(<span class="string">"kernel"</span>) && !leftName.contains(<span class="string">"kernel"</span>)) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 396</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"> 397</td> <td class="nbHitsUncovered"><a title="Line 397: Conditional coverage 75% (3/4) [each condition: 100%, 50%]."> 4</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 397: Conditional coverage 75% (3/4) [each condition: 100%, 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"> 398</td> <td class="nbHitsUncovered"><a title="Line 398: Conditional coverage 50% (2/4) [each condition: 50%, 50%]."> 2</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 398: Conditional coverage 50% (2/4) [each condition: 50%, 50%]."> || !rightName.contains(<span class="string">"core"</span>) && leftName.contains(<span class="string">"core"</span>)</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 399</td> <td class="nbHitsUncovered"><a title="Line 399: Conditional coverage 50% (2/4) [each condition: 50%, 50%]."> 2</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 399: Conditional coverage 50% (2/4) [each condition: 50%, 50%]."> || !rightName.contains(<span class="string">"kernel"</span>) && leftName.contains(<span class="string">"kernel"</span>)) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 400</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"> 397</td> <td class="nbHitsUncovered"><a title="Line 397: Conditional coverage 75% (3/4) [each condition: 100%, 50%]."> 2</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 397: Conditional coverage 75% (3/4) [each condition: 100%, 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"> 398</td> <td class="nbHitsUncovered"><a title="Line 398: Conditional coverage 50% (2/4) [each condition: 50%, 50%]."> 1</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 398: Conditional coverage 50% (2/4) [each condition: 50%, 50%]."> || !rightName.contains(<span class="string">"core"</span>) && leftName.contains(<span class="string">"core"</span>)</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 399</td> <td class="nbHitsUncovered"><a title="Line 399: Conditional coverage 50% (2/4) [each condition: 50%, 50%]."> 1</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 399: Conditional coverage 50% (2/4) [each condition: 50%, 50%]."> || !rightName.contains(<span class="string">"kernel"</span>) && leftName.contains(<span class="string">"kernel"</span>)) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 400</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"> 401</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="comment">// } else if (leftName.matches(".*struts2\\-core.*") && rightName.matches(".*xwork\\-core.*")) {</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 402</td> <td class="nbHits"> </td>
|
||||
@@ -697,8 +697,8 @@
|
||||
<tr> <td class="numLineCover"> 415</td> <td class="nbHitsUncovered"><a title="Line 415: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 415: Conditional coverage 0% (0/2)."> returnVal = leftName.length() <= rightName.length();</a></span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 416</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 417</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> LOGGER.debug(<span class="string">"IsCore={} ({}, {})"</span>, returnVal, left.getFileName(), right.getFileName());</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 418</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"> 417</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> LOGGER.debug(<span class="string">"IsCore={} ({}, {})"</span>, returnVal, left.getFileName(), right.getFileName());</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 418</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"> 419</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLine"> 420</td> <td class="nbHits"> </td>
|
||||
@@ -723,11 +723,11 @@
|
||||
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 430</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"> 431</td> <td class="nbHitsUncovered"><a title="Line 431: Conditional coverage 50% (4/8) [each condition: 50%, 50%, 50%, 50%]."> 4</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 431: 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"> 431</td> <td class="nbHitsUncovered"><a title="Line 431: Conditional coverage 50% (4/8) [each condition: 50%, 50%, 50%, 50%]."> 2</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 431: 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"> 432</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"> 433</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 434</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> <span class="keyword">return</span> dependency1.getSha1sum().equals(dependency2.getSha1sum());</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 434</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">return</span> dependency1.getSha1sum().equals(dependency2.getSha1sum());</pre></td></tr>
|
||||
<tr> <td class="numLine"> 435</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLine"> 436</td> <td class="nbHits"> </td>
|
||||
@@ -752,15 +752,15 @@
|
||||
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 446</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"> 447</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> <span class="keyword">final</span> String mainName = dependency.getFileName().toLowerCase();</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 448</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> <span class="keyword">final</span> String nextName = nextDependency.getFileName().toLowerCase();</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 449</td> <td class="nbHitsUncovered"><a title="Line 449: Conditional coverage 75% (3/4) [each condition: 100%, 50%]."> 4</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 449: Conditional coverage 75% (3/4) [each condition: 100%, 50%]."> <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"> 447</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">final</span> String mainName = dependency.getFileName().toLowerCase();</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 448</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">final</span> String nextName = nextDependency.getFileName().toLowerCase();</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 449</td> <td class="nbHitsUncovered"><a title="Line 449: Conditional coverage 75% (3/4) [each condition: 100%, 50%]."> 2</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 449: Conditional coverage 75% (3/4) [each condition: 100%, 50%]."> <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"> 450</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"> 451</td> <td class="nbHitsUncovered"><a title="Line 451: Conditional coverage 75% (3/4) [each condition: 100%, 50%]."> 4</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 451: 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"> 451</td> <td class="nbHitsUncovered"><a title="Line 451: Conditional coverage 75% (3/4) [each condition: 100%, 50%]."> 2</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 451: 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"> 452</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"> 453</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 454</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">false</span>;</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 454</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="numLine"> 455</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLine"> 456</td> <td class="nbHits"> </td>
|
||||
@@ -785,17 +785,17 @@
|
||||
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 466</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="keyword">protected</span> <span class="keyword">boolean</span> firstPathIsShortest(String left, String right) {</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 467</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> <span class="keyword">final</span> String leftPath = left.replace(<span class="string">'\\'</span>, <span class="string">'/'</span>);</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 468</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> <span class="keyword">final</span> String rightPath = right.replace(<span class="string">'\\'</span>, <span class="string">'/'</span>);</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 467</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> <span class="keyword">final</span> String leftPath = left.replace(<span class="string">'\\'</span>, <span class="string">'/'</span>);</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 468</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> <span class="keyword">final</span> String rightPath = right.replace(<span class="string">'\\'</span>, <span class="string">'/'</span>);</pre></td></tr>
|
||||
<tr> <td class="numLine"> 469</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> </pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 470</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> <span class="keyword">final</span> <span class="keyword">int</span> leftCount = countChar(leftPath, <span class="string">'/'</span>);</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 471</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> <span class="keyword">final</span> <span class="keyword">int</span> rightCount = countChar(rightPath, <span class="string">'/'</span>);</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 472</td> <td class="nbHitsCovered"><a title="Line 472: Conditional coverage 100% (2/2)."> 10</a></td> <td class="src"><pre class="src"> <a title="Line 472: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (leftCount == rightCount) {</a></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 473</td> <td class="nbHitsCovered"><a title="Line 473: Conditional coverage 100% (2/2)."> 6</a></td> <td class="src"><pre class="src"> <a title="Line 473: Conditional coverage 100% (2/2)."> <span class="keyword">return</span> leftPath.compareTo(rightPath) <= 0;</a></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 470</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> <span class="keyword">final</span> <span class="keyword">int</span> leftCount = countChar(leftPath, <span class="string">'/'</span>);</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 471</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> <span class="keyword">final</span> <span class="keyword">int</span> rightCount = countChar(rightPath, <span class="string">'/'</span>);</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 472</td> <td class="nbHitsCovered"><a title="Line 472: Conditional coverage 100% (2/2)."> 5</a></td> <td class="src"><pre class="src"> <a title="Line 472: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (leftCount == rightCount) {</a></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 473</td> <td class="nbHitsCovered"><a title="Line 473: Conditional coverage 100% (2/2)."> 3</a></td> <td class="src"><pre class="src"> <a title="Line 473: Conditional coverage 100% (2/2)."> <span class="keyword">return</span> leftPath.compareTo(rightPath) <= 0;</a></pre></td></tr>
|
||||
<tr> <td class="numLine"> 474</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 475</td> <td class="nbHitsCovered"><a title="Line 475: Conditional coverage 100% (2/2)."> 4</a></td> <td class="src"><pre class="src"> <a title="Line 475: Conditional coverage 100% (2/2)."> <span class="keyword">return</span> leftCount < rightCount;</a></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 475</td> <td class="nbHitsCovered"><a title="Line 475: Conditional coverage 100% (2/2)."> 2</a></td> <td class="src"><pre class="src"> <a title="Line 475: Conditional coverage 100% (2/2)."> <span class="keyword">return</span> leftCount < rightCount;</a></pre></td></tr>
|
||||
<tr> <td class="numLine"> 476</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLine"> 477</td> <td class="nbHits"> </td>
|
||||
@@ -818,16 +818,16 @@
|
||||
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 486</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">int</span> countChar(String string, <span class="keyword">char</span> c) {</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 487</td> <td class="nbHitsCovered"> 20</td> <td class="src"><pre class="src"> <span class="keyword">int</span> count = 0;</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 488</td> <td class="nbHitsCovered"> 20</td> <td class="src"><pre class="src"> <span class="keyword">final</span> <span class="keyword">int</span> max = string.length();</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 489</td> <td class="nbHitsCovered"><a title="Line 489: Conditional coverage 100% (2/2)."> 232</a></td> <td class="src"><pre class="src"> <a title="Line 489: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (<span class="keyword">int</span> i = 0; i < max; i++) {</a></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 490</td> <td class="nbHitsCovered"><a title="Line 490: Conditional coverage 100% (2/2)."> 212</a></td> <td class="src"><pre class="src"> <a title="Line 490: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (c == string.charAt(i)) {</a></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 491</td> <td class="nbHitsCovered"> 56</td> <td class="src"><pre class="src"> count++;</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 487</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> <span class="keyword">int</span> count = 0;</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 488</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> <span class="keyword">final</span> <span class="keyword">int</span> max = string.length();</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 489</td> <td class="nbHitsCovered"><a title="Line 489: Conditional coverage 100% (2/2)."> 116</a></td> <td class="src"><pre class="src"> <a title="Line 489: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (<span class="keyword">int</span> i = 0; i < max; i++) {</a></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 490</td> <td class="nbHitsCovered"><a title="Line 490: Conditional coverage 100% (2/2)."> 106</a></td> <td class="src"><pre class="src"> <a title="Line 490: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (c == string.charAt(i)) {</a></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 491</td> <td class="nbHitsCovered"> 28</td> <td class="src"><pre class="src"> count++;</pre></td></tr>
|
||||
<tr> <td class="numLine"> 492</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLine"> 493</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 494</td> <td class="nbHitsCovered"> 20</td> <td class="src"><pre class="src"> <span class="keyword">return</span> count;</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 494</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> <span class="keyword">return</span> count;</pre></td></tr>
|
||||
<tr> <td class="numLine"> 495</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLine"> 496</td> <td class="nbHits"> </td>
|
||||
@@ -853,6 +853,6 @@
|
||||
<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.1.1 on 6/16/16 6:46 AM.</div>
|
||||
<div class="footer">Report generated by <a href="http://cobertura.sourceforge.net/" target="_top">Cobertura</a> 2.1.1 on 7/31/16 7:42 AM.</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user