Genese complexity report

<- language-to-json-ast.ts
Methods : 4
Complexity index : 42.6
Cyclomatic complexity : 7
Cognitive complexity
50 % Correct 2/4
25 % Warning 1/4 (threshold : 10)
25 % Error 1/4 (threshold : 20)
Cyclomatic complexity
100 % Correct 4/4
0 % Warning 0/4 (threshold : 5)
0 % Error 0/4 (threshold : 10)
Methods of language-to-json-ast.ts
start Complexity Index 20.8 Cyclomatic complexity 1
                            
                                
            
            
                /**
                 * Starts the parsing to Json Ast format
                 * @param  {string} pathToAnalyze          // The path of the folder to analyse
                 * @param  {Language} language?         // The language to parse and convert into JsonAst
                 * @returns void
                 */
                static start(pathToAnalyze: string, language?: Language): void { // -------------------------------- +0.6 Complexity index (+0.6 atomic)
                    let jsonAst: JsonAstInterface; // -------------------------------------------------------------- +0.3 Complexity index (+0.3 atomic)
                    switch (language) { // ------------------------------------------------------------------------- +1.2 Complexity index (+0.2 atomic, +1 structural)
                        case Language.TS: // ----------------------------------------------------------------------- +0.3 Complexity index (+0.3 atomic)
                            project.addSourceFilesAtPaths(`${pathToAnalyze}/**/*.ts`); // -------------------------- +1.3 Complexity index (+0.3 atomic, +1 structural)
                            jsonAst = LanguageToJsonAst.generateFromFiles(pathToAnalyze, language); // ------------- +1.6 Complexity index (+0.6 atomic, +1 structural)
                            break
                        case Language.JAVA: // --------------------------------------------------------------------- +0.3 Complexity index (+0.3 atomic)
                            jsonAst = LanguageToJsonAst.generateFromFiles(pathToAnalyze, language); // ------------- +1.6 Complexity index (+0.6 atomic, +1 structural)
                            break;
                        case Language.JS: // ----------------------------------------------------------------------- +0.3 Complexity index (+0.3 atomic)
                            project.addSourceFilesAtPaths(`${pathToAnalyze}/**/*.js`); // -------------------------- +1.3 Complexity index (+0.3 atomic, +1 structural)
                            jsonAst = LanguageToJsonAst.generateFromFiles(pathToAnalyze, language); // ------------- +1.6 Complexity index (+0.6 atomic, +1 structural)
                            break;
                        case Language.TSX: // ---------------------------------------------------------------------- +0.3 Complexity index (+0.3 atomic)
                            project.addSourceFilesAtPaths(`${pathToAnalyze}/**/*.tsx`); // ------------------------- +1.3 Complexity index (+0.3 atomic, +1 structural)
                            jsonAst = LanguageToJsonAst.generateFromFiles(pathToAnalyze, language); // ------------- +1.6 Complexity index (+0.6 atomic, +1 structural)
                            break;
                        case Language.JSX: // ---------------------------------------------------------------------- +0.3 Complexity index (+0.3 atomic)
                            project.addSourceFilesAtPaths(`${pathToAnalyze}/**/*.jsx`); // ------------------------- +1.3 Complexity index (+0.3 atomic, +1 structural)
                            jsonAst = LanguageToJsonAst.generateFromFiles(pathToAnalyze, language); // ------------- +1.6 Complexity index (+0.6 atomic, +1 structural)
                            break;
                        default: // -------------------------------------------------------------------------------- +0.1 Complexity index (+0.1 atomic)
                            jsonAst = LanguageToJsonAst.generateFromAllFiles(pathToAnalyze); // -------------------- +1.5 Complexity index (+0.5 atomic, +1 structural)
                            break;
                    }
                    createFile(`./json-ast.json`, JsonService.prettifyJson(jsonAst)); // --------------------------- +2.4 Complexity index (+0.4 atomic, +2 structural)
                }
            
                            
                        
generateFromAllFiles Complexity Index 2 Cyclomatic complexity 1
                            
                                
                
            
            
                // TODO: implement for all languages
                private static generateFromAllFiles(pathToAnalyze: string): JsonAstInterface { // ------- +0.4 Complexity index (+0.4 atomic)
                    return LanguageToJsonAst.generateFromFiles(pathToAnalyze, Language.TS); // ---------- +1.6 Complexity index (+0.6 atomic, +1 structural)
                }
            
                            
                        
generateFromFiles Complexity Index 5.1 Cyclomatic complexity 1
                            
                                
                
            
                /**
                 * Generate AST for Ts or Java files
                 * @param  {string} pathToAnalyze
                 * @param  {Language} language
                 * @returns JsonAstInterface
                 */
                private static generateFromFiles(pathToAnalyze: string, language: Language): JsonAstInterface { // -------------- +0.6 Complexity index (+0.6 atomic)
                    const jsonAst: JsonAstInterface = { // ---------------------------------------------------------------------- +0.3 Complexity index (+0.3 atomic)
                        astFolder: undefined // --------------------------------------------------------------------------------- +0.2 Complexity index (+0.2 atomic)
                    };
                    let astFolder = new InitGenerationService().generateAll(pathToAnalyze, language).astFolder as any; // ------- +1.9 Complexity index (+0.9 atomic, +1 structural)
                    astFolder = JsonService.astPropertyNames(astFolder); // ----------------------------------------------------- +1.5 Complexity index (+0.5 atomic, +1 structural)
                    jsonAst.astFolder = astFolder; // --------------------------------------------------------------------------- +0.4 Complexity index (+0.4 atomic)
                    return jsonAst; // ------------------------------------------------------------------------------------------ +0.2 Complexity index (+0.2 atomic)
                }
            
                            
                        
findInObject Complexity Index 14.7 Cyclomatic complexity 4
                            
                                
                
            
                private static findInObject(o, f) { // --------------------------------------------------- +0.3 Complexity index (+0.3 atomic)
                    return Object.keys(o).some(function (a) { // ----------------------------------------- +3.7 Complexity index (+0.7 atomic, +3 structural)
                        if (Array.isArray(o[a]) || typeof o[a] === 'object' && o[a] !== null) { // ------- +8.6 Complexity index (+1.6 atomic, +2 aggregation, +1 nesting, +4 structural)
                            return LanguageToJsonAst.findInObject(o[a], f); // --------------------------- +1.6 Complexity index (+0.6 atomic, +1 structural)
                        }
                        return o[a] === f; // ------------------------------------------------------------ +0.5 Complexity index (+0.5 atomic)
                    });
                }