//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); }