Пример #1
0
        /// <summary>
        /// Check every type in the current Assembly.
        /// </summary>
        public void Run()
        {
            if (!_isInitialized)
            {
                throw new Exception("AssemblyAnalyzer must be initialized. Please Call Init() first.");
            }

            foreach (TypeDefinition type in Assembly.MainModule.Types)
            {
                HashSet <string> unsupportedMethodsInCurrentType;
                _unsupportedMethodsInCurrentAssembly.TryGetValue(type.Name, out unsupportedMethodsInCurrentType);
                //we want to check the type only if we know there is unsupported stuff in it.
                if (unsupportedMethodsInCurrentType != null)
                {
                    ClassAnalyzer.Set(type, unsupportedMethodsInCurrentType);//, 0);
                    ClassAnalyzer.Run();
                }
            }
        }
Пример #2
0
        /// <summary>
        /// Initialize the AssemblyAnalyzer. Must be call once (and only once).
        /// </summary>
        /// <param name="unsupportedMethods"></param>
        /// <param name="modules"></param>
        /// <param name="outputOptions"></param>
        private void Init(string coreASsemblyFolder, Dictionary <string, Dictionary <string, HashSet <string> > > unsupportedMethods, List <ModuleDefinition> modules, OutputOptions outputOptions = null)
        {
            if (!_isInitialized)
            {
                if (outputOptions == null)
                {
                    _outputOptions = new OutputOptions();
                }
                else
                {
                    _outputOptions = outputOptions;
                }

                _unsupportedMethods = unsupportedMethods;
                _modules            = modules;
                ClassAnalyzer       = new ClassAnalyzer(coreASsemblyFolder, _unsupportedMethods, _modules, _outputOptions);

                _isInitialized = true;
            }
        }
Пример #3
0
        /// <summary>
        /// Initialize the MethodAnalyzer. Must be call once.
        /// </summary>
        /// <param name="unsupportedMethods"></param>
        /// <param name="modules"></param>
        /// <param name="parentClassAnalyzer"></param>
        /// <param name="outputOptions"></param>
        private void Init(Dictionary <string, Dictionary <string, HashSet <string> > > unsupportedMethods, List <ModuleDefinition> modules, ClassAnalyzer parentClassAnalyzer, OutputOptions outputOptions = null)
        {
            if (!_isInitialized)
            {
                if (outputOptions == null)
                {
                    _outputOptions = new OutputOptions();
                }
                else
                {
                    _outputOptions = outputOptions;
                }

                _implementedMethods        = new Dictionary <string, Dictionary <string, HashSet <MethodSignature> > >();
                _parentClassAnalyzer       = parentClassAnalyzer;
                _unsupportedMethods        = unsupportedMethods;
                _modules                   = modules;
                _declaringTypeHasAnIndexer = false;
                _isInitialized             = true;
            }
        }
Пример #4
0
 internal MethodAnalyzer(Dictionary <string, Dictionary <string, HashSet <string> > > unsupportedMethods, List <ModuleDefinition> modules, ClassAnalyzer parentClassAnalyzer, OutputOptions outputOptions = null)
 {
     Init(unsupportedMethods, modules, parentClassAnalyzer, outputOptions);
 }