]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-5209 Filter lines by coverage
authorStas Vilchik <vilchiks@gmail.com>
Fri, 16 May 2014 09:25:39 +0000 (11:25 +0200)
committerStas Vilchik <vilchiks@gmail.com>
Fri, 16 May 2014 09:25:45 +0000 (11:25 +0200)
sonar-server/src/main/coffee/component-viewer/header.coffee
sonar-server/src/main/coffee/component-viewer/main.coffee
sonar-server/src/main/hbs/component-viewer/header/_coverage-header.hbs

index a6df231d1fc8975f6db53be95bad7115c858c72c..4286116e72dcde20b7053625bef9791587a787ad 100644 (file)
@@ -27,12 +27,20 @@ define [
       'click .js-toggle-duplications': 'toggleDuplications'
       'click .js-toggle-scm': 'toggleSCM'
 
-      'click .js-filter-line-to-cover': 'filterByLinesToCover'
+      'click .js-filter-lines-to-cover': 'filterByLinesToCover'
+      'click .js-filter-covered-lines': 'filterByCoveredLines'
       'click .js-filter-uncovered-lines': 'filterByUncoveredLines'
+      'click .js-filter-branches-to-cover': 'filterByBranchesToCover'
+      'click .js-filter-uncovered-branches': 'filterByUncoveredBranches'
+
+      'click .js-filter-lines-to-cover-it': 'filterByLinesToCoverIT'
+      'click .js-filter-covered-lines-it': 'filterByCoveredLinesIT'
+      'click .js-filter-uncovered-lines-it': 'filterByUncoveredLinesIT'
+      'click .js-filter-branches-to-cover-it': 'filterByBranchesToCoverIT'
+      'click .js-filter-uncovered-branches-it': 'filterByUncoveredBranchesIT'
 
 
     initialize: (options) ->
-#      @listenTo options.main.settings, 'change', @changeSettings
       options.main.settings.on 'change', => @changeSettings()
 
 
@@ -67,36 +75,30 @@ define [
       if active then hide.call @options.main else show.call @options.main
 
 
-    toggleIssues: (e) ->
-      @toggleSetting e, @options.main.showIssues, @options.main.hideIssues
-
-
-    toggleCoverage: (e) ->
-      @toggleSetting e, @options.main.showCoverage, @options.main.hideCoverage
-
-
-    toggleDuplications: (e) ->
-      @toggleSetting e, @options.main.showDuplications, @options.main.hideDuplications
-
+    toggleIssues: (e) -> @toggleSetting e, @options.main.showIssues, @options.main.hideIssues
+    toggleCoverage: (e) -> @toggleSetting e, @options.main.showCoverage, @options.main.hideCoverage
+    toggleDuplications: (e) -> @toggleSetting e, @options.main.showDuplications, @options.main.hideDuplications
+    toggleSCM: (e) -> @toggleSetting e, @options.main.showSCM, @options.main.hideSCM
+    toggleWorkspace: (e) -> @toggleSetting e, @options.main.showWorkspace, @options.main.hideWorkspace
 
-    toggleSCM: (e) ->
-      @toggleSetting e, @options.main.showSCM, @options.main.hideSCM
 
-
-    toggleWorkspace: (e) ->
-      @toggleSetting e, @options.main.showWorkspace, @options.main.hideWorkspace
-
-
-    filterByLinesToCover: (e) ->
+    filterByCoverage: (e, method) ->
       @$('.component-viewer-header-expanded-bar-section-list .active').removeClass 'active'
       $(e.currentTarget).addClass 'active'
-      @options.main.filterLinesByLinesToCover()
+      _.result @options.main, method
 
 
-    filterByUncoveredLines: (e) ->
-      @$('.component-viewer-header-expanded-bar-section-list .active').removeClass 'active'
-      $(e.currentTarget).addClass 'active'
-      @options.main.filterLinesByUncoveredLines()
+    filterByLinesToCover: (e) -> @filterByCoverage e, 'filterByLinesToCover'
+    filterByCoveredLines: (e) -> @filterByCoverage e, 'filterByCoveredLines'
+    filterByUncoveredLines: (e) -> @filterByCoverage e, 'filterByUncoveredLines'
+    filterByBranchesToCover: (e) -> @filterByCoverage e, 'filterByBranchesToCover'
+    filterByUncoveredBranches: (e) -> @filterByCoverage e, 'filterByUncoveredBranches'
+
+    filterByLinesToCoverIT: (e) -> @filterByCoverage e, 'filterByLinesToCoverIT'
+    filterByCoveredLinesIT: (e) -> @filterByCoverage e, 'filterByCoveredLinesIT'
+    filterByUncoveredLinesIT: (e) -> @filterByCoverage e, 'filterByUncoveredLinesIT'
+    filterByBranchesToCoverIT: (e) -> @filterByCoverage e, 'filterByBranchesToCoverIT'
+    filterByUncoveredBranchesIT: (e) -> @filterByCoverage e, 'filterByUncoveredBranchesIT'
 
 
     serializeData: ->
index f5ec52ee89ef8f016f501c875951cfdae37808f2..865964fdb8920d8b09e897e38ca3a51951d07948 100644 (file)
@@ -91,8 +91,8 @@ define [
         @source.set scm: data.scm
 
 
-    requestCoverage: (key) ->
-      $.get API_COVERAGE, key: key, (data) =>
+    requestCoverage: (key, type = 'UT') ->
+      $.get API_COVERAGE, key: key, type: type, (data) =>
         @source.set coverage: data.coverage
 
 
@@ -185,40 +185,41 @@ define [
       @sourceView.render()
 
 
-    filterLinesByLinesToCover: ->
-      unless @source.has 'coverage'
-        @requestCoverage(@key).done => @_filterLinesByLinesToCover()
-      else
-        @_filterLinesByLinesToCover()
+    filterByCoverage: (predicate) ->
+      @requestCoverage(@key).done => @_filterByCoverage(predicate)
+
+
+    filterByCoverageIT: (predicate) ->
+      @requestCoverage(@key, 'IT').done => @_filterByCoverage(predicate)
 
 
-    _filterLinesByLinesToCover: ->
+    _filterByCoverage: (predicate) ->
       coverage = @source.get 'coverage'
       @settings.set 'coverage', true
       @sourceView.resetShowBlocks()
       coverage.forEach (c) =>
-        if c[1]? && c[1]
+        if predicate c
           line = c[0]
           @sourceView.addShowBlock line - LINES_AROUND_COVERED_LINE, line + LINES_AROUND_COVERED_LINE
       @sourceView.render()
 
 
-    filterLinesByUncoveredLines: ->
-      unless @source.has 'coverage'
-        @requestCoverage(@key).done => @_filterLinesByUncoveredLines()
-      else
-        @_filterLinesByUncoveredLines()
+    # Unit Tests
+    filterByLinesToCover: -> @filterByCoverage (c) -> c[1]?
+    filterByCoveredLines: -> @filterByCoverage (c) -> c[1]? && c[1]
+    filterLinesByUncoveredLines: -> @filterByCoverage (c) -> c[1]? && !c[1]
+    filterByBranchesToCover: -> @filterByCoverage (c) -> c[3]?
+    filterByUncoveredBranches: -> @filterByCoverage (c) -> c[3]? && c[4]? && (c[3] > c[4])
+
+    # Integration Tests
+    filterByLinesToCoverIT: -> @filterByCoverageIT (c) -> c[1]?
+    filterByCoveredLinesIT: -> @filterByCoverageIT (c) -> c[1]? && c[1]
+    filterLinesByUncoveredLinesIT: -> @filterByCoverageIT (c) -> c[1]? && !c[1]
+    filterByBranchesToCoverIT: -> @filterByCoverageIT (c) -> c[3]?
+    filterByUncoveredBranchesIT: -> @filterByCoverageIT (c) -> c[3]? && c[4]? && (c[3] > c[4])
+
 
 
-    _filterLinesByUncoveredLines: ->
-      coverage = @source.get 'coverage'
-      @settings.set 'coverage', true
-      @sourceView.resetShowBlocks()
-      coverage.forEach (c) =>
-        if c[1]? && !c[1]
-          line = c[0]
-          @sourceView.addShowBlock line - LINES_AROUND_COVERED_LINE, line + LINES_AROUND_COVERED_LINE
-      @sourceView.render()
 
 
     addTransition: (key, transition, optionsForCurrent, options) ->
index e160d217d56bb49c85e416264839d89de5f1926b..8a0eea94b1a61ee976238c8b0b4739856dbb7a66 100644 (file)
@@ -1,11 +1,15 @@
 <div class="component-viewer-header-expanded-bar-section">
   <div class="component-viewer-header-expanded-bar-section-title">Unit Tests</div>
   <ul class="component-viewer-header-expanded-bar-section-list">
+    <li><span class="item">
+      <span class="label">Coverage</span>
+      <span class="number">93.6%</span>
+    </span></li>
     <li><span class="item">
       <span class="label">Line coverage</span>
       <span class="number">93.6%</span>
     </span></li>
-    <li><a class="item js-filter-line-to-cover">
+    <li><a class="item js-filter-lines-to-cover">
       <span class="label">Lines to cover</span>
       <span class="number">171</span>
       <i class="icon-chevron-right"></i>
       <span class="number">16</span>
       <i class="icon-chevron-right"></i>
     </a></li>
+    <li><a class="item js-filter-covered-lines">
+      <span class="label">Covered lines</span>
+      <span class="number">55</span>
+      <i class="icon-chevron-right"></i>
+    </a></li>
+  </ul>
+</div>
+
+<div class="component-viewer-header-expanded-bar-section">
+  <div class="component-viewer-header-expanded-bar-section-title">&nbsp;</div>
+  <ul class="component-viewer-header-expanded-bar-section-list">
+    <li><span class="item">&nbsp;</span></li>
     <li><span class="item">
       <span class="label">Branch coverage</span>
-      <span class="number">100%</span>
+      <span class="number">75.0%</span>
     </span></li>
-    <li><a class="item">
+    <li><a class="item js-filter-branches-to-cover">
       <span class="label">Branches to cover</span>
       <span class="number">16</span>
       <i class="icon-chevron-right"></i>
     </a></li>
+    <li><a class="item js-filter-uncovered-branches">
+      <span class="label">Uncovered branches</span>
+      <span class="number">4</span>
+      <i class="icon-chevron-right"></i>
+    </a></li>
   </ul>
 </div>
 
+
 <div class="component-viewer-header-expanded-bar-section">
-  <div class="component-viewer-header-expanded-bar-section-title">Integration Tests</div>
+  <div class="component-viewer-header-expanded-bar-section-title">Unit Tests</div>
   <ul class="component-viewer-header-expanded-bar-section-list">
     <li><span class="item">
-      <span class="label">Line Coverage</span>
-      <span class="number">47.2%</span>
+      <span class="label">Coverage</span>
+      <span class="number">93.6%</span>
     </span></li>
-    <li><a class="item">
+    <li><span class="item">
+      <span class="label">Line coverage</span>
+      <span class="number">93.6%</span>
+    </span></li>
+    <li><a class="item js-filter-lines-to-cover-it">
       <span class="label">Lines to cover</span>
       <span class="number">171</span>
       <i class="icon-chevron-right"></i>
     </a></li>
-    <li><a class="item">
+    <li><a class="item js-filter-uncovered-lines-it">
       <span class="label">Uncovered lines</span>
       <span class="number">16</span>
       <i class="icon-chevron-right"></i>
     </a></li>
+    <li><a class="item js-filter-covered-lines-it">
+      <span class="label">Covered lines</span>
+      <span class="number">55</span>
+      <i class="icon-chevron-right"></i>
+    </a></li>
+  </ul>
+</div>
+
+<div class="component-viewer-header-expanded-bar-section">
+  <div class="component-viewer-header-expanded-bar-section-title">&nbsp;</div>
+  <ul class="component-viewer-header-expanded-bar-section-list">
+    <li><span class="item">&nbsp;</span></li>
+    <li><span class="item">
+      <span class="label">Branch coverage</span>
+      <span class="number">75.0%</span>
+    </span></li>
+    <li><a class="item js-filter-branches-to-cover-it">
+      <span class="label">Branches to cover</span>
+      <span class="number">16</span>
+      <i class="icon-chevron-right"></i>
+    </a></li>
+    <li><a class="item js-filter-uncovered-branches-it">
+      <span class="label">Uncovered branches</span>
+      <span class="number">4</span>
+      <i class="icon-chevron-right"></i>
+    </a></li>
   </ul>
 </div>
\ No newline at end of file