private void gcovParser(String gcovFile) {

		TestCase testCase = parseTestCase(gcovFile);
		
		if (achieveCoincidentalCorrectness == true)
			achieveCoincidentalCorrectness(testCase);

		int totalBlockCnt = 0;
		int totalCoverBlockCnt = 0;
		
		for (Statement st: testCase.getStatements())
		{
			if (st.isBlock())
			{
				totalBlockCnt++;
				if (st.getCount() != 0)
					totalCoverBlockCnt++;
			}
		}
//		System.out.println("totalBlockCnt="+totalBlockCnt);
//		System.out.println("totalCoverBlockCnt="+totalCoverBlockCnt);
		
		if (testCase.isPassed() == false) {
			// System.out.println("totalELine="+totalELine);
			// System.out.println("totalExecutableCodeCnt="+totalExecutableCodeCnt);
			// System.out.println(wt);
//			double wt = Math.log(totalBlockCnt*1.0/totalCoverBlockCnt);
//			double wnf = Math.log(totalBlockCnt*1.0/(totalBlockCnt - totalCoverBlockCnt));
			
			double wt = totalBlockCnt*1.0/totalCoverBlockCnt;
			double wnf = totalBlockCnt*1.0/(totalBlockCnt - totalCoverBlockCnt+0.001);
			
			//weight proposed by Lee Naish
			double wtt = 1.0/(totalCoverBlockCnt-1+0.0001);
			totalWeights += wtt;
			
//			if (wt > 1.0)System.out.println(totalCoverBlockCnt+"/"+totalBlockCnt);
			for (Statement st : testCase.getStatements()) {
				
				StatementSum eSum = map.get(st.getLineNumber());
				if (st.getCount() != 0) {
					eSum.addToDA11(wt);
					eSum.addToDAef(wtt);					
				} else {					
					eSum.addToDA01(wnf);
				}
			}		
		} else {
			double wt = Math.log(totalBlockCnt) - Math.log(totalCoverBlockCnt);
			// System.out.println("totalELine="+totalELine);
			// System.out.println("totalExecutableCodeCnt="+totalExecutableCodeCnt);
			// System.out.println(wt);
			for (Statement st : testCase.getStatements()) {
				StatementSum eSum = map.get(st.getLineNumber());
				if (st.getCount() != 0) {
					eSum.addToDA10(wt);
				} else {
					double wnp = Math.log(totalBlockCnt)
							- Math.log(totalBlockCnt - totalCoverBlockCnt);
					eSum.addToDA00(wnp);
				}
			}
		}

	}