• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

C# ICirData类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C#中ICirData的典型用法代码示例。如果您正苦于以下问题:C# ICirData类的具体用法?C# ICirData怎么用?C# ICirData使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



ICirData类属于命名空间,在下文中一共展示了ICirData类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。

示例1: getCirFunction

        /// <summary>
        /// this will return the current CirFunction object for the signature provided or create a new CirFunction
        /// object and return it
        /// </summary>
        /// <param name="cirData"></param>
        /// <param name="functionSignature"></param>
        /// <param name="functionType"></param>
        /// <returns></returns>
        public ICirFunction getCirFunction(ICirData cirData, string functionSignature, string functionType)
        {
            try
            {
            
                if (cirData.dFunctions_bySignature.ContainsKey(functionSignature))
                    return cirData.dFunctions_bySignature[functionSignature];

                // create the function reference                
                var newCirFunction = new CirFunction(functionSignature);
                cirData.dFunctions_bySignature.Add(functionSignature, newCirFunction);

                // add it to the respective CirClas

                var cirClass = getCirClass(cirData,functionType);
                cirClass.dFunctions.Add(functionSignature, newCirFunction);

                return newCirFunction;
            }
            catch (Exception ex)
            {
                DI.log.ex(ex, "in CirFactory.getCirFunction", true);
                return null;
            }
        }
开发者ID:o2platform,项目名称:O2.Platform.Projects.Misc_and_Legacy,代码行数:33,代码来源:CirFactory.cs


示例2: mapClass

        public void mapClass(ICirClass cirClass, ICirData _cirData, bool clearPreviousList)
        {

            cirData = _cirData;
            cirRootClass = cirClass;
            mapCurrentClass(clearPreviousList);
        }
开发者ID:pusp,项目名称:o2platform,代码行数:7,代码来源:ascx_SpringMvcAutoBindClassesView.Controllers.cs


示例3: Test_processTypeDefinition

        public void Test_processTypeDefinition(ICirData cirData, ICirClass cirClass)
        {
            Assert.That(cirClass != null, "cirClass was null");
            Assert.That(cirClass.dFunctions.Count == 7, "cirClass.dFunctions.Count != 7 , it was " + cirClass.dFunctions.Count);

            // check if we can get the functions by name
            ICirFunction testMethodA = cirClass.getFunction("testMethodA()");
            Assert.IsNotNull(testMethodA, "could not get testMethodA from cirClass object");
            ICirFunction testMethodB = cirClass.getFunction("testMethodB()");
            Assert.IsNotNull(testMethodB, "could not get testMethodB from cirClass object");
            Assert.IsNotNull(cirClass.getFunction("testMethodB(System.String)"),
                             "could not get testMethodB(string) from cirClass object");
            Assert.IsNotNull(cirClass.getFunction("testMethodD(System.String,System.Type)"),
                             "could not get testMethodD(System.String,System.Type) from cirClass object");

            ICirFunction testMethodC = cirClass.getFunction("testMethodC");

            // check if we have the calls and isCalledBy
            Assert.That(testMethodA.FunctionsCalledUniqueList.Contains(testMethodB),
                        "failed on testMethodA.FunctionsCalledUniqueList.Contains(testMethodB)");
            Assert.That(testMethodA.FunctionsCalledUniqueList.Contains(testMethodC),
                        "failed on testMethodA.FunctionsCalledUniqueList.Contains(testMethodB)");
            var found = false;
            foreach (var calledByFunction in testMethodB.FunctionIsCalledBy)
                if (calledByFunction.cirFunction == testMethodA)
                    found = true;
            Assert.That(found,
                        "failed on testMethodB.FunctionIsCalledBy.Contains(testMethodA)");
        }
开发者ID:pusp,项目名称:o2platform,代码行数:29,代码来源:Test_CirCreatorEngineDotNet.cs


示例4: findClassesThatImplementTheSpringMvc

        public static List<String> findClassesThatImplementTheSpringMvc(ICirData fadCirData)
        {
            var lResolvedClasses = new List<String>();
            if (fadCirData == null)
            {
                DI.log.error("in findClassesThatImplementTheSpringMvc: CirData object is null");
                return lResolvedClasses;
            }

            var sSpringMvcClass = "org.springframework.web.servlet.mvc";

            var dClassesThatSuperClassSpringMVC = new Dictionary<String, ICirClass>();


            // first find which classes direcly implement a Spring MVC 
            foreach (ICirClass ccCirClass in fadCirData.dClasses_bySignature.Values)
            {
                foreach (String sSuperClass in ccCirClass.dSuperClasses.Keys)
                {
                    String sSuperClassSignature = ccCirClass.dSuperClasses[sSuperClass].Signature;
                    if (sSuperClassSignature.IndexOf(sSpringMvcClass) > -1)
                        // && ccCirClass.sSignature.IndexOf(sBaseClass) > -1)
                    {
                        String sSignatureAndSuperClass = String.Format("{0} <-- {1}", ccCirClass.Signature,
                                                                       ccCirClass.dSuperClasses[sSuperClass].Signature);
                        dClassesThatSuperClassSpringMVC.Add(sSignatureAndSuperClass, ccCirClass);
                        // DI.log.debug("{0} <-- {1}" , ccCirClass.sSignature, ccCirClass.dSuperClasses[sSuperClass].sSignature);									
                    }
                }
            }
            findAllClassesThatSuperClassProvidedList_recursive(dClassesThatSuperClassSpringMVC, lResolvedClasses);
            DI.log.debug("There are {0} classes that implement Spring MVC", lResolvedClasses.Count);
            return lResolvedClasses;
            // DI.log.debug("Loaded with {0} classes", fadCirData.dClasses_bySignature.Keys.Count);		
        }
开发者ID:o2platform,项目名称:O2.Platform.Projects.Misc_and_Legacy,代码行数:35,代码来源:UsingCirData.cs


示例5: setCirData

 public static KM_CirAction setCirData(ICirData cirData)
 {
     var kmCirAction = new KM_CirAction();
     kmCirAction.CirData = cirData;
     kmCirAction.CirAction = IM_CirActions.setCirData;
     return kmCirAction;
 }
开发者ID:njmube,项目名称:FluentSharp,代码行数:7,代码来源:KM_CirAction.cs


示例6: setCirData

 public static KM_CirAction setCirData(ICirData cirData)
 {
     var kmCirAction = new KM_CirAction
                           {
                               CirAction = IM_CirActions.setCirData,
                               CirData = cirData
                           };
     return kmCirAction;
 }
开发者ID:SiGhTfOrbACQ,项目名称:O2.FluentSharp,代码行数:9,代码来源:KM_CirAction.cs


示例7: resolveDbId

 public static void resolveDbId(ICirData cirData)
 {
     if (cirData.lFiles.Count > 0) // && (sDbId == "" || sDbId == null))
         foreach (String sFile in cirData.lFiles)
         {
             String sResult = CirDumpsUtils.fromFileExtension_get_DbId(Path.GetExtension(sFile));
             if (!string.IsNullOrEmpty(sResult))
             {
                 cirData.sDbId = sResult;
                 return;
             }
         }
 }
开发者ID:pusp,项目名称:o2platform,代码行数:13,代码来源:CirDataUtils.cs


示例8: mapInterfaces

        public static List<IO2Finding> mapInterfaces(List<IO2Finding> o2Findings, List<IO2Finding> sourcesMappedToInterfaces, ICirData cirData)
        {
            if (o2Findings == null || cirData == null)
                return null;
            //var sourcesMappedToInterfaces = getSourcesMappedToInterfaces(o2Findings, cirData);
            var sources = getSources(sourcesMappedToInterfaces);
            var lostSinks = getLostSinks(o2Findings);//o2Assessment.o2Findings);
            //var sources = getSources(o2Assessment.o2Findings);

            DI.log.info("There are {0} unique Lost Sinks", lostSinks.Count);
            DI.log.info("There are {0} unique Sources", sources.Count);
            var joinedFindings = mapSinksToSources(lostSinks, sources);
            return joinedFindings;
        }
开发者ID:o2platform,项目名称:O2.Platform.Projects.Misc_and_Legacy,代码行数:14,代码来源:JoinFindings_OnInterfaces.cs


示例9: processMemberReference

 private ICirFunction processMemberReference(ICirData cirData, IMemberReference memberDefinition, SequencePoint sequencePoint)
 {
     switch (memberDefinition.GetType().Name)
     {
         case "MethodReference":
             return processMethodReference(cirData, (MethodReference)memberDefinition, sequencePoint);
         case "MethodDefinition":
             return processMethodDefinition(cirData, (MethodDefinition)memberDefinition, sequencePoint);
         default:
             DI.log.error("in CirFactory.processMethodMember, unsupported MethodMember: {0}", memberDefinition.GetType().Name);
             break;
     }
     return null;
 }
开发者ID:o2platform,项目名称:O2.Platform.Projects.Misc_and_Legacy,代码行数:14,代码来源:CirFactory.cs


示例10: createListOfNormalizedTraces

        public static List<TreeNode> createListOfNormalizedTraces(
            string textFilter, Dictionary<String, O2TraceBlock_OunceV6> dRawData,
            ICirData cdCirData, Dictionary<String, O2TraceBlock_OunceV6> dO2TraceBlock, 
            bool bOnlyProcessTracesWithNoCallers)
        {
            //var tvCreatedTraces_NormalizedTracesView = new TreeView();
            var normalizedTracesView = analyzer.ResolveNormalizeTraceFor(textFilter, dRawData,
                                                                         cdCirData, dO2TraceBlock,
                                                                         bOnlyProcessTracesWithNoCallers);


            DI.log.info("getListOfNormalizedTraces");
            List<TreeNode> ltnNormalizedTraces = analyzer.getListOfNormalizedTraces(normalizedTracesView);
            return ltnNormalizedTraces;
        }
开发者ID:pusp,项目名称:o2platform,代码行数:15,代码来源:JoinTracesUtils.cs


示例11: getCirClass

 /// <summary>
 /// this will return the current CirClass object for the signature provided or create a new CirClass
 /// object and return it 
 /// </summary>
 /// <param name="cirData"></param>
 /// <param name="classSignature"></param>
 /// <returns></returns>
 private static ICirClass getCirClass(ICirData cirData, string classSignature)
 {
     try
     {
         if (cirData.dClasses_bySignature.ContainsKey(classSignature))
             return cirData.dClasses_bySignature[classSignature];
         var newCirClass = new CirClass(classSignature);
         cirData.dClasses_bySignature.Add(classSignature, newCirClass);
         return newCirClass;
     }
     catch (Exception ex)
     {
         DI.log.ex(ex, "in CirFactory.getCirClass", true);
         return null;
     }
 }
开发者ID:o2platform,项目名称:O2.Platform.Projects.Misc_and_Legacy,代码行数:23,代码来源:CirFactory.cs


示例12: getTreeNodeWithAutoWiredObject

        public static TreeNode getTreeNodeWithAutoWiredObject(ICirData cirData, string targetFunction, SpringMvcParameter springMvcParameter, int parameterIndex)
        {
            try
            {

                if (cirData != null && cirData.dFunctions_bySignature.ContainsKey(targetFunction))
                {
                    var cirFunction = cirData.dFunctions_bySignature[targetFunction];
                    if (cirFunction.FunctionParameters.Count <= parameterIndex)
                    {
                        var filteredSignature = new FilteredSignature(targetFunction);
                        if (filteredSignature.lsParameters_Parsed.Count > parameterIndex)
                            springMvcParameter.className = filteredSignature.lsParameters_Parsed[parameterIndex];
                        else
                            DI.log.error("in getTreeNodeWithAutoWiredObject, requested parameter index not found in function: {0}", targetFunction);
                    }
                    else
                    {
                        var functionParameter = cirFunction.FunctionParameters[parameterIndex];
                        springMvcParameter.className = functionParameter.ParameterType.Replace("&", "");
                    }
                    if (springMvcParameter.className != "")
                    {

                        // Hack to handle int Java mappings 
                        if (springMvcParameter.className == "int")
                            springMvcParameter.className = "java.lang.Integer";
                        if (cirData.dClasses_bySignature.ContainsKey(springMvcParameter.className))
                        {
                            var childNodeText = string.Format("{0} - {1} - {2}", springMvcParameter.autoWiredMethodUsed, springMvcParameter.name, springMvcParameter.className);
                            return O2Forms.newTreeNode(childNodeText, childNodeText, 0, cirData.dClasses_bySignature[springMvcParameter.className]);
                        }

                        DI.log.error("in getTreeNodeWithAutoWiredObject, parameter type not found in cirData class list:{0}", springMvcParameter.className);
                    }
                }
                else
                    DI.log.error("in getTreeNodeWithAutoWiredObject, loaded cirData did not contained signature :{0}", targetFunction);
            }
            catch (Exception ex)
            {
                DI.log.error("in getTreeNodeWithAutoWiredObject:", ex.Message);
            }
            return new TreeNode();
        }
开发者ID:o2platform,项目名称:O2.Platform.Projects.Misc_and_Legacy,代码行数:45,代码来源:SpringMvcUtils.cs


示例13: addIsCalledByMappings

        public static void addIsCalledByMappings(ICirData cirData, ICirData fcdO2CirDataToProcess)
        {
            DI.log.debug("in addIsCalledByMappings");

            foreach (CirFunction cfCirFunction in fcdO2CirDataToProcess.dFunctions_bySignature.Values)
                foreach (ICirFunctionCall cirFunctionCalled in cfCirFunction.FunctionsCalled)
                {
                    if (cirData.dFunctions_bySignature.ContainsKey(cirFunctionCalled.cirFunction.FunctionSignature))
                    {
                        if (cirData.dFunctions_bySignature[cirFunctionCalled.cirFunction.FunctionSignature].HasControlFlowGraph)            // not sure about this
                        {
                           /* DI.log.info("Added isCalledByMapping: {0} is called by {1}",
                                        cirData.dFunctions_bySignature[cirFunctionCalled.FunctionSignature].FunctionSignature, cfCirFunction.FunctionSignature);*/
                            cirData.dFunctions_bySignature[cirFunctionCalled.cirFunction.FunctionSignature].FunctionIsCalledBy.Add(cirFunctionCalled);
                        }
                    }
                }
        }
开发者ID:pusp,项目名称:o2platform,代码行数:18,代码来源:CirDataUtils.cs


示例14: fixFunctionsCalledXRefs

 private static void fixFunctionsCalledXRefs(ICirData cirData)
 {
     if (cirData != null && cirData.dFunctions_bySignature != null)
     {
         var timer = new O2Timer("fixFunctionsCalledXRefs").start();
         foreach (CirFunction cirFunction in cirData.dFunctions_bySignature.Values)
         {
             if (cirFunction.FunctionName == null)
             {
                 var filteredSignature = new FilteredSignature(cirFunction.FunctionSignature);
                 cirFunction.FunctionName = filteredSignature.sFunctionName;
                 cirFunction.FunctionNameAndParameters = filteredSignature.sFunctionNameAndParams;
                 cirFunction.ClassNameFunctionNameAndParameters = filteredSignature.sFunctionClass + "." +
                                                                  filteredSignature.sFunctionNameAndParams;
             }
         }
         timer.stop();
     }
 }
开发者ID:o2platform,项目名称:O2.Platform.Projects.Misc_and_Legacy,代码行数:19,代码来源:CirLoad.cs


示例15: foreach

        // this doesn't seem to be working since when I save this back into disk, the size of the .CirData file increases!
/*        public static void removeClassesWithNoControlFlowGraphs(ICirData cirData)
        {
            cirData.dClasses_bySymbolDef.Clear();
            cirData.dFunctions_bySymbolDef.Clear();
            cirData.dSymbols.Clear();
            var signaturesToRemove = new List<String>();
            int originalSignatureCount = cirData.dClasses_bySignature.Keys.Count;
            // remove CirClasses with no ControlFlowGraphs
            foreach (CirClass cirClass in cirData.dClasses_bySignature.Values)
                if (false == cirClass.bClassHasMethodsWithControlFlowGraphs)
                    signaturesToRemove.Add(cirClass.Signature);
            foreach (string signature in signaturesToRemove)
                cirData.dClasses_bySignature.Remove(signature);
            DI.log.info(
                "Originally there were {0} CirClass Objects in CirData file and now there are {1} ({2} were deleted)",
                originalSignatureCount, cirData.dClasses_bySignature.Keys.Count,
                originalSignatureCount - cirData.dClasses_bySignature.Keys.Count);

            // remove CirFunctions with no ControlFlowGraphs
            signaturesToRemove.Clear();
            originalSignatureCount = cirData.dFunctions_bySignature.Values.Count;
            foreach (CirFunction cirFunction in cirData.dFunctions_bySignature.Values)
                if (false == cirFunction.HasControlFlowGraph)
                    signaturesToRemove.Add(cirFunction.FunctionSignature);
            foreach (string signature in signaturesToRemove)
                cirData.dFunctions_bySignature.Remove(signature);
            DI.log.info(
                "Originally there were {0} CirFunction Objects in CirData file and now there are {1} ({2} were deleted)",
                originalSignatureCount, cirData.dFunctions_bySignature.Keys.Count,
                originalSignatureCount - cirData.dFunctions_bySignature.Keys.Count);
        }*/

        public static void saveSerializedO2CirDataObjectToFile(ICirData cirData, String sTargetFile)
        {
            if (cirData == null)
                return;

            if (sTargetFile == "")
                sTargetFile = DI.config.TempFileNameInTempDirectory + ".xml";

            try
            {
                var bfBinaryFormatter = new BinaryFormatter();

                var fsFileStream = new FileStream(sTargetFile, FileMode.Create);
                bfBinaryFormatter.Serialize(fsFileStream, cirData);
                fsFileStream.Close();
                DI.log.debug("Serialized O2CirData Saved to: {0}", sTargetFile);
            }
            catch (Exception ex)
            {
                DI.log.error("In saveSerializedO2CirDataObjectToFile: {0}", ex.Message);
            }
        }
开发者ID:pusp,项目名称:o2platform,代码行数:55,代码来源:CirDataUtils.cs


示例16: processAssemblyDefinition

        public void processAssemblyDefinition(ICirData cirData, AssemblyDefinition assemblyDefinition, string assemblyPath, bool decompileCodeIfNoPdb)
        {
            var tempSourceCodeFolder = DI.config.getTempFolderInTempDirectory("_O2_DecompiledDotNet_" + assemblyDefinition.Name.Name);
            if (cirData != null && assemblyDefinition != null)
            {                
                var typesInAssembly = CecilUtils.getTypes(assemblyDefinition);
                loadAndMapSymbols(assemblyDefinition, assemblyPath, decompileCodeIfNoPdb, tempSourceCodeFolder);
                // first map all types
                foreach (var typeInAssembly in typesInAssembly)
                    processTypeDefinition(cirData, typeInAssembly);

                //then map their interfaces
                foreach (var typeInAssembly in typesInAssembly)
                {
                    mapTypeInterfaces(cirData, typeInAssembly);                    
                }

                // finally decompile the code if needed
                /*if (decompileCodeIfNoPdb)
                {
                    var sourceCodeFolder = DI.config.getTempFolderInTempDirectory("_O2_DecompiledDotNet_" +assemblyDefinition.Name.Name);
                    foreach (var cirClass in cirData.dClasses_bySignature.Values)
                        if(cirClass.
                        new CecilDecompiler().decompile(typeInAssembly, sourceCodeFolder)
                }*/
            }
            else
                DI.log.error("in processAssemblyDefinition, either cirData or assemblyDefinition was null");
        }
开发者ID:o2platform,项目名称:O2.Platform.Projects.Misc_and_Legacy,代码行数:29,代码来源:CirFactory.cs


示例17: showClass

 public void showClass(ICirClass cirClass, ICirData _cirData)
 {
     mapClass(cirClass, _cirData);
 }
开发者ID:pusp,项目名称:o2platform,代码行数:4,代码来源:ascx_SpringMvcAutoBindClassesView.Controllers.cs


示例18: processMethodReference

        public ICirFunction processMethodReference(ICirData cirData, MethodReference methodReference, SequencePoint sequencePoint)
        {
            try
            {                
                var functionSignature = CirFactoryUtils.getFunctionUniqueSignatureFromMethodReference(methodReference);
                var functionType = CirFactoryUtils.getTypeUniqueSignatureFromTypeReference(methodReference.DeclaringType);
                var cirFunction = getCirFunction(cirData, functionSignature, functionType);

                cirFunction.CecilSignature = methodReference.ToString();
                cirFunction.ReturnType = methodReference.ReturnType.ReturnType.FullName;
                cirFunction.ParentClass = getCirClass(cirData, CirFactoryUtils.getTypeUniqueSignatureFromTypeReference(methodReference.DeclaringType));
                cirFunction.ParentClassFullName = methodReference.DeclaringType.FullName;
                cirFunction.ParentClassName = methodReference.DeclaringType.Name;
                //
                cirFunction.Module = (methodReference.DeclaringType.Module != null) ? methodReference.DeclaringType.Module.Assembly.ToString() : "[NullModule]";
                //cirFunction.Module = (methodReference.DeclaringType.Module != null) ? methodReference.DeclaringType.Module.Name : "[NullModule]";
                cirFunction.FunctionName = methodReference.Name;
                cirFunction.FunctionNameAndParameters = CecilUtils.getMethodNameAndParameters(methodReference);                

                cirFunction.ClassNameFunctionNameAndParameters = string.Format("{0}.{1}",
                                                                               cirFunction.ParentClassFullName,
                                                                               cirFunction.FunctionNameAndParameters);
                cirFunction.SymbolDef = Guid.NewGuid().ToString();
                /*if (sequencePoint != null)
                {
                    if (string.IsNullOrEmpty(cirFunction.File) == false)
                    { 
                    }
                    cirFunction.File = sequencePoint.Document.Url;
                    cirFunction.FileLine = sequencePoint.StartColumn.ToString();
                }*/
                
               
                //methodReference.ReturnType  // to implement since we need to add reference to a CirClass
                return cirFunction;
            }
            catch (Exception ex)
            {
                DI.log.ex(ex, "in CirFactory.processMethodReference", true);
                return null;
            }

        }
开发者ID:o2platform,项目名称:O2.Platform.Projects.Misc_and_Legacy,代码行数:43,代码来源:CirFactory.cs


示例19: processMethodDefinition

        public ICirFunction processMethodDefinition(ICirData cirData, MethodDefinition methodDefinition, SequencePoint sequencePoint)
        {
            try
            {
                //var functionSignature = methodDefinition.ToString();
                var functionSignature = CirFactoryUtils.getFunctionUniqueSignatureFromMethodReference(methodDefinition);
                var functionClass = CirFactoryUtils.getTypeUniqueSignatureFromTypeReference(methodDefinition.DeclaringType);
                var cirFunction = getCirFunction(cirData, functionSignature, functionClass);
                if (false == cirFunction.HasBeenProcessedByCirFactory)
                {
                    if (methodDefinition.CustomAttributes != null && methodDefinition.CustomAttributes.Count > 0)
                    {
                        foreach (CustomAttribute customAttribute in methodDefinition.CustomAttributes)
                        {
                            var constructorSignature = CirFactoryUtils.getFunctionUniqueSignatureFromMethodReference(customAttribute.Constructor);
                            var cirAttribute = new CirAttribute(constructorSignature);
                            foreach (var constructorParameter in customAttribute.ConstructorParameters)
                            {
                                var type = constructorParameter.GetType().FullName;
                            }
                            if (customAttribute.Fields.Count > 0 || customAttribute.Properties.Count > 0)
                            {
                            }
                           // PublicDI.log.debug("Added attribute {0} to {1}", customAttribute.Constructor.Name, cirFunction.FunctionName);
                            cirFunction.FunctionAttributes.Add(cirAttribute);
                        }
                    }
                    

                    // map the common values with MethodReference
                    processMethodReference(cirData, methodDefinition, sequencePoint);

                    cirFunction.HasBeenProcessedByCirFactory = true;  // we need to put this in here or we will have an infinite loop on recursive functions
                    cirFunction.HasControlFlowGraph = true;           // ControlFlowGraph is use by the Viewers to determine if we have more than just a reference to this method
                    cirFunction.ParentClass.bClassHasMethodsWithControlFlowGraphs = true;  // also mark the parent class

                    cirFunction.IsStatic = methodDefinition.IsStatic;
                    cirFunction.IsUnmanaged = methodDefinition.IsUnmanaged;
                    cirFunction.IsUnmanagedExport = methodDefinition.IsUnmanagedExport;
                    cirFunction.IsVirtual = methodDefinition.IsVirtual;
                    cirFunction.IsSetter = methodDefinition.IsSetter;
                    cirFunction.IsGetter = methodDefinition.IsGetter;
                    cirFunction.IsRuntime = methodDefinition.IsRuntime;
                    cirFunction.IsPublic = methodDefinition.IsPublic;
                    cirFunction.IsPrivate = methodDefinition.IsPrivate;
                    cirFunction.IsPInvokeImpl = methodDefinition.IsPInvokeImpl;
                    cirFunction.IsNative = methodDefinition.IsNative;
                    cirFunction.IsManaged = methodDefinition.IsManaged;
                    cirFunction.IsInternalCall = methodDefinition.IsInternalCall;
                    cirFunction.IsIL = methodDefinition.IsIL;
                    cirFunction.IsConstructor = methodDefinition.IsConstructor;
                    cirFunction.IsAbstract = methodDefinition.IsAbstract;
                    cirFunction.HasSecurity = methodDefinition.HasSecurity;
                    cirFunction.HasBody = methodDefinition.HasBody;

                    // try to find the location of the current method by going for the first line of the first method
                    if (methodDefinition.HasBody)
                        foreach (Instruction instruction in methodDefinition.Body.Instructions)
                            if (instruction.SequencePoint != null )
                            {
                                cirFunction.File = instruction.SequencePoint.Document.Url;
                                if (instruction.SequencePoint.StartLine == 16707566) // means there is no source code ref                                
                                    cirFunction.FileLine = "0";
                                else
                                    cirFunction.FileLine = instruction.SequencePoint.StartLine.ToString();
                                break;
                            }
                    
                    // map method parameters (this could be on the MethodReference but if so we would have to check for doing it more than once:
                    foreach (ParameterDefinition parameter in methodDefinition.Parameters)
                    {
                        ICirFunctionParameter functionParameter = new CirFunctionParameter
                        {
                            ParameterName = parameter.ToString(),
                            ParameterType = parameter.ParameterType.FullName,
                            Constant = (parameter.Constant != null) ? parameter.Constant.ToString() : "",
                            HasConstant = parameter.HasConstant,
                            HasDefault = parameter.HasDefault,
                            Method = parameter.Method.ToString()
                        };

                        cirFunction.FunctionParameters.Add(functionParameter);
                    }

                    // map the calls made and the IsCalledBy                   
                    foreach (var methodCalled in CecilUtils.getMethodsCalledInsideMethod(methodDefinition))
                    {
                        ICirFunction cirCalledFunction = processMemberReference(cirData, methodCalled.memberReference, methodCalled.sequencePoint);

                        if (cirCalledFunction != null)
                        {
                            // store the fucntion called sequence
                            cirFunction.FunctionsCalled.Add(new CirFunctionCall(cirCalledFunction,methodCalled.sequencePoint)); 
                            // store the unique list of funcions called
                            if (false == cirFunction.FunctionsCalledUniqueList.Contains(cirCalledFunction))
                                cirFunction.FunctionsCalledUniqueList.Add(cirCalledFunction);

                            // map the FunctionCalled and FunctionIsCalledBy

                            var cirFunctionCall = new CirFunctionCall(cirCalledFunction, sequencePoint);
//.........这里部分代码省略.........
开发者ID:o2platform,项目名称:O2.Platform.Projects.Misc_and_Legacy,代码行数:101,代码来源:CirFactory.cs


示例20: processAssemblyAndSaveAsCirDataFile

 internal string processAssemblyAndSaveAsCirDataFile(ICirData cirData, string fileToProcess, string directoryToSaveCirDataFile, bool decompileCodeIfNoPdb)
 {
     processAssemblyDefinition(cirData, fileToProcess, decompileCodeIfNoPdb);
     if (cirData.dClasses_bySignature.Count == 0)
         DI.log.error("There were no classes in created cirData file, so canceling save");
     else
     {
         Files.checkIfDirectoryExistsAndCreateIfNot(directoryToSaveCirDataFile);
         var savedFileName = Path.Combine(directoryToSaveCirDataFile,Path.GetFileName(fileToProcess) + ".CirData");
         CirDataUtils.saveSerializedO2CirDataObjectToFile(cirData, savedFileName);
         return savedFileName;
     }
     return "";
 }
开发者ID:o2platform,项目名称:O2.Platform.Projects.Misc_and_Legacy,代码行数:14,代码来源:CirFactory.cs



注:本文中的ICirData类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C# IClaimsPrincipal类代码示例发布时间:2022-05-24
下一篇:
C# ICipherParameters类代码示例发布时间:2022-05-24
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap