Skip to content

Add additional CSV files that sum up: overall, per-languageΒ #83

@zimmski

Description

@zimmski

Tasks:

  • Introduce an Interface on the Assessment collection types for printing them in a CSV
  • Collapse the Assessment list by Language and Model
  • Generate a summary CSV for each Language by Model
  • Generate a summary CSV by Model

This is what we generated for v0.4.0 2088210 with the following script. However, we need to sum up ALL columns. Not just the score. We did that but it did not land in the CSVs.

package main

import (
	"encoding/csv"
	"fmt"
	"os"
	"sort"
	"strconv"

	"golang.org/x/exp/maps"
)

type data struct {
	score             int64
	responseNoError   int64
	responseNotEmpty  int64
	responseWithCode  int64
	filesExecuted     int64
	coverageStatement int64
	responseNoExcess  int64
}

func main() {
	file, err := os.Open("docs/reports/v0.4.0/evaluation.csv")
	if err != nil {
		panic(err)
	}

	rows, err := csv.NewReader(file).ReadAll()
	if err != nil {
		panic(err)
	}

	modelsSummed := map[string]*data{}
	golangSummed := map[string]*data{}
	javaSummed := map[string]*data{}

	for i := 1; i < len(rows); i++ {
		row := rows[i]
		score, err := strconv.ParseInt(row[3], 10, 64)
		if err != nil {
			panic(err)
		}
		coverageStatement, err := strconv.ParseInt(row[4], 10, 64)
		if err != nil {
			panic(err)
		}
		filesExecuted, err := strconv.ParseInt(row[5], 10, 64)
		if err != nil {
			panic(err)
		}
		responseNoError, err := strconv.ParseInt(row[6], 10, 64)
		if err != nil {
			panic(err)
		}
		responseNoExcess, err := strconv.ParseInt(row[7], 10, 64)
		if err != nil {
			panic(err)
		}
		responseNotEmpty, err := strconv.ParseInt(row[8], 10, 64)
		if err != nil {
			panic(err)
		}
		responseWithCode, err := strconv.ParseInt(row[9], 10, 64)
		if err != nil {
			panic(err)
		}
		r, ok := modelsSummed[row[0]]
		if !ok {
			r = &data{}
			modelsSummed[row[0]] = r
		}
		r.score += score
		r.coverageStatement += coverageStatement
		r.filesExecuted += filesExecuted
		r.responseNoError += responseNoError
		r.responseNoExcess += responseNoExcess
		r.responseNotEmpty += responseNotEmpty
		r.responseWithCode += responseWithCode
		if row[1] == "golang" {
			r, ok := golangSummed[row[0]]
			if !ok {
				r = &data{}
				golangSummed[row[0]] = r
			}
			r.score += score
			r.coverageStatement += coverageStatement
			r.filesExecuted += filesExecuted
			r.responseNoError += responseNoError
			r.responseNoExcess += responseNoExcess
			r.responseNotEmpty += responseNotEmpty
			r.responseWithCode += responseWithCode
		} else {
			r, ok := javaSummed[row[0]]
			if !ok {
				r = &data{}
				javaSummed[row[0]] = r
			}
			r.score += score
			r.coverageStatement += coverageStatement
			r.filesExecuted += filesExecuted
			r.responseNoError += responseNoError
			r.responseNoExcess += responseNoExcess
			r.responseNotEmpty += responseNotEmpty
			r.responseWithCode += responseWithCode
		}
	}

	{
		fmt.Println("Overall")
		names := maps.Keys(modelsSummed)
		sort.Strings(names)
		fmt.Println("model,score,response-no-error,response-not-empty,response-with-code,files-executed,coverage-statement,response-no-excess")
		for _, name := range names {
			r := modelsSummed[name]
			fmt.Printf("%s,%d,%d,%d,%d,%d,%d,%d\n", name, r.score, r.responseNoError, r.responseNotEmpty, r.responseWithCode, r.filesExecuted, r.coverageStatement, r.responseNoExcess)
		}
	}
	{
		fmt.Println("Golang")
		names := maps.Keys(golangSummed)
		sort.Strings(names)
		fmt.Println("model,score,response-no-error,response-not-empty,response-with-code,files-executed,coverage-statement,response-no-excess")
		for _, name := range names {
			r := golangSummed[name]
			fmt.Printf("%s,%d,%d,%d,%d,%d,%d,%d\n", name, r.score, r.responseNoError, r.responseNotEmpty, r.responseWithCode, r.filesExecuted, r.coverageStatement, r.responseNoExcess)
		}
	}
	{
		fmt.Println("Java")
		names := maps.Keys(javaSummed)
		sort.Strings(names)
		fmt.Println("model,score,response-no-error,response-not-empty,response-with-code,files-executed,coverage-statement,response-no-excess")
		for _, name := range names {
			r := javaSummed[name]
			fmt.Printf("%s,%d,%d,%d,%d,%d,%d,%d\n", name, r.score, r.responseNoError, r.responseNotEmpty, r.responseWithCode, r.filesExecuted, r.coverageStatement, r.responseNoExcess)
		}
	}
}

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions