public TypeTester(Regex nameRx, TypeSkipFlags skipFlags, string attrib, string inherits, bool?isStatic, bool?isSeriablizable) : this(nameRx, skipFlags, attrib) { this.inherits = inherits; this.isStatic = isStatic; this.isSerializable = isSeriablizable; }
public bool ShouldSkip(TypeKey type, TypeSkipFlags flag, InheritMap map) { if (ShouldSkip(type.Namespace, map)) { return(true); } foreach (TypeTester typeTester in skipTypes) { if ((typeTester.SkipFlags & flag) > 0 && typeTester.Test(type, map)) { return(true); } } return(false); }
internal bool ShouldSkip(TypeKey type, TypeSkipFlags flag) { if (ShouldSkip(type.Namespace)) { return(true); } foreach (TypeTester typeTester in skipTypes) { if ((typeTester.SkipFlags & flag) > 0 && typeTester.Test(type)) { return(true); } } return(false); }
public TypeTester(Regex nameRx, TypeSkipFlags skipFlags, string attrib) { this.nameRx = nameRx; this.skipFlags = skipFlags; this.attrib = attrib.ToLower(); }
public TypeTester(string name, TypeSkipFlags skipFlags, string attrib) { this.name = name; this.skipFlags = skipFlags; this.attrib = attrib.ToLower(); }
public TypeTester(string name, TypeSkipFlags skipFlags) { this.name = name; this.skipFlags = skipFlags; }
public bool ShouldSkip(TypeKey type, TypeSkipFlags flag, InheritMap map) { if (ShouldSkip(type.Namespace, map)) return true; foreach (TypeTester typeTester in skipTypes) { if ((typeTester.SkipFlags & flag) > 0 && typeTester.Test(type, map)) return true; } return false; }
public static AssemblyInfo FromXml(Project project, XmlReader reader, Variables vars) { Debug.Assert(reader.NodeType == XmlNodeType.Element && reader.Name == "Module"); AssemblyInfo info = new AssemblyInfo(project); // pull out the file attribute, but don't process anything empty string val = Helper.GetAttribute(reader, "file", vars); if (val.Length > 0) { info.LoadAssembly(val); if (AssemblyIsSigned(info.Definition) && project.Settings.KeyFile == null) { throw new ApplicationException("Obfuscating a signed assembly would result in an invalid assembly: " + info.Name + "; use the KeyFile property to set a key to use"); } } else { throw new InvalidOperationException("Need valid file attribute."); } string isExcluded = Helper.GetAttribute(reader, "Exclude", vars); if ((isExcluded.Length > 0) && (isExcluded.ToLowerInvariant() == "true")) { info.Exclude = true; } if (!reader.IsEmptyElement) { while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element) { string name = Helper.GetAttribute(reader, "name", vars); string rxStr = Helper.GetAttribute(reader, "rx"); Regex rx = null; if (!string.IsNullOrEmpty(rxStr)) { rx = new Regex(rxStr); } string isStaticStr = Helper.GetAttribute(reader, "static", vars); bool? isStatic = null; if (!string.IsNullOrEmpty(isStaticStr)) { isStatic = XmlConvert.ToBoolean(isStaticStr); } string isSerializableStr = Helper.GetAttribute(reader, "serializable", vars); bool? isSerializable = null; if (!string.IsNullOrEmpty(isSerializableStr)) { isSerializable = XmlConvert.ToBoolean(isSerializableStr); } string attrib = Helper.GetAttribute(reader, "attrib", vars); string inherits = Helper.GetAttribute(reader, "typeinherits", vars); string type = Helper.GetAttribute(reader, "type", vars); string typeattrib = Helper.GetAttribute(reader, "typeattrib", vars); switch (reader.Name) { case "SkipNamespace": if (rx != null) { info.skipNamespaces.Add(new NamespaceTester(rx)); } else { info.skipNamespaces.Add(new NamespaceTester(name)); } break; case "SkipType": TypeSkipFlags skipFlags = TypeSkipFlags.SkipNone; val = Helper.GetAttribute(reader, "skipMethods", vars); if (val.Length > 0 && XmlConvert.ToBoolean(val)) { skipFlags |= TypeSkipFlags.SkipMethod; } val = Helper.GetAttribute(reader, "skipStringHiding", vars); if (val.Length > 0 && XmlConvert.ToBoolean(val)) { skipFlags |= TypeSkipFlags.SkipStringHiding; } val = Helper.GetAttribute(reader, "skipFields", vars); if (val.Length > 0 && XmlConvert.ToBoolean(val)) { skipFlags |= TypeSkipFlags.SkipField; } val = Helper.GetAttribute(reader, "skipProperties", vars); if (val.Length > 0 && XmlConvert.ToBoolean(val)) { skipFlags |= TypeSkipFlags.SkipProperty; } val = Helper.GetAttribute(reader, "skipEvents", vars); if (val.Length > 0 && XmlConvert.ToBoolean(val)) { skipFlags |= TypeSkipFlags.SkipEvent; } if (rx != null) { info.skipTypes.Add(new TypeTester(rx, skipFlags, attrib, inherits, isStatic, isSerializable)); } else { info.skipTypes.Add(new TypeTester(name, skipFlags, attrib, inherits, isStatic, isSerializable)); } break; case "SkipMethod": if (rx != null) { info.skipMethods.Add(new MethodTester(rx, type, attrib, typeattrib, inherits, isStatic)); } else { info.skipMethods.Add(new MethodTester(name, type, attrib, typeattrib, inherits, isStatic)); } break; case "SkipStringHiding": if (rx != null) { info.skipStringHiding.Add(new MethodTester(rx, type, attrib, typeattrib)); } else { info.skipStringHiding.Add(new MethodTester(name, type, attrib, typeattrib)); } break; case "SkipField": string decorator = Helper.GetAttribute(reader, "decorator", vars); if (rx != null) { info.skipFields.Add(new FieldTester(rx, type, attrib, typeattrib, inherits, decorator, isStatic, isSerializable)); } else { info.skipFields.Add(new FieldTester(name, type, attrib, typeattrib, inherits, decorator, isStatic, isSerializable)); } break; case "SkipProperty": if (rx != null) { info.skipProperties.Add(new PropertyTester(rx, type, attrib, typeattrib)); } else { info.skipProperties.Add(new PropertyTester(name, type, attrib, typeattrib)); } break; case "SkipEvent": if (rx != null) { info.skipEvents.Add(new EventTester(rx, type, attrib, typeattrib)); } else { info.skipEvents.Add(new EventTester(name, type, attrib, typeattrib)); } break; } } else if (reader.NodeType == XmlNodeType.EndElement && reader.Name == "Module") { // hit end of module element...stop reading break; } } } return(info); }
internal bool ShouldSkip(TypeKey type, TypeSkipFlags flag) { if (ShouldSkip(type.Namespace)) return true; foreach (TypeTester typeTester in skipTypes) { if ( ( typeTester.SkipFlags & flag ) > 0 && typeTester.Test( type ) ) return true; } return false; }
internal static AssemblyInfo FromXml(Project project, XmlReader reader, Variables vars) { Debug.Assert(reader.NodeType == XmlNodeType.Element && reader.Name == "Module"); AssemblyInfo info = new AssemblyInfo(project); // pull out the file attribute, but don't process anything empty string val = Helper.GetAttribute(reader, "file", vars); if (val.Length > 0) { info.LoadAssembly(val); if (AssemblyIsSigned(info.Definition) && project.KeyValue == null) { throw new ApplicationException("Obfuscating a signed assembly would result in an invalid assembly: " + info.Name + "; use the KeyValue property to set a key to use"); } } else { throw new InvalidOperationException("Need valid file attribute."); } string isExcluded = Helper.GetAttribute(reader, "Exclude", vars); if ((isExcluded.Length > 0) && (isExcluded.ToLowerInvariant() == "true")) { info.Exclude = true; } if (!reader.IsEmptyElement) { while (reader.Read( )) { if (reader.NodeType == XmlNodeType.Element) { switch (reader.Name) { case "SkipNamespace": { val = Helper.GetAttribute(reader, "name", vars); if (val.Length > 0) { info.skipNamespaces.Add(new NamespaceTester(val)); } } break; case "SkipType": { val = Helper.GetAttribute(reader, "name", vars); if (val.Length > 0) { string typeName = val; TypeSkipFlags skipFlags = TypeSkipFlags.SkipNone; val = Helper.GetAttribute(reader, "skipMethods", vars); if (val.Length > 0 && XmlConvert.ToBoolean(val)) { skipFlags |= TypeSkipFlags.SkipMethod; } val = Helper.GetAttribute(reader, "skipStringHiding", vars); if (val.Length > 0 && XmlConvert.ToBoolean(val)) { skipFlags |= TypeSkipFlags.SkipStringHiding; } val = Helper.GetAttribute(reader, "skipFields", vars); if (val.Length > 0 && XmlConvert.ToBoolean(val)) { skipFlags |= TypeSkipFlags.SkipField; } val = Helper.GetAttribute(reader, "skipProperties", vars); if (val.Length > 0 && XmlConvert.ToBoolean(val)) { skipFlags |= TypeSkipFlags.SkipProperty; } val = Helper.GetAttribute(reader, "skipEvents", vars); if (val.Length > 0 && XmlConvert.ToBoolean(val)) { skipFlags |= TypeSkipFlags.SkipEvent; } info.skipTypes.Add(new TypeTester(typeName, skipFlags)); } } break; case "SkipMethod": { val = Helper.GetAttribute(reader, "name", vars); string type = Helper.GetAttribute(reader, "type", vars); string attrib = Helper.GetAttribute(reader, "attrib", vars); if (val.Length > 0) { info.skipMethods.Add(new MethodTester(val, type, attrib)); } else { val = Helper.GetAttribute(reader, "rx"); if (val.Length > 0) { info.skipMethods.Add(new MethodTester(new Regex(val), type, attrib)); } } } break; case "SkipStringHiding": { val = Helper.GetAttribute(reader, "name", vars); string type = Helper.GetAttribute(reader, "type", vars); string attrib = Helper.GetAttribute(reader, "attrib", vars); if (val.Length > 0) { info.skipStringHiding.Add(new MethodTester(val, type, attrib)); } else { val = Helper.GetAttribute(reader, "rx"); if (val.Length > 0) { info.skipStringHiding.Add(new MethodTester(new Regex(val), type, attrib)); } } } break; case "SkipField": { val = Helper.GetAttribute(reader, "name", vars); string type = Helper.GetAttribute(reader, "type", vars); string attrib = Helper.GetAttribute(reader, "attrib", vars); if (val.Length > 0) { info.skipFields.Add(new FieldTester(val, type, attrib)); } else { val = Helper.GetAttribute(reader, "rx"); if (val.Length > 0) { info.skipFields.Add(new FieldTester(new Regex(val), type, attrib)); } } } break; case "SkipProperty": { val = Helper.GetAttribute(reader, "name", vars); string type = Helper.GetAttribute(reader, "type", vars); string attrib = Helper.GetAttribute(reader, "attrib", vars); if (val.Length > 0) { info.skipProperties.Add(new PropertyTester(val, type, attrib)); } else { val = Helper.GetAttribute(reader, "rx"); if (val.Length > 0) { info.skipProperties.Add(new PropertyTester(new Regex(val), type, attrib)); } } } break; case "SkipEvent": { val = Helper.GetAttribute(reader, "name", vars); string type = Helper.GetAttribute(reader, "type", vars); string attrib = Helper.GetAttribute(reader, "attrib", vars); if (val.Length > 0) { info.skipEvents.Add(new EventTester(val, type, attrib)); } else { val = Helper.GetAttribute(reader, "rx"); if (val.Length > 0) { info.skipEvents.Add(new EventTester(new Regex(val), type, attrib)); } } } break; } } else if (reader.NodeType == XmlNodeType.EndElement && reader.Name == "Module") { // hit end of module element...stop reading break; } } } return(info); }