Skip to content

Commit 0abc08c

Browse files
committed
C#: Add some synthetic field content based examples.
1 parent b94940b commit 0abc08c

File tree

1 file changed

+137
-0
lines changed

1 file changed

+137
-0
lines changed

csharp/ql/test/utils/modelgenerator/dataflow/Summaries.cs

Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -701,3 +701,140 @@ public NestedFieldFlow ReverseFields()
701701
return new NestedFieldFlow() { FieldA = x };
702702
}
703703
}
704+
705+
public class SyntheticFields
706+
{
707+
private string value1;
708+
private string value2;
709+
private string value3;
710+
711+
private string chainBegin;
712+
private string chainEnd;
713+
714+
private string brokenChainBegin;
715+
private string brokenChainEnd;
716+
717+
// summary=Models;SyntheticFields;false;SyntheticFields;(System.String);;Argument[0];Argument[this];taint;df-generated
718+
// contentbased-summary=Models;SyntheticFields;false;SyntheticFields;(System.String);;Argument[0];Argument[this].SyntheticField[Models.SyntheticFields.value1];value;df-generated
719+
public SyntheticFields(string v1)
720+
{
721+
value1 = v1;
722+
}
723+
724+
// summary=Models;SyntheticFields;false;GetValue1;();;Argument[this];ReturnValue;taint;df-generated
725+
// contentbased-summary=Models;SyntheticFields;false;GetValue1;();;Argument[this].SyntheticField[Models.SyntheticFields.value1];ReturnValue;value;df-generated
726+
public string GetValue1()
727+
{
728+
return value1;
729+
}
730+
731+
// summary=Models;SyntheticFields;false;GetValue2;();;Argument[this];ReturnValue;taint;df-generated
732+
// contentbased-summary=Models;SyntheticFields;false;GetValue2;();;Argument[this].SyntheticField[Models.SyntheticFields.value2];ReturnValue;value;df-generated
733+
public string GetValue2()
734+
{
735+
return value2;
736+
}
737+
738+
// summary=Models;SyntheticFields;false;SetValue2;(System.String);;Argument[0];Argument[this];taint;df-generated
739+
// contentbased-summary=Models;SyntheticFields;false;SetValue2;(System.String);;Argument[0];Argument[this].SyntheticField[Models.SyntheticFields.value2];value;df-generated
740+
public void SetValue2(string v2)
741+
{
742+
value2 = v2;
743+
}
744+
745+
// summary=Models;SyntheticFields;false;SetValue3;(System.String);;Argument[0];Argument[this];taint;df-generated
746+
// No content based summary as value3 is a dead synthetic field.
747+
public void SetValue3(string v3)
748+
{
749+
value3 = v3;
750+
}
751+
752+
// summary=Models;SyntheticFields;false;SetChainBegin;(System.String);;Argument[0];Argument[this];taint;df-generated
753+
// contentbased-summary=Models;SyntheticFields;false;SetChainBegin;(System.String);;Argument[0];Argument[this].SyntheticField[Models.SyntheticFields.chainBegin];value;df-generated
754+
public void SetChainBegin(string v)
755+
{
756+
chainBegin = v;
757+
}
758+
759+
// neutral=Models;SyntheticFields;CopyChainValue;();summary;df-generated
760+
// contentbased-summary=Models;SyntheticFields;false;CopyChainValue;();;Argument[this].SyntheticField[Models.SyntheticFields.chainBegin];Argument[this].SyntheticField[Models.SyntheticFields.chainEnd];value;df-generated
761+
public void CopyChainValue()
762+
{
763+
chainEnd = chainBegin;
764+
}
765+
766+
// summary=Models;SyntheticFields;false;GetChainEnd;();;Argument[this];ReturnValue;taint;df-generated
767+
// contentbased-summary=Models;SyntheticFields;false;GetChainEnd;();;Argument[this].SyntheticField[Models.SyntheticFields.chainEnd];ReturnValue;value;df-generated
768+
public string GetChainEnd()
769+
{
770+
return chainEnd;
771+
}
772+
773+
// summary=Models;SyntheticFields;false;SetBrokenChainBegin;(System.String);;Argument[0];Argument[this];taint;df-generated
774+
// No content based summary as brokenChainBegin is a dead synthetic field.
775+
public void SetBrokenChainBegin(string v)
776+
{
777+
brokenChainBegin = v;
778+
}
779+
780+
// summary=Models;SyntheticFields;false;GetBrokenChainEnd;();;Argument[this];ReturnValue;taint;df-generated
781+
// No content based summary as brokenChainEnd is a dead synthetic field.
782+
public string GetBrokenChainEnd()
783+
{
784+
return brokenChainEnd;
785+
}
786+
787+
public class InnerSyntheticFields
788+
{
789+
private readonly string value;
790+
791+
// summary=Models;SyntheticFields+InnerSyntheticFields;false;InnerSyntheticFields;(System.String);;Argument[0];Argument[this];taint;df-generated
792+
// contentbased-summary=Models;SyntheticFields+InnerSyntheticFields;false;InnerSyntheticFields;(System.String);;Argument[0];Argument[this].SyntheticField[Models.SyntheticFields+InnerSyntheticFields.value];value;df-generated
793+
public InnerSyntheticFields(string v)
794+
{
795+
value = v;
796+
}
797+
798+
// summary=Models;SyntheticFields+InnerSyntheticFields;false;GetValue;();;Argument[this];ReturnValue;taint;df-generated
799+
// contentbased-summary=Models;SyntheticFields+InnerSyntheticFields;false;GetValue;();;Argument[this].SyntheticField[Models.SyntheticFields+InnerSyntheticFields.value];ReturnValue;value;df-generated
800+
public string GetValue()
801+
{
802+
return value;
803+
}
804+
}
805+
806+
// summary=Models;SyntheticFields;false;MakeInner;(System.String);;Argument[0];ReturnValue;taint;df-generated
807+
// contentbased-summary=Models;SyntheticFields;false;MakeInner;(System.String);;Argument[0];ReturnValue.SyntheticField[Models.SyntheticFields+InnerSyntheticFields.value];value;df-generated
808+
public InnerSyntheticFields MakeInner(string v)
809+
{
810+
return new InnerSyntheticFields(v);
811+
}
812+
}
813+
814+
public class SyntheticProperties
815+
{
816+
private string Prop1 { get; set; }
817+
818+
private string Prop2 { get; set; }
819+
820+
// summary=Models;SyntheticProperties;false;SyntheticProperties;(System.String);;Argument[0];Argument[this];taint;df-generated
821+
// contentbased-summary=Models;SyntheticProperties;false;SyntheticProperties;(System.String);;Argument[0];Argument[this].SyntheticField[Models.SyntheticProperties.Prop1];value;df-generated
822+
public SyntheticProperties(string v1)
823+
{
824+
Prop1 = v1;
825+
}
826+
827+
// summary=Models;SyntheticProperties;false;GetProp1;();;Argument[this];ReturnValue;taint;df-generated
828+
// contentbased-summary=Models;SyntheticProperties;false;GetProp1;();;Argument[this].SyntheticField[Models.SyntheticProperties.Prop1];ReturnValue;value;df-generated
829+
public string GetProp1()
830+
{
831+
return Prop1;
832+
}
833+
834+
// summary=Models;SyntheticProperties;false;SetProp2;(System.String);;Argument[0];Argument[this];taint;df-generated
835+
// No content based summary as Prop2 is a dead synthetic field.
836+
public void SetProp2(string v)
837+
{
838+
Prop2 = v;
839+
}
840+
}

0 commit comments

Comments
 (0)