16-12-2022
Un tesista llamado Pablo
16-12-2022
Juntada con Diego. Charlamos de lo cómo calcular el recall. Se me ocurrió de separar la corrida de evaluación de las queries en:
- Worse solo
- Worse boosteado
- V0
Esto porque quiero poder atajar casos en que una alerta fue descubierta con:
- Source y sink que salieron del boosteo
- Source que salió del boosteo, y sink de Worse
- Source de Worse, y sink del boosteo
Cuando se corre la query de evaluación de worse y boosted, la función que toma la decisión si clasificar o no una alerta como worse o boosted es:
predicate isFlowLikelyInBaseQuery(CandidateSource source, CandidateSink sink) {
source instanceof KnownSource and sink instanceof KnownSink
}
Por otro lado, la configuración de TaintedPathTSMConfig.qll
que implementa DataFlow::Configuration
debería ya de por si tomar en cuenta de por si los sources / sinks que salen de Worse (aka Known), y los de boosted.
CandidateSource() {
this instanceof KnownSource and
score = 1.0
or
score = getScore(this, "src") and
score >= minScore_src()
}
Voy a probar correr una experimento con un número más grande de datos, y tratar de extraer los resultados con el notebook nuevamente.
Para cada corrida pretendo usar los CSV que contienen una base de datos de repos característicos para cada tipo de queries, en experiments/atm-dabases
.
Idea interesante, utilizar cross validation para con un set de repos con el cual se trabaja, generar corridas con posibles resultados diferentes.
Tengo que buscar una mejor forma de proveer la que toma como parámetro docker run
./scripts/docker_run.sh /tesis/repos/tsm-pipeline/experiments/tesis/tainted_path/tainted_path_100_split_train.txt /tesis/tmp/results/fmu7UomymbomImzU
Otra idea interesante, si fuera util correr con cross validation, usar una lib de docker para ejecutar todo desde python https://docker-py.readthedocs.io/en/stable/
Pude correr:
cd code
./scripts/docker_run.sh /tesis/repos/tsm-pipeline/experiments/tesis/tainted_path/t.txt /tesis/tmp/results/tainted_path_test
Hay algunos problemas cuando una db genera un modelo vacío, CBC falla pero no tira ningun código de error. Probar correr el top 100.