Flawfinder version 2.0.10, (C) 2001-2019 David A. Wheeler.
Number of rules (primarily dangerous function names) in C/C++ ruleset: 223
Examining data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp
Examining data/r-cran-seurat-3.2.2/src/data_manipulation.h
Examining data/r-cran-seurat-3.2.2/src/integration.h
Examining data/r-cran-seurat-3.2.2/src/ModularityOptimizer.h
Examining data/r-cran-seurat-3.2.2/src/valid_pointer.c
Examining data/r-cran-seurat-3.2.2/src/integration.cpp
Examining data/r-cran-seurat-3.2.2/src/data_manipulation.cpp
Examining data/r-cran-seurat-3.2.2/src/snn.cpp
Examining data/r-cran-seurat-3.2.2/src/RcppExports.cpp
Examining data/r-cran-seurat-3.2.2/src/RModularityOptimizer.cpp
Examining data/r-cran-seurat-3.2.2/src/snn.h

FINAL RESULTS:

data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp:66:71:  [3] (random) random:
  This function is not sufficiently random for security-related functions
  such as key and nonce creation (CWE-327). Use a more secure technique for
  acquiring random values.
IVector Arrays2::generateRandomPermutation(int nElements, JavaRandom& random)
data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp:73:15:  [3] (random) random:
  This function is not sufficiently random for security-related functions
  such as key and nonce creation (CWE-327). Use a more secure technique for
  acquiring random values.
      int j = random.nextInt(nElements);
data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp:482:66:  [3] (random) random:
  This function is not sufficiently random for security-related functions
  such as key and nonce creation (CWE-327). Use a more secure technique for
  acquiring random values.
bool VOSClusteringTechnique::runLocalMovingAlgorithm(JavaRandom& random){
data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp:508:81:  [3] (random) random:
  This function is not sufficiently random for security-related functions
  such as key and nonce creation (CWE-327). Use a more secure technique for
  acquiring random values.
  IVector nodePermutation = Arrays2::generateRandomPermutation(network->nNodes, random);
data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp:583:62:  [3] (random) random:
  This function is not sufficiently random for security-related functions
  such as key and nonce creation (CWE-327). Use a more secure technique for
  acquiring random values.
bool VOSClusteringTechnique::runLouvainAlgorithm(JavaRandom& random) {
data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp:587:41:  [3] (random) random:
  This function is not sufficiently random for security-related functions
  such as key and nonce creation (CWE-327). Use a more secure technique for
  acquiring random values.
  bool update = runLocalMovingAlgorithm(random);
data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp:592:63:  [3] (random) random:
  This function is not sufficiently random for security-related functions
  such as key and nonce creation (CWE-327). Use a more secure technique for
  acquiring random values.
    bool update2 = vosClusteringTechnique.runLouvainAlgorithm(random);
data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp:604:90:  [3] (random) random:
  This function is not sufficiently random for security-related functions
  such as key and nonce creation (CWE-327). Use a more secure technique for
  acquiring random values.
bool VOSClusteringTechnique::runIteratedLouvainAlgorithm(int maxNIterations, JavaRandom& random) {
data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp:609:34:  [3] (random) random:
  This function is not sufficiently random for security-related functions
  such as key and nonce creation (CWE-327). Use a more secure technique for
  acquiring random values.
    update = runLouvainAlgorithm(random);
data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp:616:86:  [3] (random) random:
  This function is not sufficiently random for security-related functions
  such as key and nonce creation (CWE-327). Use a more secure technique for
  acquiring random values.
bool VOSClusteringTechnique::runLouvainAlgorithmWithMultilevelRefinement(JavaRandom& random) {
data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp:620:41:  [3] (random) random:
  This function is not sufficiently random for security-related functions
  such as key and nonce creation (CWE-327). Use a more secure technique for
  acquiring random values.
  bool update = runLocalMovingAlgorithm(random);
data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp:626:87:  [3] (random) random:
  This function is not sufficiently random for security-related functions
  such as key and nonce creation (CWE-327). Use a more secure technique for
  acquiring random values.
    bool update2 = vosClusteringTechnique.runLouvainAlgorithmWithMultilevelRefinement(random);
data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp:632:31:  [3] (random) random:
  This function is not sufficiently random for security-related functions
  such as key and nonce creation (CWE-327). Use a more secure technique for
  acquiring random values.
      runLocalMovingAlgorithm(random);
data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp:637:114:  [3] (random) random:
  This function is not sufficiently random for security-related functions
  such as key and nonce creation (CWE-327). Use a more secure technique for
  acquiring random values.
bool VOSClusteringTechnique::runIteratedLouvainAlgorithmWithMultilevelRefinement(int maxNIterations, JavaRandom& random) {
data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp:642:58:  [3] (random) random:
  This function is not sufficiently random for security-related functions
  such as key and nonce creation (CWE-327). Use a more secure technique for
  acquiring random values.
    update = runLouvainAlgorithmWithMultilevelRefinement(random);
data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp:649:71:  [3] (random) random:
  This function is not sufficiently random for security-related functions
  such as key and nonce creation (CWE-327). Use a more secure technique for
  acquiring random values.
bool VOSClusteringTechnique::runSmartLocalMovingAlgorithm(JavaRandom& random) {
data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp:653:41:  [3] (random) random:
  This function is not sufficiently random for security-related functions
  such as key and nonce creation (CWE-327). Use a more secure technique for
  acquiring random values.
  bool update = runLocalMovingAlgorithm(random);
data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp:664:54:  [3] (random) random:
  This function is not sufficiently random for security-related functions
  such as key and nonce creation (CWE-327). Use a more secure technique for
  acquiring random values.
      vosClusteringTechnique.runLocalMovingAlgorithm(random);
data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp:683:68:  [3] (random) random:
  This function is not sufficiently random for security-related functions
  such as key and nonce creation (CWE-327). Use a more secure technique for
  acquiring random values.
    update |= vosClusteringTechnique2.runSmartLocalMovingAlgorithm(random);
data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp:690:96:  [3] (random) random:
  This function is not sufficiently random for security-related functions
  such as key and nonce creation (CWE-327). Use a more secure technique for
  acquiring random values.
bool VOSClusteringTechnique::runIteratedSmartLocalMovingAlgorithm(int nIterations, JavaRandom& random) {
data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp:693:44:  [3] (random) random:
  This function is not sufficiently random for security-related functions
  such as key and nonce creation (CWE-327). Use a more secure technique for
  acquiring random values.
    update |= runSmartLocalMovingAlgorithm(random);
data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp:945:16:  [3] (random) random:
  This function is not sufficiently random for security-related functions
  such as key and nonce creation (CWE-327). Use a more secure technique for
  acquiring random values.
    JavaRandom random(randomSeed);
data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp:961:63:  [3] (random) random:
  This function is not sufficiently random for security-related functions
  such as key and nonce creation (CWE-327). Use a more secure technique for
  acquiring random values.
          update = vosClusteringTechnique.runLouvainAlgorithm(random);
data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp:963:87:  [3] (random) random:
  This function is not sufficiently random for security-related functions
  such as key and nonce creation (CWE-327). Use a more secure technique for
  acquiring random values.
          update = vosClusteringTechnique.runLouvainAlgorithmWithMultilevelRefinement(random);
data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp:965:63:  [3] (random) random:
  This function is not sufficiently random for security-related functions
  such as key and nonce creation (CWE-327). Use a more secure technique for
  acquiring random values.
          vosClusteringTechnique.runSmartLocalMovingAlgorithm(random);
data/r-cran-seurat-3.2.2/src/ModularityOptimizer.h:29:64:  [3] (random) random:
  This function is not sufficiently random for security-related functions
  such as key and nonce creation (CWE-327). Use a more secure technique for
  acquiring random values.
  IVector generateRandomPermutation(int nElements, JavaRandom& random);
data/r-cran-seurat-3.2.2/src/ModularityOptimizer.h:143:44:  [3] (random) random:
  This function is not sufficiently random for security-related functions
  such as key and nonce creation (CWE-327). Use a more secure technique for
  acquiring random values.
  bool runLocalMovingAlgorithm(JavaRandom& random);
data/r-cran-seurat-3.2.2/src/ModularityOptimizer.h:144:40:  [3] (random) random:
  This function is not sufficiently random for security-related functions
  such as key and nonce creation (CWE-327). Use a more secure technique for
  acquiring random values.
  bool runLouvainAlgorithm(JavaRandom& random);
data/r-cran-seurat-3.2.2/src/ModularityOptimizer.h:145:68:  [3] (random) random:
  This function is not sufficiently random for security-related functions
  such as key and nonce creation (CWE-327). Use a more secure technique for
  acquiring random values.
  bool runIteratedLouvainAlgorithm(int maxNIterations, JavaRandom& random);
data/r-cran-seurat-3.2.2/src/ModularityOptimizer.h:146:64:  [3] (random) random:
  This function is not sufficiently random for security-related functions
  such as key and nonce creation (CWE-327). Use a more secure technique for
  acquiring random values.
  bool runLouvainAlgorithmWithMultilevelRefinement(JavaRandom& random);
data/r-cran-seurat-3.2.2/src/ModularityOptimizer.h:147:92:  [3] (random) random:
  This function is not sufficiently random for security-related functions
  such as key and nonce creation (CWE-327). Use a more secure technique for
  acquiring random values.
  bool runIteratedLouvainAlgorithmWithMultilevelRefinement(int maxNIterations, JavaRandom& random);
data/r-cran-seurat-3.2.2/src/ModularityOptimizer.h:148:49:  [3] (random) random:
  This function is not sufficiently random for security-related functions
  such as key and nonce creation (CWE-327). Use a more secure technique for
  acquiring random values.
  bool runSmartLocalMovingAlgorithm(JavaRandom& random);
data/r-cran-seurat-3.2.2/src/ModularityOptimizer.h:149:74:  [3] (random) random:
  This function is not sufficiently random for security-related functions
  such as key and nonce creation (CWE-327). Use a more secure technique for
  acquiring random values.
  bool runIteratedSmartLocalMovingAlgorithm(int nIterations, JavaRandom& random);
data/r-cran-seurat-3.2.2/src/RModularityOptimizer.cpp:104:14:  [3] (random) random:
  This function is not sufficiently random for security-related functions
  such as key and nonce creation (CWE-327). Use a more secure technique for
  acquiring random values.
  JavaRandom random(randomSeed);
data/r-cran-seurat-3.2.2/src/RModularityOptimizer.cpp:122:61:  [3] (random) random:
  This function is not sufficiently random for security-related functions
  such as key and nonce creation (CWE-327). Use a more secure technique for
  acquiring random values.
        update = vosClusteringTechnique.runLouvainAlgorithm(random);
data/r-cran-seurat-3.2.2/src/RModularityOptimizer.cpp:124:85:  [3] (random) random:
  This function is not sufficiently random for security-related functions
  such as key and nonce creation (CWE-327). Use a more secure technique for
  acquiring random values.
        update = vosClusteringTechnique.runLouvainAlgorithmWithMultilevelRefinement(random);
data/r-cran-seurat-3.2.2/src/RModularityOptimizer.cpp:126:61:  [3] (random) random:
  This function is not sufficiently random for security-related functions
  such as key and nonce creation (CWE-327). Use a more secure technique for
  acquiring random values.
        vosClusteringTechnique.runSmartLocalMovingAlgorithm(random);
data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp:808:5:  [2] (misc) open:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
  f.open(fname, std::ios::in);
data/r-cran-seurat-3.2.2/src/snn.cpp:47:10:  [2] (misc) open:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
  output.open(filename);

ANALYSIS SUMMARY:

Hits = 39
Lines analyzed = 2518 in approximately 0.09 seconds (27207 lines/second)
Physical Source Lines of Code (SLOC) = 2127
Hits@level = [0]  10 [1]   0 [2]   2 [3]  37 [4]   0 [5]   0
Hits@level+ = [0+]  49 [1+]  39 [2+]  39 [3+]  37 [4+]   0 [5+]   0
Hits/KSLOC@level+ = [0+] 23.0371 [1+] 18.3357 [2+] 18.3357 [3+] 17.3954 [4+]   0 [5+]   0
Dot directories skipped = 1 (--followdotdir overrides)
Minimum risk level = 1
Not every hit is necessarily a security vulnerability.
There may be other security vulnerabilities; review your code!
See 'Secure Programming HOWTO'
(https://dwheeler.com/secure-programs) for more information.