sonar.issue.ignore.multicriteria.s5.ruleKey=cpp:S995
sonar.issue.ignore.multicriteria.s5.resourceKey=src/smpi/bindings/*.cpp
-#There is an intentional uninitialized variable in this test, to check SMPI does not use irrelevant values for some ranks
-sonar.issue.ignore.multicriteria.s6.ruleKey=c:S836
-sonar.issue.ignore.multicriteria.s6.resourceKey=teshsuite/smpi/replay-ti-colls/replay-ti-colls.c
-
# Exclude some files from the analysis:
# - our unit tests
# - the tests that we borrowed elsewhere (MPICH and ISP)
-//exclude from clang static analysis, as there is an intentional uninitialized value passed to MPI calls.
-#ifndef __clang_analyzer__
-
#include "mpi.h"
#include <stdio.h>
#include <string.h>
for (int i = 0; i < nprocs; i++)
alltoallvcounts[i] = BOUNDED(i + rank);
- int* recvbuf;
- int* displs;
- int* counts;
- int* rcounts;
+ int* dummy_buffer = malloc(sizeof(int));
+ // initialize buffers with an invalid value (we want to trigger a valgrind error if they are used)
+ int* recvbuf = dummy_buffer + 1;
+ int* displs = dummy_buffer + 1;
+ int* counts = dummy_buffer + 1;
+ int* rcounts = dummy_buffer + 1;
if (rank == 0)
setup_recvbuf(nprocs, &recvbuf, &displs, &counts, &rcounts);
MPI_Scatterv(recvbuf, counts, displs, MPI_INT, sendbuf, BOUNDED(rank), MPI_INT, 0, MPI_COMM_WORLD);
MPI_Reduce(sendbuf, recvbuf, BUFSIZE, MPI_INT, MPI_MAX, 0, MPI_COMM_WORLD);
+ free(dummy_buffer);
if (rank != 0)
setup_recvbuf(nprocs, &recvbuf, &displs, &counts, &rcounts);
MPI_Finalize();
return 0;
}
-
-#endif