public void Check(ConstructorInfo info, Dependency parent) { if (info.IsPrivate && !info.ReflectedType.IsAbstract) { parent.Add(new ProblemDependency(string.Format("This is a private constructor"))); } }
public void Check(FieldInfo info, Dependency parent) { // Dependency parent = new Dependency(info.); bool isInterface = info.FieldType.IsInterface; bool isAbstract = info.FieldType.IsAbstract; bool isNotSealed = !info.FieldType.IsSealed; string message = ""; if (isInterface) { message = string.Format("Field {0} is interface {1}", info.Name, info.FieldType.Name); } else if (isAbstract) { message = string.Format("Field {0} is an abstract class {1} and can be inherited from", info.Name,info.FieldType.Name); } else if (isNotSealed) { message = string.Format("Field {0} is non sealed {1} and can be inherited from", info.Name, info.FieldType.Name); } parent.Add(new Dependency(message)); // if (parent.AlreadyContains(info.FieldType)) // { // parent.Add(new Dependency(message)); // } // else // { // parent.Add(new Dependency(info.FieldType, message)); // } }
public void Check(MethodInfo info, Dependency parent) { if (!info.IsFinal && (info.IsVirtual || info.IsAbstract)) { parent.Add(new Dependency(string.Format(" {0}() can be overriden", info.Name))); } }
/// <summary> /// Constructor for built in subsystem /// Default: BufferSize = 4098 /// </summary> /// <param name="SSDRXmlNode"></param> /// <param name="dependencies"></param> /// <param name="asset"></param> public SSDR(XmlNode SSDRXmlNode, Dependency dependencies, Asset asset) { DefaultSubName = "SSDR"; Asset = asset; GetSubNameFromXmlNode(SSDRXmlNode); if (SSDRXmlNode.Attributes["bufferSize"] != null) { _bufferSize = (double)Convert.ChangeType(SSDRXmlNode.Attributes["bufferSize"].Value.ToString(), typeof(double)); } DATABUFFERRATIO_KEY = new StateVarKey <double>(Asset.Name + "." + "databufferfillratio"); addKey(DATABUFFERRATIO_KEY); SubsystemDependencyFunctions = new Dictionary <string, Delegate>(); DependentSubsystems = new List <Subsystem>(); dependencies.Add("PowerfromSSDR" + "." + Asset.Name, new Func <Event, HSFProfile <double> >(POWERSUB_PowerProfile_SSDRSUB)); dependencies.Add("CommfromSSDR" + "." + Asset.Name, new Func <Event, HSFProfile <double> >(COMMSUB_DataRateProfile_SSDRSUB)); dependencies.Add("EvalfromSSDR" + "." + Asset.Name, new Func <Event, double>(EVAL_DataRateProfile_SSDRSUB)); }
protected void AddDependency <T>() { var dependencyNode = new DependencyNode { TypeId = typeof(T).GetHashCode(), Value = null }; Dependency.Add(dependencyNode); }
/// <summary> /// Constructor for built in subsystem /// </summary> /// <param name="CommXmlNode"></param> /// <param name="dependencies"></param> /// <param name="asset"></param> public Comm(XmlNode CommXmlNode, Dependency dependencies, Asset asset) { DefaultSubName = "Comm"; Asset = asset; GetSubNameFromXmlNode(CommXmlNode); SubsystemDependencyFunctions = new Dictionary <string, Delegate>(); DependentSubsystems = new List <Subsystem>(); DATARATE_KEY = new StateVarKey <double>(Asset.Name + "." + "datarate(mb/s)"); addKey(DATARATE_KEY); dependencies.Add("PowerfromComm" + "." + Asset.Name, new Func <Event, HSFProfile <double> >(POWERSUB_PowerProfile_COMMSUB)); }
/// <summary> /// Constructor for built in subsystem /// Defaults: lowQualityPixels = 5000, midQualityPixels = 10000, highQualityPixels = 15000 /// lowQualityTime = 3s, midQyalityTime = 5s, highQualityTime = 7s /// </summary> /// <param name="EOSensorXmlNode"></param> /// <param name="dependencies"></param> /// <param name="asset"></param> public EOSensor(XmlNode EOSensorXmlNode, Dependency dependencies, Asset asset) { DefaultSubName = "EOSensor"; Asset = asset; GetSubNameFromXmlNode(EOSensorXmlNode); PIXELS_KEY = new StateVarKey <double>(Asset.Name + "." + "numpixels"); INCIDENCE_KEY = new StateVarKey <double>(Asset.Name + "." + "incidenceangle"); EOON_KEY = new StateVarKey <bool>(Asset.Name + "." + "eosensoron"); addKey(PIXELS_KEY); addKey(INCIDENCE_KEY); addKey(EOON_KEY); DependentSubsystems = new List <Subsystem>(); SubsystemDependencyFunctions = new Dictionary <string, Delegate>(); if (EOSensorXmlNode.Attributes["lowQualityPixels"] != null) { //Console.WriteLine("inside loop"); _lowQualityPixels = (double)Convert.ChangeType(EOSensorXmlNode.Attributes["lowQualityPixels"].Value.ToString(), typeof(double)); } if (EOSensorXmlNode.Attributes["lowQualityTime"] != null) { _lowQualityTime = (double)Convert.ChangeType(EOSensorXmlNode.Attributes["lowQualityTime"].Value.ToString(), typeof(double)); } if (EOSensorXmlNode.Attributes["midQualityPixels"] != null) { _midQualityPixels = (double)Convert.ChangeType(EOSensorXmlNode.Attributes["midQualityPixels"].Value.ToString(), typeof(double)); } if (EOSensorXmlNode.Attributes["midQualityTime"] != null) { _midQualityTime = (double)Convert.ChangeType(EOSensorXmlNode.Attributes["midQualityTime"].Value.ToString(), typeof(double)); } if (EOSensorXmlNode.Attributes["highQualityPixels"] != null) { _highQualityPixels = (double)Convert.ChangeType(EOSensorXmlNode.Attributes["highQualityPixels"].Value.ToString(), typeof(double)); } if (EOSensorXmlNode.Attributes["highQualityTime"] != null) { _highQualityTime = (double)Convert.ChangeType(EOSensorXmlNode.Attributes["highQualityTime"].Value.ToString(), typeof(double)); } dependencies.Add("PowerfromEOSensor" + "." + Asset.Name, new Func <Event, HSFProfile <double> >(POWERSUB_PowerProfile_EOSENSORSUB)); dependencies.Add("SSDRfromEOSensor" + "." + Asset.Name, new Func <Event, HSFProfile <double> >(SSDRSUB_NewDataProfile_EOSENSORSUB)); }
/// <summary> /// Constructor for built in subsystems /// Defaults: Slew time: 10s /// </summary> /// <param name="AntennaNode"></param> /// <param name="dependencies"></param> /// <param name="asset"></param> public Antenna(XmlNode AntennaNode, Dependency dependencies, Asset asset) { DefaultSubName = "Antenna"; Asset = asset; GetSubNameFromXmlNode(AntennaNode); /*double slewTime; * if (AntennaNode.Attributes["timetoslew"].Value != null) * { * Double.TryParse(AntennaNode.Attributes["slewTime"].Value, out slewTime); * _timetoslew = slewTime; * }*/ ANTDATA_KEY = new StateVarKey <Matrix <double> >(Asset.Name + "." + "antenna_data"); ANTINCIDENCE_KEY = new StateVarKey <Matrix <double> >(Asset.Name + "." + "antenna_incidence"); ANTSTRESS_KEY = new StateVarKey <Matrix <double> >(Asset.Name + "." + "antenna_stress"); addKey(ANTSTRESS_KEY); addKey(ANTINCIDENCE_KEY); addKey(ANTDATA_KEY); DependentSubsystems = new List <Subsystem>(); SubsystemDependencyFunctions = new Dictionary <string, Delegate>(); dependencies.Add("PowerfromAntenna" + "." + Asset.Name, new Func <Event, HSFProfile <double> >(POWERSUB_PowerProfile_ANTENNASUB)); dependencies.Add("SSDRfromAntenna" + "." + Asset.Name, new Func <Event, HSFProfile <double> >(SSDRSUB_NewDataProfile_ANTENNASUB)); }
protected override void DoChecks(MethodBase mehodBeingChecked, MethodBodyInfo methodBody, Dependency parent) { foreach (ILInstruction instruction in methodBody.Instructions) { if (instruction is InlineMethodInstruction) { InlineMethodInstruction line = instruction as InlineMethodInstruction; if (line.Method.IsVirtual) { parent.Add(new VirtualMethodCallDependency(line.Method.ReflectedType.Name, line.Method.Name)); } } } }
protected override void DoChecks(MethodBase mehodBeingChecked, MethodBodyInfo methodBody, Dependency parent) { foreach (ILInstruction instruction in methodBody.Instructions) { if (instruction is InlineMethodInstruction) { InlineMethodInstruction line = instruction as InlineMethodInstruction; if (line.Method.IsStatic) { string message = string.Format("Static method call {0} on {1}", line.Method.Name, line.Method.ReflectedType.Name); parent.Add(new ProblemDependency(message)); } } } }
/// <summary> /// Constructor for built in subsystems /// Defaults: Slew time: 10s /// </summary> /// <param name="ADCSNode"></param> /// <param name="dependencies"></param> /// <param name="asset"></param> public ADCS(XmlNode ADCSNode, Dependency dependencies, Asset asset) { DefaultSubName = "Adcs"; Asset = asset; GetSubNameFromXmlNode(ADCSNode); /*double slewTime; * if (ADCSNode.Attributes["timetoslew"].Value != null) * { * Double.TryParse(ADCSNode.Attributes["slewTime"].Value, out slewTime); * _timetoslew = slewTime; * }*/ POINTVEC_KEY = new StateVarKey <Matrix <double> >(Asset.Name + "." + "eci_pointing_vector(xyz)"); addKey(POINTVEC_KEY); DependentSubsystems = new List <Subsystem>(); SubsystemDependencyFunctions = new Dictionary <string, Delegate>(); dependencies.Add("PowerfromADCS" + "." + Asset.Name, new Func <Event, HSFProfile <double> >(POWERSUB_PowerProfile_ADCSSUB)); }
// Use this for initialization void Init() { Debug.Log("Initializing commodities"); //replicate paper Dependency foodDep = new Dependency(); foodDep.Add("Wood", 2); Add("Food", 5, foodDep); Dependency woodDep = new Dependency(); woodDep.Add("Food", 1); woodDep.Add("Tool", .1f); Add("Wood", 3, woodDep); Dependency oreDep = new Dependency(); oreDep.Add("Food", 2f); Add("Ore", 2, oreDep); Dependency metalDep = new Dependency(); metalDep.Add("Food", 2); metalDep.Add("Ore", 2); Add("Metal", 1, metalDep); Dependency toolDep = new Dependency(); toolDep.Add("Food", 2.3f); toolDep.Add("Metal", 2); Add("Tool", 1, toolDep); //PrintStat(); return; #if false Add("Food", 4); Add("Water", 1); Add("Oil", 6); Dependency oreDep = new Dependency(); oreDep.Add("Oil", 10); Add("Ore", 5, oreDep); Dependency energyDep = new Dependency(); energyDep.Add("Oil", .1f); Add("Energy", .2f, energyDep); Dependency compDep = new Dependency(); compDep.Add("Oil", .3f); compDep.Add("Ore", .6f); Add("Computer", 300, compDep); Dependency rocketDep = new Dependency(); rocketDep.Add("Oil", 30000f); rocketDep.Add("Water", 200000f); rocketDep.Add("Ore", 6000f); Add("Rocket", 400000f, rocketDep); Dependency ftDep = new Dependency(); ftDep.Add("Oil", 20000f); ftDep.Add("Water", 100000f); ftDep.Add("Ore", 1000f); Add("Fuel Tank", 100000f, ftDep); Dependency f9Dep = new Dependency(); f9Dep.Add("Rocket", 10); //9 for 1st stage, 1 for 2nd stage f9Dep.Add("Fuel Tank", 2); //1 for each stage Add("Falcon 9", 60000000f, f9Dep); Dependency fhDep = new Dependency(); fhDep.Add("Falcon 9", 3); //2 boosters, 1 core f9Dep.Add("Rocket", 1); //2nd stage on core fhDep.Add("Fuel Tank", 1); Add("Falcon Heavy", 60000000f, f9Dep); PrintStat(); #endif }