Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
23b20e2
[MOD] Modificación del build para l apráctica 5
manfergir May 11, 2025
f6befac
[MOD] Modificación de la pipeline pruebas.yml para la práctica 5
manfergir May 11, 2025
f605a65
[MOD] Modificada la pipeline.yml para incluir ejecución manual
manfergir May 11, 2025
00630ce
[MOD] Modificada la pipeline.yml para incluir ejecución manual
manfergir May 11, 2025
de95b81
[ADD] Añadido el test de GetTotalCommitsLastMonth
manfergir May 30, 2025
364c1df
Hecho el test para la métrica que mide el número de líneas escritas en
antmunsan2 May 30, 2025
8edec11
Función de test testGetTotalCommitsPerUserLastMonth añadida
manfergir May 30, 2025
7dbd00c
Merge branch 'V.0.2' of
manfergir May 30, 2025
b9c0f6e
Implementada la métrica totalCommitsLastMonth
antmunsan2 May 30, 2025
44e0805
Merge branch 'V.0.2' of https://github.com/manfergir/Audit4Improve-AP…
antmunsan2 May 30, 2025
64ac1df
Añadido el test testGetTotalLinesPerUserLastMonth
manfergir May 30, 2025
45ad651
Merge branch 'V.0.2' of https://github.com/manfergir/Audit4Improve-AP…
antmunsan2 May 30, 2025
9dd3338
Añadido el método getTotalLinesLastMonth
manfergir May 30, 2025
deaaf0c
Implementada las metrica totalCommitsLastMonth
antmunsan2 May 30, 2025
2caf008
Merge branch 'V.0.2' of
antmunsan2 May 30, 2025
6b4ba79
Merged changes
antmunsan2 May 31, 2025
ee5dde6
Terminadas las métricas y pasados los tests correspondientes
antmunsan2 May 31, 2025
9352d80
Creado el fichero para test del indicador diversidad de contribuciones
antmunsan2 Jun 1, 2025
d3b463c
Modificación en el assert de testGetTotalCommitsLastMonth
manfergir Jun 1, 2025
2eff9d9
Merge branch 'V.0.2' of https://github.com/manfergir/Audit4Improve-AP…
manfergir Jun 1, 2025
080c12a
Codificado el test DiversityOfContributionsStrategyTest
antmunsan2 Jun 1, 2025
e7ab8bb
Añadida la clase DiversityOfContributionsStrategy
manfergir Jun 1, 2025
7402d72
Merge branch 'V.0.2' of https://github.com/manfergir/Audit4Improve-AP…
manfergir Jun 1, 2025
4816ad2
Merge branch 'V.0.2' of
manfergir Jun 1, 2025
7383b67
Todos los test realizados. En procesao de pruebas.
manfergir Jun 1, 2025
ec368dc
Queda por arreglar el cálculo de la entropía, que da un valor incorrecto
antmunsan2 Jun 1, 2025
b6e6e37
Test realizados y pasados:
manfergir Jun 1, 2025
7adfde0
Todo listo para Pull Request :)
manfergir Jun 1, 2025
12b7cd3
[FIX] Review IndicatorStrategy
joshalval Jun 16, 2026
cf69779
Save: Cambios locales en build.gradle antes del merge
salalcroj Jun 16, 2026
2c8b6bc
Merge: Resuelto conflicto de configuracion de publicacion en build.gr…
salalcroj Jun 16, 2026
fcd70fd
[FIX] Review RemoteEnquirer
salalcroj Jun 16, 2026
65336af
[FIX] Review RemoteEnquirer
salalcroj Jun 16, 2026
e60345e
Merge: Unificadas las revisiones individuales en la rama oficial del …
salalcroj Jun 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .github/workflows/pipeline.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
name: Demostrador para Acciones GitHub
on: [push]
on:
workflow_dispatch:
push:
branches: [ V.0.2 ]
jobs:
Explore-GitHub-Actions:
runs-on: ubuntu-latest
Expand Down
34 changes: 30 additions & 4 deletions .github/workflows/pruebas.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
name: Flujo de trabajo para ejecutar los test

on:
workflow_dispatch:
push:
Expand All @@ -7,8 +8,9 @@ on:
branches: [ V.0.2 ]
schedule:
- cron: '1 23 * * 0-4'

jobs:
Build:
build:
runs-on: ubuntu-latest
env:
GITHUB_LOGIN: ${{ github.actor }}
Expand All @@ -17,12 +19,36 @@ jobs:
steps:
- name: Clonando el repositorio y estableciendo el espacio de trabajo
uses: actions/checkout@v3

- name: Configurando java
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '16'
- name: Construyendo y probando el código

- name: Compilando el proyecto
run: |
chmod +x gradlew
./gradlew build
chmod +x gradlew
./gradlew assemble

test:
runs-on: ubuntu-latest
needs: build
env:
GITHUB_LOGIN: ${{ github.actor }}
GITHUB_PACKAGES: ${{ secrets.GHTOKEN }}
GITHUB_OAUTH: ${{ secrets.GHTOKEN }}
steps:
- name: Clonando el repositorio y estableciendo el espacio de trabajo
uses: actions/checkout@v3

- name: Configurando java
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '16'

- name: Ejecutando los tests
run: |
chmod +x gradlew
./gradlew test
5 changes: 3 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@ publishing {
repositories {
maven {
name = "GitHubPackages"
url = uri("https://maven.pkg.github.com/mit-fs/audit4improve-api")
url = uri("https://maven.pkg.github.com/salalcroj/audit4improve-api")

credentials {
//las propiedades gpr.user y gpr.key están configuradas en gradle.properties en el raiz del proyecto, y se añade a .gitignore para que no se suban
//O bien configuro las variables de entorno GITHUB_LOGIN y GITHUB_PACKAGES
Expand All @@ -41,7 +42,7 @@ publishing {

groupId = 'us.mitfs.samples'
artifactId = 'a4i'
version = '0.2'
version = '0.2-salalcroj'

from components.java
}
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/us/muit/fs/a4i/control/IndicatorStrategy.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ public interface IndicatorStrategy<T> {
* @return indicador
*/
public ReportItemI<T> calcIndicator(List<ReportItemI<T>> metrics) throws NotAvailableMetricException;



/**
* Obtiene las métricas necesarias
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
package us.muit.fs.a4i.control.strategies;

import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.logging.Logger;

import us.muit.fs.a4i.control.IndicatorStrategy;
import us.muit.fs.a4i.exceptions.NotAvailableMetricException;
import us.muit.fs.a4i.exceptions.ReportItemException;
import us.muit.fs.a4i.model.entities.Indicator;
import us.muit.fs.a4i.model.entities.IndicatorI.IndicatorState;
import us.muit.fs.a4i.model.entities.ReportItem;
import us.muit.fs.a4i.model.entities.ReportItemI;

/**
* REMEMBER: metrics and indicators must be included in a4iDefault.json
*/
public class DiversityOfContributionsStrategy implements IndicatorStrategy<HashMap<String, Double>> {

private static Logger log = Logger.getLogger(Indicator.class.getName());

Check warning on line 24 in src/main/java/us/muit/fs/a4i/control/strategies/DiversityOfContributionsStrategy.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Update this logger to use "DiversityOfContributionsStrategy.class".

See more on https://sonarcloud.io/project/issues?id=MIT-FS_Audit4Improve-API&issues=AZ7SQdPteGCOQ8poRQZg&open=AZ7SQdPteGCOQ8poRQZg&pullRequest=269

private static final List<String> REQUIRED_METRICS = Arrays.asList(
"totalCommitsPerUserLastYear",
"totalLinesPerUserLastYear"
);

@Override
public ReportItemI<HashMap<String, Double>> calcIndicator(List<ReportItemI<HashMap<String, Double>>> metrics)
throws NotAvailableMetricException {

Optional<ReportItemI<HashMap<String, Double>>> totalCommitsPerUserLastYear = metrics.stream()
.filter(m -> REQUIRED_METRICS.get(0).equals(m.getName()))
.findAny();

Optional<ReportItemI<HashMap<String, Double>>> totalLinesPerUserLastYear = metrics.stream()
.filter(m -> REQUIRED_METRICS.get(1).equals(m.getName()))
.findAny();

if (!totalCommitsPerUserLastYear.isPresent() || !totalLinesPerUserLastYear.isPresent()) {
log.info("No se han proporcionado las metricas necesarias");
throw new NotAvailableMetricException(REQUIRED_METRICS.toString());
}

HashMap<String, Double> commitsPerUser = totalCommitsPerUserLastYear.get().getValue();
HashMap<String, Double> linesPerUser = totalLinesPerUserLastYear.get().getValue();

double entropyValue = calculateDiversityOfContributions(commitsPerUser, linesPerUser);

HashMap<String, Double> result = new HashMap<>();
result.put("entropyValue", entropyValue);

ReportItemI<HashMap<String, Double>> indicatorReport = null;

try {
indicatorReport = new ReportItem.ReportItemBuilder<HashMap<String, Double>>(
"diversityOfContributions",
result
)
.metrics(Arrays.asList(totalCommitsPerUserLastYear.get(), totalLinesPerUserLastYear.get()))
.indicator(IndicatorState.UNDEFINED)
.build();

} catch (ReportItemException e) {
log.info("Error en ReportItemBuilder.");
e.printStackTrace();

Check warning on line 69 in src/main/java/us/muit/fs/a4i/control/strategies/DiversityOfContributionsStrategy.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Make sure this debug feature is deactivated before delivering the code in production.

See more on https://sonarcloud.io/project/issues?id=MIT-FS_Audit4Improve-API&issues=AZ7SQdPteGCOQ8poRQZh&open=AZ7SQdPteGCOQ8poRQZh&pullRequest=269

Check notice

Code scanning / SonarCloud

Debugging features should not be enabled in production Low

Make sure this debug feature is deactivated before delivering the code in production. See more on SonarQube Cloud
}

return indicatorReport;
}

private double calculateDiversityOfContributions(HashMap<String, Double> commitsPerUser,
HashMap<String, Double> linesPerUser) {

if (commitsPerUser == null || linesPerUser == null) {
return 0.0;
}

Set<String> users = new HashSet<>();
users.addAll(commitsPerUser.keySet());
users.addAll(linesPerUser.keySet());

if (users.size() <= 1) {
return 0.0;
}

double totalCommits = commitsPerUser.values().stream()
.mapToDouble(Double::doubleValue)
.sum();

double totalLines = linesPerUser.values().stream()
.mapToDouble(Double::doubleValue)
.sum();

if (totalCommits <= 0.0 || totalLines <= 0.0) {
return 0.0;
}

double entropy = 0.0;
int activeUsers = 0;

for (String user : users) {
double commits = commitsPerUser.getOrDefault(user, 0.0);
double lines = linesPerUser.getOrDefault(user, 0.0);

double commitContribution = commits / totalCommits;
double lineContribution = lines / totalLines;
double userContribution = (commitContribution + lineContribution) / 2.0;

if (userContribution > 0.0) {
entropy -= userContribution * Math.log(userContribution);
activeUsers++;
}
}

if (activeUsers <= 1) {
return 0.0;
}

double normalizedEntropy = entropy / Math.log(activeUsers);

if (Double.isNaN(normalizedEntropy) || Double.isInfinite(normalizedEntropy)) {
return 0.0;
}

return normalizedEntropy;
}

@Override
public List<String> requiredMetrics() {
log.info("Métricas requeridas: " + REQUIRED_METRICS);
return REQUIRED_METRICS;
}
}
Loading
Loading