SA0046: Başlatılmamış arayüzün olası kullanımıPermalink

Kullanılmadan önce başlatılmamış arayüzlerin kullanımını tespit eder

Gerekçe: Bir arayüz referansı kullanılmadan önce <> 0 olup olmadığı kontrol edilmelidir. Aksi takdirde erişim sırasında bir erişim ihlali meydana gelebilir.

Önemliymiş: Yüksek

Örnek

//declaration of INTERFACE ITF and assigned METH2:
METHOD METH2 : BOOL
VAR_INPUT
	iInput2:INT;
END_VAR
//declaration of INTERFACE Master_ITF1 and assigned METH:
METHOD METH : BOOL
VAR_INPUT
	iInput:INT;
END_VAR

PROGRAM PLC_PRG
VAR
	instPOU:POU;
	instITF:ITF;
	instMasterITF1:Master_ITF1;
	instMasterITF2:Master_ITF2;
	iDummy:INT;
	xDummy:BOOL;
	instNoInitITF:ITF;
	instNoInitITF2:ITF;
	instNoInitMasterITF1:Master_ITF1;
	instNoInitMasterITF2:Master_ITF2;
END_VAR

instITF := instPOU; 
xDummy := instITF.METH(iInput := iDummy);             // OK
instMasterITF1 := instPOU; 
xDummy := instMasterITF1.METH(iInput := iDummy);      // OK

xDummy := instNoInitITF.METH(iInput := INT#1);        // SA0046
xDummy := instNoInitITF.METH2(iInput2 := INT#2);      // SA0046
xDummy := instNoInitMasterITF1.METH(iInput := INT#3); // SA0046
iDummy := instNoInitMasterITF2.Prop;                  // SA0046

IF instNoInitITF <> 0 THEN
    instNoInitITF.Prop;  	    // OK, weil das Interface nicht 0 sein kann
END_IF


--> SA0046: Possible use of not initialised interface 'instNoInitITF'
--> SA0046: Possible use of not initialised interface 'instNoInitITF'
--> SA0046: Possible use of not initialised interface 'instNoInitMasterITF1'
--> SA0046: Possible use of not initialised interface 'instNoInitMasterITF2