AnalyzersModule.ts 4.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import { InversifyContainerFacade } from '../../InversifyContainerFacade';
  2. import { ContainerModule, interfaces } from 'inversify';
  3. import { ServiceIdentifiers } from '../../ServiceIdentifiers';
  4. import { ICalleeDataExtractor } from '../../../interfaces/analyzers/calls-graph-analyzer/ICalleeDataExtractor';
  5. import { ICallsGraphAnalyzer } from '../../../interfaces/analyzers/calls-graph-analyzer/ICallsGraphAnalyzer';
  6. import { INumberNumericalExpressionAnalyzer } from '../../../interfaces/analyzers/number-numerical-expression-analyzer/INumberNumericalExpressionAnalyzer';
  7. import { IPrevailingKindOfVariablesAnalyzer } from '../../../interfaces/analyzers/calls-graph-analyzer/IPrevailingKindOfVariablesAnalyzer';
  8. import { IScopeAnalyzer } from '../../../interfaces/analyzers/scope-analyzer/IScopeAnalyzer';
  9. import { IStringArrayStorageAnalyzer } from '../../../interfaces/analyzers/string-array-storage-analyzer/IStringArrayStorageAnalyzer';
  10. import { CalleeDataExtractor } from '../../../enums/analyzers/calls-graph-analyzer/CalleeDataExtractor';
  11. import { CallsGraphAnalyzer } from '../../../analyzers/calls-graph-analyzer/CallsGraphAnalyzer';
  12. import { FunctionDeclarationCalleeDataExtractor } from '../../../analyzers/calls-graph-analyzer/callee-data-extractors/FunctionDeclarationCalleeDataExtractor';
  13. import { FunctionExpressionCalleeDataExtractor } from '../../../analyzers/calls-graph-analyzer/callee-data-extractors/FunctionExpressionCalleeDataExtractor';
  14. import { NumberNumericalExpressionAnalyzer } from '../../../analyzers/number-numerical-expression-analyzer/NumberNumericalExpressionAnalyzer';
  15. import { ObjectExpressionCalleeDataExtractor } from '../../../analyzers/calls-graph-analyzer/callee-data-extractors/ObjectExpressionCalleeDataExtractor';
  16. import { PrevailingKindOfVariablesAnalyzer } from '../../../analyzers/prevailing-kind-of-variables-analyzer/PrevailingKindOfVariablesAnalyzer';
  17. import { ScopeAnalyzer } from '../../../analyzers/scope-analyzer/ScopeAnalyzer';
  18. import { StringArrayStorageAnalyzer } from '../../../analyzers/string-array-storage-analyzer/StringArrayStorageAnalyzer';
  19. export const analyzersModule: interfaces.ContainerModule = new ContainerModule((bind: interfaces.Bind) => {
  20. // calls graph analyzer
  21. bind<ICallsGraphAnalyzer>(ServiceIdentifiers.ICallsGraphAnalyzer)
  22. .to(CallsGraphAnalyzer)
  23. .inSingletonScope();
  24. // number numerical expression analyzer
  25. bind<INumberNumericalExpressionAnalyzer>(ServiceIdentifiers.INumberNumericalExpressionAnalyzer)
  26. .to(NumberNumericalExpressionAnalyzer)
  27. .inSingletonScope();
  28. // prevailing kind of variables analyzer
  29. bind<IPrevailingKindOfVariablesAnalyzer>(ServiceIdentifiers.IPrevailingKindOfVariablesAnalyzer)
  30. .to(PrevailingKindOfVariablesAnalyzer)
  31. .inSingletonScope();
  32. // scope analyzer
  33. bind<IScopeAnalyzer>(ServiceIdentifiers.IScopeAnalyzer)
  34. .to(ScopeAnalyzer)
  35. .inSingletonScope();
  36. // string array storage analyzer
  37. bind<IStringArrayStorageAnalyzer>(ServiceIdentifiers.IStringArrayStorageAnalyzer)
  38. .to(StringArrayStorageAnalyzer)
  39. .inSingletonScope();
  40. // callee data extractors
  41. bind<ICalleeDataExtractor>(ServiceIdentifiers.ICalleeDataExtractor)
  42. .to(FunctionDeclarationCalleeDataExtractor)
  43. .whenTargetNamed(CalleeDataExtractor.FunctionDeclarationCalleeDataExtractor);
  44. bind<ICalleeDataExtractor>(ServiceIdentifiers.ICalleeDataExtractor)
  45. .to(FunctionExpressionCalleeDataExtractor)
  46. .whenTargetNamed(CalleeDataExtractor.FunctionExpressionCalleeDataExtractor);
  47. bind<ICalleeDataExtractor>(ServiceIdentifiers.ICalleeDataExtractor)
  48. .to(ObjectExpressionCalleeDataExtractor)
  49. .whenTargetNamed(CalleeDataExtractor.ObjectExpressionCalleeDataExtractor);
  50. // callee data extractor factory
  51. bind<ICalleeDataExtractor>(ServiceIdentifiers.Factory__ICalleeDataExtractor)
  52. .toFactory<ICalleeDataExtractor, [CalleeDataExtractor]>(InversifyContainerFacade
  53. .getCacheFactory<CalleeDataExtractor, ICalleeDataExtractor>(
  54. ServiceIdentifiers.ICalleeDataExtractor
  55. ));
  56. });