Exemplo n.º 1
0
        public void GenerarSalidaCM(HashSet <string> InventarioCM, List <string> Archivos, string App, ProcesoDto pdt)
        {
            ProcesoAvanceDto pdtoA  = new ProcesoAvanceDto();
            Proceso          proc   = new Proceso();
            double           total  = Archivos.Count();
            double           avance = 27 / total;

            for (int i = 0; i <= Archivos.Count() - 1; i++)
            {
                //Aquí van a ir los parametros para iniciar
                string      Ruta       = Archivos[i];
                string      Archivo    = Path.GetFileName(Ruta);
                int         NoLinea    = 0;
                RevisaLinea datosLinea = new RevisaLinea();

                //Empezar a leer el archivo
                using (StreamReader sr = new StreamReader(Ruta))
                {
                    while (sr.Peek() >= 0)
                    {
                        string lineaCodigo = sr.ReadLine().Trim();

                        //Contar No. Linea
                        ++NoLinea;

                        if (NoLinea == 1639)
                        {
                            NoLinea = NoLinea;
                        }

                        if (!String.IsNullOrEmpty(lineaCodigo))
                        {
                            //Actualizar el nuevo VerificaComentarios
                            lineaCodigo = VerCom.BuscarComentario(lineaCodigo);
                            if (!String.IsNullOrEmpty(lineaCodigo))
                            {
                                datosLinea.ObtenerSalida(lineaCodigo, Archivo, InventarioCM, Resultado, NoLinea, Ruta, Librerias);
                            }
                        }
                    }
                }
                proc.SeteaAvance("En Proceso", "OK", "OK", Math.Round((72 + avance * i), 0).ToString(), "70", "", "Recuperando Datos", pdtoA, pdt);
                proc.ActualizaProcesoAvance(pdtoA, pdt);
            }

            proc.SeteaAvance("En Proceso", "OK", "OK", "OK", "70", "", "Recuperando Datos", pdtoA, pdt);
            proc.ActualizaProcesoAvance(pdtoA, pdt);

            GuardaProcesoCM(pdtoA, pdt, Resultado);
            //System.IO.File.WriteAllLines(@"C:\INFONAVIT\ClasesMetodos.txt", Resultado);
        }
Exemplo n.º 2
0
 //Obtener los datos de la Función actual
 private void ObtenerDatosFuncion(RevisaLinea DatosLinea, string LineaCodigo,
                                  string LineaOriginal, string Archivo)
 {
     try
     {
         DatosLinea.TipoPadre = "Clase";
         DatosLinea.BibPadre  = Archivo;
         DatosLinea.ObjPadre  = Archivo;
         string Funcion = em.ExtraerNombreFuncion(LineaOriginal);
         DatosLinea.TipoHijo = "Funcion";
         DatosLinea.BibHijo  = Archivo;
         DatosLinea.ObjHijo  = Funcion;
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex);
     }
 }
Exemplo n.º 3
0
        //Obtener los datos del Evento actual
        private void ObtenerDatosEvento(RevisaLinea DatosLinea, string LineaCodigo,
                                        string LineaOriginal, string Archivo)
        {
            try
            {
                DatosLinea.TipoPadre = "Archivo";
                DatosLinea.BibPadre  = Archivo;
                DatosLinea.ObjPadre  = Archivo;

                DatosLinea.TipoHijo = "Evento";
                DatosLinea.BibHijo  = Archivo;
                string Evento = em.ExtraerNombreEvento(LineaOriginal);
                DatosLinea.ObjHijo = Evento;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
        }
Exemplo n.º 4
0
        public HashSet <string> GenerarInventarioCM(string Ruta, ProcesoDto pdto)
        {
            RevisaLinea DatosInventario = new RevisaLinea();

            try
            {
                string Archivo = Path.GetFileName(Ruta);
                Archivo = Regex.Replace(Archivo, @"\.\w+", string.Empty).Trim();
                using (StreamReader sr = new StreamReader(Ruta))
                {
                    while (sr.Peek() >= 0)
                    {
                        string lineaCodigo = sr.ReadLine().Trim();

                        if (!String.IsNullOrEmpty(lineaCodigo))
                        {
                            //if (lineaCodigo.IndexOf("oWorkgroup") > -1)
                            //    lineaCodigo = lineaCodigo;

                            lineaCodigo = VerCom.BuscarComentario(lineaCodigo);
                            if (!String.IsNullOrEmpty(lineaCodigo))
                            {
                                DatosInventario = DatosInventario.ObtenerInventario(lineaCodigo, Librerias);
                                if (DatosInventario.EsValido)
                                {
                                    InventarioCM.Add((string.IsNullOrEmpty(DatosInventario.NombreEspacio) ?
                                                      Archivo : DatosInventario.NombreEspacio) + "|" + DatosInventario.Nombre +
                                                     "|" + DatosInventario.Tipo);
                                }
                            }
                        }
                    }
                }
            }catch (Exception Err) {
                EscribeLogWS("ParseadorCM.GenerarInventarioCM " + Err.Message.ToString());
                ProcesoAvanceDto pdtoA = new ProcesoAvanceDto();
                Proceso          proc  = new Proceso();
                proc.SeteaAvance("Error", "OK", "X", "--", "--", Err.Message.ToString(), "Error al realizar la descompresión del archivo", pdtoA, pdto);
                proc.ActualizaProcesoAvance(pdtoA, pdto);
            }
            return(InventarioCM);
        }
Exemplo n.º 5
0
        //Obtener los datos del Objeto actual
        private void ObtenerDatosObjeto(RevisaLinea DatosLinea, string LineaCodigo,
                                        string LineaOriginal, string Archivo)
        {
            try
            {
                DatosLinea.TipoPadre = "Metodo";
                DatosLinea.BibPadre  = Archivo;
                string Metodo = em.ExtraerNombreMetodo(LineaOriginal);
                DatosLinea.ObjPadre = Metodo;

                DatosLinea.TipoHijo = "Objeto";
                DatosLinea.BibHijo  = Metodo;
                string Objeto = em.ExtraerNombreObjeto(LineaOriginal);
                DatosLinea.ObjHijo = Objeto;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
        }
Exemplo n.º 6
0
        //Obtener los datos de la Clase actual
        private void ObtenerDatosClase(RevisaLinea DatosLinea, string LineaOriginal,
                                       string Archivo, string Extension)
        {
            try
            {
                if (!string.IsNullOrEmpty(UltimoMetodo) && Nivel > 1)
                {
                    DatosLinea.TipoPadre = "Metodo";
                    DatosLinea.BibPadre  = Archivo;
                    DatosLinea.ObjPadre  = UltimoMetodo;
                }
                else
                {
                    DatosLinea.TipoPadre = Extension;
                    DatosLinea.BibPadre  = Archivo;
                    DatosLinea.ObjPadre  = Archivo;
                }
                DatosLinea.TipoHijo = "Clase";

                if (LineaOriginal.IndexOf("javascript") > -1)
                {
                    DatosLinea.TipoHijo = "JavaScript";
                }

                DatosLinea.BibHijo = Archivo;
                string Clase = em.ExtraerNombreClase(LineaOriginal);
                DatosLinea.ObjHijo = Clase;

                //Genera la lista de Clases para controlar Clases dentro de Metodos
                if (!string.IsNullOrEmpty(Clase))
                {
                    ListaClases.Add(Clase + "|" + Nivel);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
        }
Exemplo n.º 7
0
        //Obtener los datos del Método actual
        private void ObtenerDatosMetodo(RevisaLinea DatosLinea, string LineaCodigo,
                                        string LineaOriginal, string Archivo)
        {
            try
            {
                if (ListaClases.Count > 0)
                {
                    string[] Clase = ListaClases.ElementAt(ListaClases.Count - 1).Split('|');

                    DatosLinea.TipoPadre = "Clase";
                    DatosLinea.BibPadre  = Archivo;
                    DatosLinea.ObjPadre  = Clase[0];
                    string Metodo = em.ExtraerNombreMetodo(LineaOriginal);
                    DatosLinea.TipoHijo = "Metodo";

                    if (LineaCodigo.IndexOf("eventargs") > -1)
                    {
                        DatosLinea.TipoHijo = "Evento";
                    }

                    if (Metodo == Clase[0])
                    {
                        DatosLinea.TipoHijo = "Constructor";
                    }

                    DatosLinea.BibHijo = Clase[0];
                    DatosLinea.ObjHijo = Metodo;

                    UltimoMetodo = Metodo;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
        }
Exemplo n.º 8
0
        //Obtener los datos de Interface
        private void ObtenerDatosInterface(RevisaLinea DatosLinea, string LineaOriginal,
                                           string Archivo, string Extension)
        {
            try
            {
                DatosLinea.TipoPadre = Extension;
                DatosLinea.BibPadre  = Archivo;
                DatosLinea.ObjPadre  = Archivo;
                DatosLinea.TipoHijo  = "Interface";
                DatosLinea.BibHijo   = Archivo;
                NombreEspacio        = em.ExtraerNombreInterface(LineaOriginal);
                string Interface = NombreEspacio;
                DatosLinea.ObjHijo = Interface;

                if (!string.IsNullOrEmpty(Interface))
                {
                    ListaClases.Add(Interface + "|" + Nivel);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
        }
Exemplo n.º 9
0
        //Obtener los datos del Espacio de Nombres actual
        private void ObtenerDatosEspacioLibreria(RevisaLinea DatosLinea, string LineaCodigo,
                                                 string LineaOriginal, string Archivo, string Extension)
        {
            try
            {
                string Espacio = Regex.Replace(Regex.Replace(LineaOriginal, @"\w+\s", string.Empty), ";",
                                               string.Empty).Trim();
                DatosLinea.TipoPadre = Extension;
                DatosLinea.BibPadre  = Archivo;
                DatosLinea.ObjPadre  = Archivo;
                DatosLinea.TipoHijo  = "Libreria";

                if (LineaCodigo.StartsWith("namespace") || LineaCodigo.StartsWith("package"))
                {
                    DatosLinea.TipoHijo = "Espacio de Nombres";
                }

                Espacio            = Espacio.Replace("= ", string.Empty);
                DatosLinea.BibHijo = Archivo;
                DatosLinea.ObjHijo = Espacio;

                if (LineaCodigo.StartsWith("namespace"))
                {
                    UltimoEspacio = Espacio;
                }

                if (LineaCodigo.StartsWith("package"))
                {
                    UltimoEspacio = Espacio;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
        }
Exemplo n.º 10
0
        //Cuando se encuentra un metodo o una clase pero solo son invocados
        private int ObtenerDatosInvocados(RevisaLinea DatosLinea, string LineaOriginal, string Archivo,
                                          HashSet <string> InventarioCM, List <string> Resultado, int NoLinea, string Ruta,
                                          HashSet <string> Librerias, string Extension, int DependenciaID)
        {
            try
            {
                List <string> Subconjunto;

                if ((LineaOriginal.IndexOf(".class") == -1) && ((LineaOriginal.IndexOf("private") > -1) ||
                                                                (LineaOriginal.IndexOf("public") > -1) || (LineaOriginal.IndexOf("protected") > -1) ||
                                                                (LineaOriginal.IndexOf("final") > -1) ||
                                                                (LineaOriginal.IndexOf("static") > -1) ||
                                                                (LineaOriginal.IndexOf("= new") > -1)))
                {
                    string Linea    = LineaOriginal.Replace(" final", string.Empty);
                    bool   Variable = EsVariable(LineaOriginal, 0);
                    Regex  Regex    = new Regex(@"(private \s\w+\s\w+)|(public \s\w+\s\w+)|(protected \s\w+\s\w+)|(private static\s\w+\s\w+)|(public static\s\w+\s\w+)|(protected static\s\w+\s\w+)|(\w+\s\w+|\w+\<\w+\>\s\w+|\w+\[\]\s\w+)\s*= new");
                    Match  Match    = Regex.Match(Linea);
                    if ((Match.Success) && (!Variable))
                    {
                        string Instancia;
                        string Clase;
                        if (LineaOriginal.IndexOf("= new") > -1)
                        {
                            Linea     = Linea.Substring(0, Linea.IndexOf("= new")).Trim();
                            Instancia = Linea.Split(' ').Last();
                            Clase     = Linea.Split(' ').ElementAt(Linea.Split(' ').Length - 2);
                            Clase     = Clase.Replace("[]", string.Empty);

                            foreach (string Libreria in LibreriasArchivo)
                            {
                                string LibreriaAux = Libreria.Split('.').Length <= 1 ? Libreria : Libreria.Split('.').Last();
                                if (LibreriaAux.Length <= 1)
                                {
                                    LibreriaAux = "No Valida";
                                }
                                Regex = new Regex(@"" + LibreriaAux);
                                Match = Regex.Match(LineaOriginal);

                                if (Match.Success)
                                {
                                    string Espacio = Libreria.Split('.').Length == 1 ? Libreria :
                                                     Libreria.Substring(0, Libreria.Length - Libreria.Split('.').Last().Length - 1);

                                    if (!string.IsNullOrEmpty(Clase) && !string.IsNullOrEmpty(Instancia))
                                    {
                                        Instancias.Add(Clase + "|" + Instancia + "|" + Espacio);
                                    }
                                }
                            }
                        }
                        else
                        {
                            Clase = Match.Value.Split(' ').ElementAt(Match.Value.Split(' ').Count() - 2);
                        }

                        if (string.IsNullOrEmpty(UltimoMetodo))
                        {
                            string[] ClaseLista = ListaClases.ElementAt(ListaClases.Count - 1).Split('|');

                            DatosLinea.TipoPadre = "Clase";
                            DatosLinea.BibPadre  = Archivo;
                            DatosLinea.ObjPadre  = ClaseLista[0];
                        }
                        else
                        {
                            DatosLinea.TipoPadre = "Metodo";
                            DatosLinea.BibPadre  = Archivo;
                            DatosLinea.ObjPadre  = UltimoMetodo;
                        }
                        DatosLinea.TipoHijo = "Clase";
                        DatosLinea.BibHijo  = Clase;
                        DatosLinea.ObjHijo  = Clase;

                        Variable = EsVariable(DatosLinea.ObjHijo, 1);
                        if (!string.IsNullOrEmpty(DatosLinea.ObjHijo) && !Variable)
                        {
                            ++DependenciaID;
                            Resultado.Add(DatosLinea.TipoPadre + "|" + DatosLinea.BibPadre + "|" + DatosLinea.ObjPadre + "|" + DatosLinea.TipoHijo + "|" + DatosLinea.BibHijo + "|" + DatosLinea.ObjHijo + "|" + Ruta + "|" + NoLinea + "|" + Extension + "|" + DependenciaID + "|" + UltimoPadre + "|" + LineaOriginal.Replace("|", string.Empty));
                        }
                    }
                }
                else
                {
                    Regex Regex = new Regex(@"\w+\.\w+");
                    Match Match = Regex.Match(LineaOriginal);

                    if (Match.Success)
                    {
                        //Para C#
                        string ObjetoClase   = Match.Value.Split('.').First();
                        string ObjetoMetodo  = Match.Value.Split('.').Last();
                        string ClaseOriginal = string.Empty;
                        Subconjunto = (from ICM in InventarioCM
                                       where ICM.Split('|').First() == ObjetoClase
                                       select ICM).ToList();
                        //Para Java
                        if (Subconjunto.Count == 0)
                        {
                            string Espacio = string.Empty;
                            foreach (string Instancia in Instancias)
                            {
                                if (ObjetoClase == Instancia.Split('|').ElementAt(1).ToString())
                                {
                                    Espacio       = Instancia.Split('|').Last();
                                    ClaseOriginal = Instancia.Split('|').First();
                                }
                            }
                            if (!string.IsNullOrEmpty(Espacio))
                            {
                                Subconjunto = (from ICM in InventarioCM
                                               where ICM.Split('|').First() == Espacio && ICM.Split('|').ElementAt(2) == "Metodo"
                                               select ICM).ToList();
                            }
                        }
                        bool Excepcion = EsExcepcion(LineaOriginal);
                        foreach (string Item in Subconjunto)
                        {
                            Regex = new Regex(@"([^/\\\w<>{}-]|^)" + Item.Split('|').ElementAt(1) + @"([^/\\\w<>{}-]|$)");
                            Match = Regex.Match(LineaOriginal);

                            if ((Match.Success) && (!Excepcion))
                            {
                                if (ListaClases.Count > 0 && Item.Split('|').ElementAt(1) == ObjetoMetodo)
                                {
                                    string[] Clases = ListaClases.ElementAt(ListaClases.Count - 1).Split('|');

                                    DatosLinea.TipoPadre = "Clase";
                                    DatosLinea.BibPadre  = Archivo;
                                    DatosLinea.ObjPadre  = Clases[0];
                                    DatosLinea.TipoHijo  = Item.Split('|').ElementAt(2);
                                    DatosLinea.BibHijo   = string.IsNullOrEmpty(ClaseOriginal) ? Item.Split('|').ElementAt(0) : ClaseOriginal;
                                    DatosLinea.ObjHijo   = Item.Split('|').ElementAt(1);

                                    bool Variable = EsVariable(DatosLinea.ObjHijo, 1);
                                    if (!string.IsNullOrEmpty(DatosLinea.ObjHijo) && !Variable)
                                    {
                                        ++DependenciaID;
                                        Resultado.Add(DatosLinea.TipoPadre + "|" + DatosLinea.BibPadre + "|" + DatosLinea.ObjPadre + "|" + DatosLinea.TipoHijo + "|" + DatosLinea.BibHijo + "|" + DatosLinea.ObjHijo + "|" + Ruta + "|" + NoLinea + "|" + Extension + "|" + DependenciaID + "|" + UltimoPadre + "|" + LineaOriginal.Replace("|", string.Empty));
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        if (Librerias.Count > 0)
                        {
                            foreach (string Libreria in Librerias)
                            {
                                string LibreriaAux = Libreria.Split('.').Length <= 1 ? Libreria : Libreria.Split('.').Last();
                                if (LibreriaAux.Length <= 1)
                                {
                                    LibreriaAux = "No Valida";
                                }
                                Regex = new Regex(@"" + LibreriaAux);
                                Match = Regex.Match(LineaOriginal);

                                if (Match.Success)
                                {
                                    string Espacio = Libreria.Split('.').Length == 1 ? Libreria :
                                                     Libreria.Substring(0, Libreria.Length - Libreria.Split('.').Last().Length - 1);
                                    Regex = new Regex(@"" + Match.Value + @"\s*\w+");
                                    Match = Regex.Match(LineaOriginal);
                                    if (Match.Success && Match.Value.Split(' ').Length > 1)
                                    {
                                        string Instancia      = Match.Value.Split(' ').Last();
                                        string ClaseInstancia = Match.Value.Split(' ').First();

                                        if (!string.IsNullOrEmpty(ClaseInstancia) && !string.IsNullOrEmpty(Instancia))
                                        {
                                            Instancias.Add(ClaseInstancia + "|" + Instancia + "|" + Espacio);
                                        }

                                        if (string.IsNullOrEmpty(UltimoMetodo))
                                        {
                                            string[] ClaseLista = ListaClases.ElementAt(ListaClases.Count - 1).Split('|');

                                            DatosLinea.TipoPadre = "Clase";
                                            DatosLinea.BibPadre  = Archivo;
                                            DatosLinea.ObjPadre  = ClaseLista[0];
                                        }
                                        else
                                        {
                                            DatosLinea.TipoPadre = "Metodo";
                                            DatosLinea.BibPadre  = Archivo;
                                            DatosLinea.ObjPadre  = UltimoMetodo;
                                        }
                                        DatosLinea.TipoHijo = "Clase";
                                        DatosLinea.BibHijo  = ClaseInstancia;
                                        DatosLinea.ObjHijo  = ClaseInstancia;

                                        bool Variable = EsVariable(DatosLinea.ObjHijo, 1);
                                        if (!string.IsNullOrEmpty(DatosLinea.ObjHijo) && !Variable)
                                        {
                                            ++DependenciaID;
                                            Resultado.Add(DatosLinea.TipoPadre + "|" + DatosLinea.BibPadre + "|" + DatosLinea.ObjPadre + "|" + DatosLinea.TipoHijo + "|" + DatosLinea.BibHijo + "|" + DatosLinea.ObjHijo + "|" + Ruta + "|" + NoLinea + "|" + Extension + "|" + DependenciaID + "|" + UltimoPadre + "|" + LineaOriginal.Replace("|", string.Empty));
                                            break;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
            return(DependenciaID);
        }
Exemplo n.º 11
0
        //Genera el inventario de Clases y Metodos para buscar los metodos que solo se invocan en código
        public RevisaLinea ObtenerInventario(string LineaCodigo, HashSet <string> Librerias)
        {
            try
            {
                RevisaLinea DatosInventario = new RevisaLinea();
                EsValido = false;

                LineaCodigo = LineaCodigo.Trim();
                string Linea = LineaCodigo.ToLower();

                if (Linea.StartsWith("using ") || Linea.StartsWith("import ") ||
                    Linea.StartsWith("imports "))
                {
                    string Libreria = Regex.Replace(Regex.Replace(LineaCodigo, @"\w+\s", string.Empty), ";",
                                                    string.Empty).Trim();
                    bool Excepcion = EsExcepcion(Linea);
                    if (!Excepcion)
                    {
                        Librerias.Add(Libreria);
                    }
                }
                else if (Linea.IndexOf("namespace ") > -1 || Linea.IndexOf("package ") > -1)
                {
                    NombreEspacio = em.ExtraerNombreEspacio(LineaCodigo);
                }
                else if (((Linea.IndexOf("class ") >= 0) && (Linea.IndexOf(".class") < 0)) || Linea.IndexOf("javascript") > -1)
                {
                    Nombre = em.ExtraerNombreClase(LineaCodigo);
                    Tipo   = "Clase";
                    if (Nombre != "")
                    {
                        EsValido = true;
                    }
                }
                else if (em.EsFuncion(Linea))
                {
                    Nombre = em.ExtraerNombreFuncion(LineaCodigo);
                    Tipo   = "Funcion";
                    if (Nombre != "")
                    {
                        EsValido = true;
                    }
                }
                else if (em.EsMetodo(Linea))
                {
                    Nombre = em.ExtraerNombreMetodo(LineaCodigo);
                    Tipo   = Linea.IndexOf("eventargs") > -1 ? "Evento" : "Metodo";
                    if (Nombre != "")
                    {
                        EsValido = true;
                    }
                }


                DatosInventario = this;
                return(DatosInventario);
            }
            catch (Exception ex)
            {
                throw new Exception("RevisaLinea.ObtenerInventario ", ex);
            }
        }
Exemplo n.º 12
0
        public RevisaLinea ObtenerSalida(string LineaCodigo, string Archivo, HashSet <string> InventarioCM,
                                         List <string> Resultado, int NoLinea, string Ruta, HashSet <string> Librerias)
        {
            try
            {
                RevisaLinea DatosLinea    = new RevisaLinea();
                string      LineaOriginal = LineaCodigo;
                LineaCodigo   = LineaCodigo.ToLower();
                LineaCodigo   = LineaCodigo.Replace("\t", " ");
                LineaOriginal = LineaOriginal.Replace("\t", " ");

                string Extension = Regex.Replace(Archivo, @"\w+\.", string.Empty).Trim();
                Archivo = Regex.Replace(Archivo, @"\.\w+", string.Empty).Trim();

                if (LineaCodigo.StartsWith("using ") || LineaCodigo.StartsWith("import ") ||
                    LineaCodigo.StartsWith("imports ") || LineaCodigo.StartsWith("namespace ") ||
                    LineaCodigo.StartsWith("package "))
                {
                    bool Excepcion = EsExcepcion(LineaCodigo.ToLower());
                    if (!Excepcion)
                    {
                        ObtenerDatosEspacioLibreria(DatosLinea, LineaCodigo, LineaOriginal, Archivo, Extension);
                        if (DatosLinea.ObjHijo.Length > 0)
                        {
                            LibreriasArchivo.Add(DatosLinea.ObjHijo.ToString());
                            ++DependenciaID;
                            Resultado.Add(DatosLinea.TipoPadre + "|" + DatosLinea.BibPadre + "|" + DatosLinea.ObjPadre + "|" + DatosLinea.TipoHijo + "|" + DatosLinea.BibHijo + "|" + DatosLinea.ObjHijo + "|" + Ruta + "|" + NoLinea + "|" + Extension + "|" + DependenciaID + "|" + UltimoPadre + "|" + LineaOriginal.Replace("|", string.Empty));
                        }
                    }
                }
                else if (((LineaCodigo.IndexOf("class ") >= 0) && (LineaCodigo.IndexOf(".class") < 0)) || LineaCodigo.IndexOf("javascript") > -1)
                {
                    bool Excepcion = EsExcepcion(LineaCodigo.ToLower());
                    if (!Excepcion)
                    {
                        ObtenerDatosClase(DatosLinea, LineaOriginal, Archivo, Extension);
                        if (DatosLinea.ObjHijo.Length > 0)
                        {
                            ++DependenciaID;
                            Resultado.Add(DatosLinea.TipoPadre + "|" + DatosLinea.BibPadre + "|" + DatosLinea.ObjPadre + "|" + DatosLinea.TipoHijo + "|" + DatosLinea.BibHijo + "|" + DatosLinea.ObjHijo + "|" + Ruta + "|" + NoLinea + "|" + Extension + "|" + DependenciaID + "|" + UltimoPadre + "|" + LineaOriginal.Replace("|", string.Empty));
                        }
                    }
                }
                else if (LineaCodigo.IndexOf("interface ") > -1)
                {
                    bool Excepcion = EsExcepcion(LineaCodigo.ToLower());
                    if (!Excepcion)
                    {
                        ObtenerDatosInterface(DatosLinea, LineaOriginal, Archivo, Extension);
                        if (DatosLinea.ObjHijo.Length > 0)
                        {
                            ++DependenciaID;
                            Resultado.Add(DatosLinea.TipoPadre + "|" + DatosLinea.BibPadre + "|" + DatosLinea.ObjPadre + "|" + DatosLinea.TipoHijo + "|" + DatosLinea.BibHijo + "|" + DatosLinea.ObjHijo + "|" + Ruta + "|" + NoLinea + "|" + Extension + "|" + DependenciaID + "|" + UltimoPadre + "|" + LineaOriginal.Replace("|", string.Empty));
                        }
                    }
                }
                else if (em.EsFuncion(LineaCodigo))
                {
                    ObtenerDatosFuncion(DatosLinea, LineaCodigo, LineaOriginal, Archivo);
                    bool Variable = EsVariable(DatosLinea.ObjHijo, 1);
                    if (DatosLinea.ObjHijo.Length > 0 && !Variable)
                    {
                        ++DependenciaID;
                        Resultado.Add(DatosLinea.TipoPadre + "|" + DatosLinea.BibPadre + "|" + DatosLinea.ObjPadre + "|" + DatosLinea.TipoHijo + "|" + DatosLinea.BibHijo + "|" + DatosLinea.ObjHijo + "|" + Ruta + "|" + NoLinea + "|" + Extension + "|" + DependenciaID + "|" + UltimoPadre + "|" + LineaOriginal.Replace("|", string.Empty));
                    }
                }
                else if (em.EsObjeto(LineaCodigo))
                {
                    ObtenerDatosObjeto(DatosLinea, LineaCodigo, LineaOriginal, Archivo);
                    bool Variable = EsVariable(DatosLinea.ObjHijo, 1);
                    if (DatosLinea.ObjHijo.Length > 0 && !Variable)
                    {
                        ++DependenciaID;
                        Resultado.Add(DatosLinea.TipoPadre + "|" + DatosLinea.BibPadre + "|" + DatosLinea.ObjPadre + "|" + DatosLinea.TipoHijo + "|" + DatosLinea.BibHijo + "|" + DatosLinea.ObjHijo + "|" + Ruta + "|" + NoLinea + "|" + Extension + "|" + DependenciaID + "|" + UltimoPadre + "|" + LineaOriginal.Replace("|", string.Empty));
                    }
                }
                else if (em.EsEvento(LineaCodigo))
                {
                    bool Excepcion = EsExcepcion(LineaCodigo.ToLower());
                    if (!Excepcion)
                    {
                        ObtenerDatosEvento(DatosLinea, LineaCodigo, LineaOriginal, Archivo);
                        bool Variable = EsVariable(DatosLinea.ObjHijo, 1);
                        if (DatosLinea.ObjHijo.Length > 0 && !Variable)
                        {
                            ++DependenciaID;
                            Resultado.Add(DatosLinea.TipoPadre + "|" + DatosLinea.BibPadre + "|" + DatosLinea.ObjPadre + "|" + DatosLinea.TipoHijo + "|" + DatosLinea.BibHijo + "|" + DatosLinea.ObjHijo + "|" + Ruta + "|" + NoLinea + "|" + Extension + "|" + DependenciaID + "|" + UltimoPadre + "|" + LineaOriginal.Replace("|", string.Empty));
                        }
                    }
                }
                else if (em.EsMetodo(LineaCodigo))
                {
                    bool Excepcion = EsExcepcion(LineaCodigo.ToLower());
                    if (!Excepcion)
                    {
                        ObtenerDatosMetodo(DatosLinea, LineaCodigo, LineaOriginal, Archivo);
                        bool Variable = EsVariable(DatosLinea.ObjHijo, 1);
                        if (ListaClases.Count > 0 && DatosLinea.ObjHijo.Length > 0 && !Variable)
                        {
                            ++DependenciaID;
                            Resultado.Add(DatosLinea.TipoPadre + "|" + DatosLinea.BibPadre + "|" + DatosLinea.ObjPadre + "|" + DatosLinea.TipoHijo + "|" + DatosLinea.BibHijo + "|" + DatosLinea.ObjHijo + "|" + Ruta + "|" + NoLinea + "|" + Extension + "|" + DependenciaID + "|" + UltimoPadre + "|" + LineaOriginal.Replace("|", string.Empty));
                        }
                    }
                }

                else
                {
                    bool Excepcion = EsExcepcion(LineaCodigo.ToLower());
                    if (!Excepcion && LineaCodigo.Length >= 3)
                    {
                        DependenciaID = ObtenerDatosInvocados(DatosLinea, LineaOriginal, Archivo, InventarioCM, Resultado,
                                                              NoLinea, Ruta, Librerias, Extension, DependenciaID);
                    }
                }
                AcumularNivelLlave(LineaCodigo);
                return(DatosLinea);
            }
            catch (Exception ex)
            {
                AcumularNivelLlave(LineaCodigo);
                Console.WriteLine(ex);
                return(null);
            }
        }