최근에 Roslyn에서 제공 한 데이터 흐름 분석 API로 작업하기 시작했으며 WrittenInside 필드 및 Locations 필드에 표시된 값이 약간 모호합니다. 나는 데이터 흐름 분석 객체가 표시되지 않습니다 결과, 루프 노드에 DFA를 수행 할 경우 Roslyn 데이터 흐름 분석 - WrittenInside 및 Locations 필드의 모호한 값
메인 방법1. int[] lcolSample = new int[10] { 0, 1, 2, 3, 4, 0, 1, 2, 3, 4};
2. for (int lintCount1 = 0; lintCount1 < 10; lintCount1++)
3. {
4. Prog1(lintCount1);
5. int[] lcolSample1 = new int[10] { 0, 1, 2, 3, 4, 0, 1, 2, 3, 4 };
6. lintCount3 = lintCount3 + 100;
7. lintCount1 = lintCount1 + 2;
8. lcolSample[lintCount1-1] = lcolSample1[lintCount1] + 100;
9. }
에 코드 아래 고려 lcolSample []에 대한 내부 기록 상징으로 WrittenInside 필드에 고리. 데이터 흐름 분석이 수행되는 노드 외부에서 선언 된 이유. 그러나 ReadInside 필드에는이 기호가 표시됩니다. DFA가 수행되는 노드 외부에서 선언 되었더라도 지정된 노드 내부에서 수정되거나 작성된 모든 기호를 알 수있는 방법이 있습니까?
가변 lintCount1은 두 번 (문장 2와 7) 쓰여지고 두 번 읽습니다. lintCount1의 Locations 속성은 선언 된 위치 만 표시합니다 (문 2). lintCount1이 작성된 모든 위치를 찾는 방법이 있습니까? 해당 기호의 모든 참조가 기호가 사용되는 모든 위치를 제공하지만 기호가 쓰여졌지만 읽지 않은 위치는 필요합니다.
이것은이 포럼의 첫 번째 질문입니다. 위에 제공된 정보가 충분하지 않은 경우 다른 세부 정보를 요청하십시오. 미리 감사드립니다 ..
'lcolSample'은 절대로 루프 안에 쓰여지지 않습니다. 그러나 8 행에서 읽습니다. – JoshVarty
변수가 참조하는 객체를 변경하는 것은 변수를 수정하는 것과 동일하지 않습니다. – SLaks
@JoshVarty - 죄송합니다 ... 내 실수 ... 편집 된 줄 8 - 이럴 것입니다. – Sreenath