private String generateBranchInfo(LineData lineData, String content) { boolean hasBranch = (lineData != null) ? lineData.hasBranch() : false; if (hasBranch) { StringBuffer ret = new StringBuffer(); ret.append("<a title=\"Line ").append(lineData.getLineNumber()) .append(": Conditional coverage ").append( lineData.getConditionCoverage()); if (lineData.getConditionSize() > 1) { ret.append(" [each condition: "); for (int i = 0; i < lineData.getConditionSize(); i++) { if (i > 0) ret.append(", "); ret.append(lineData.getConditionCoverage(i)); } ret.append("]"); } ret.append(".\">").append(content).append("</a>"); return ret.toString(); } else { return content; } }
/** * @return The line coverage rate for particular method */ public double getLineCoverageRate(String methodNameAndDescriptor) { int total = 0; int hits = 0; lock.lock(); try { Iterator<CoverageData> iter = children.values().iterator(); while (iter.hasNext()) { LineData next = (LineData) iter.next(); if (methodNameAndDescriptor.equals(next.getMethodName() + next.getMethodDescriptor())) { total++; if (next.getHits() > 0) { hits++; } } } if (total == 0) return 1d; return (double) hits / total; } finally { lock.unlock(); } }
public void addLineJump(int lineNumber, int branchNumber) { lock.lock(); try { LineData lineData = getLineData(lineNumber); if (lineData != null) { lineData.addJump(branchNumber); this.branches.put(Integer.valueOf(lineNumber), lineData); } } finally { lock.unlock(); } }
synchronized public boolean isCovered() { return (getHits() > 0) && ((getNumberOfValidBranches() == 0) || ((1.0 - getBranchCoverageRate()) < 0.0001)); }
public Collection<CoverageData> getLines(String methodNameAndDescriptor) { Collection<CoverageData> lines = new HashSet<CoverageData>(); lock.lock(); try { Iterator<CoverageData> iter = children.values().iterator(); while (iter.hasNext()) { LineData next = (LineData) iter.next(); if (methodNameAndDescriptor.equals(next.getMethodName() + next.getMethodDescriptor())) { lines.add(next); } } return lines; } finally { lock.unlock(); } }
for( Object o : larger.getLines()) { LineData lld = (LineData) o; long afterHits = lld.getHits(); long prevHits = 0; long prevConditions = 0; if ( smaller != null ) { LineData sld = smaller.getLineCoverage( lld.getLineNumber() ); if ( sld != null ) { prevHits = sld.getHits(); prevConditions = sld.getConditionSize(); result.addLine( lld.getLineNumber(), lld.getMethodName(), lld.getMethodDescriptor() ); if ( diffHits > 0 ) { result.touch( lld.getLineNumber(), diffHits ); errors.add( "Coverage decreased on line " + lld.getLineNumber() + " of " + larger.getName()); if ( prevConditions > lld.getConditionSize() ) { errors.add( "Jump or Switch disappeared on line " + lld.getLineNumber() + " of " + larger.getName() ); for ( int i = 0; i < lld.getConditionSize(); i++ ) { Object cd = lld.getConditionData( i ); if ( cd instanceof JumpData) { JumpData ljd = (JumpData) cd; result.addLineJump( lld.getLineNumber(), i ); long prevTrue = 0; long prevFalse = 0; if ( smaller != null ) { LineData sld = smaller.getLineCoverage( lld.getLineNumber() );
private void dumpLine(LineData lineData) { int lineNumber = lineData.getLineNumber(); long hitCount = lineData.getHits(); boolean hasBranch = lineData.hasBranch(); String conditionCoverage = lineData.getConditionCoverage(); String lineInfo = "<line number=\"" + lineNumber + "\" hits=\"" + hitCount + "\" branch=\"" + hasBranch + "\""; if (hasBranch) { println(lineInfo + " condition-coverage=\"" + conditionCoverage + "\">"); dumpConditions(lineData); println("</line>"); } else { println(lineInfo + "/>"); } }
/** * @return The branch coverage rate for a particular method. */ public double getBranchCoverageRate(String methodNameAndDescriptor) { int total = 0; int covered = 0; lock.lock(); try { for (Iterator<LineData> iter = branches.values().iterator(); iter .hasNext();) { LineData next = (LineData) iter.next(); if (methodNameAndDescriptor.equals(next.getMethodName() + next.getMethodDescriptor())) { total += next.getNumberOfValidBranches(); covered += next.getNumberOfCoveredBranches(); } } if (total == 0) return 1.0; return (double) covered / total; } finally { lock.unlock(); } }
private void dumpConditions(LineData lineData) { increaseIndentation(); println("<conditions>"); for (int i = 0; i < lineData.getConditionSize(); i++) { Object conditionData = lineData.getConditionData(i); String coverage = lineData.getConditionCoverage(i); dumpCondition(conditionData, coverage); } println("</conditions>"); decreaseIndentation(); }
private Collection<Long> hitArray(LineData ld) { ArrayList<Long> result = new ArrayList<Long>(); if ( ld.hasBranch() ) { for ( int i = 0; i < ld.getConditionSize(); i++ ) { Object xcd = ld.getConditionData( i ); if ( xcd instanceof SwitchData ) { SwitchData sd = (SwitchData) xcd; for( int j = 0; j < sd.getNumberOfValidBranches() - 1; j++ ) { result.add( sd.getHits( j ) ); } result.add( sd.getDefaultHits() ); } else { JumpData jd = (JumpData) xcd; result.add( jd.getTrueHits() ); result.add( jd.getFalseHits() ); } } } return result; }
ret.append(" <td class=\"numLineCover\"> " + lineNumber + "</td>"); if ((lineData != null) && (lineData.isCovered())) { ret.append(" <td class=\"nbHitsCovered\">" + generateBranchInfo(lineData, " " + ((lineData != null) ? lineData .getHits() : 0)) + "</td>"); ret .append(" <td class=\"src\"><pre class=\"src\"> " + generateBranchInfo(lineData, " " + ((lineData != null) ? lineData .getHits() : 0)) + "</td>"); ret .append(" <td class=\"src\"><pre class=\"src\"><span class=\"srcUncovered\"> "
public double getLineCoverageRate() { return (getHits() > 0) ? 1 : 0; }
public LineData addLine(int lineNumber, String methodName, String methodDescriptor) { lock.lock(); try { LineData lineData = getLineData(lineNumber); if (lineData == null) { lineData = new LineData(lineNumber); // Each key is a line number in this class, stored as an Integer object. // Each value is information about the line, stored as a LineData object. children.put(new Integer(lineNumber), lineData); } lineData.setMethodNameAndDescriptor(methodName, methodDescriptor); // methodName and methodDescriptor can be null when cobertura.ser with // no line information was loaded (or was not loaded at all). if (methodName != null && methodDescriptor != null) methodNamesAndDescriptors.add(methodName + methodDescriptor); return lineData; } finally { lock.unlock(); } }
@Override public int compare(CoverageData o1, CoverageData o2) { LineData l1 = (LineData) o1; LineData l2 = (LineData) o2; Integer i1 = new Integer( l1.getLineNumber() ); Integer i2 = new Integer( l2.getLineNumber() ); return i1.compareTo( i2 ); }
public String getConditionCoverage(int index) { Object branchData = getConditionData(index); if (branchData == null) { return StringUtil.getPercentValue(1.0); } else if (branchData instanceof JumpData) { JumpData jumpData = (JumpData) branchData; return StringUtil.getPercentValue(jumpData.getBranchCoverageRate()); } else { SwitchData switchData = (SwitchData) branchData; return StringUtil.getPercentValue(switchData .getBranchCoverageRate()); } }
public void addLineSwitch(int lineNumber, int switchNumber, int min, int max, int maxBranches) { lock.lock(); try { LineData lineData = getLineData(lineNumber); if (lineData != null) { lineData.addSwitch(switchNumber, min, max, maxBranches); this.branches.put(Integer.valueOf(lineNumber), lineData); } } finally { lock.unlock(); } }
private void dumpLine(LineData lineData) { int lineNumber = lineData.getLineNumber(); long hitCount = lineData.getHits(); boolean hasBranch = lineData.hasBranch(); String conditionCoverage = lineData.getConditionCoverage(); String lineInfo = "<line number=\"" + lineNumber + "\" hits=\"" + hitCount + "\" branch=\"" + hasBranch + "\""; if (hasBranch) { println(lineInfo + " condition-coverage=\"" + conditionCoverage + "\">"); dumpConditions(lineData); println("</line>"); } else { println(lineInfo + "/>"); } }
/** * @return The branch coverage rate for a particular method. */ public double getBranchCoverageRate(String methodNameAndDescriptor) { int total = 0; int covered = 0; lock.lock(); try { for (Iterator<LineData> iter = branches.values().iterator(); iter .hasNext();) { LineData next = (LineData) iter.next(); if (methodNameAndDescriptor.equals(next.getMethodName() + next.getMethodDescriptor())) { total += next.getNumberOfValidBranches(); covered += next.getNumberOfCoveredBranches(); } } if (total == 0) return 1.0; return (double) covered / total; } finally { lock.unlock(); } }
private void dumpConditions(LineData lineData) { increaseIndentation(); println("<conditions>"); for (int i = 0; i < lineData.getConditionSize(); i++) { Object conditionData = lineData.getConditionData(i); String coverage = lineData.getConditionCoverage(i); dumpCondition(conditionData, coverage); } println("</conditions>"); decreaseIndentation(); }
synchronized public boolean isCovered() { return (getHits() > 0) && ((getNumberOfValidBranches() == 0) || ((1.0 - getBranchCoverageRate()) < 0.0001)); }