Static code analyzer
Хэн ч алдаж болох учраас…
Статик код шинжигч бол програмын соорс код дотроос сэжигтэй хэсгүүдийг илрүүлдэг хэрэгсэл билээ. Динамик код шинжигч гэхээрээ thread synchronization, dead lock гэх мэт програм ажиллаж байх үед үүсч болох асуудлуудыг шинжилдэг. Энд статик код шинжигчийн тухай ярья.
Код ямар шинжүүрүүдийг хангасан байхыг шинжигч багаж дээрээ тохируулж өгөх бөгөөд, ийм төрлийн багажууд ихэвчлэн бэлэн багц шинжүүрүүдтэй байдаг. Гэвч хөгжүүлэгч өөрийн шаардлага хэрэгцээнд нийцүүлээд шинжүүрийг нэмж хасаж, эсвэл өөрөө шинэ шинжүүр зохиож оруулж болно.
Жава кодын хувьд PMD , Checkstyle гэх мэт опенсоорс багажууд байдаг. Эдгээрийг зөв ашиглаж чадах юм бол ихээхэн хүч хөдөлмөр, цаг хугацаа хэмнэгдэж болох юм. Энд нэгэн жишээ авч үзье л дээ: Өгөгдлийн сантай харилцдаг үйлдлийг програмын код дотор асар их хийсэн байг. Гэтэл код шалгагч мэргэжилтэн(code inspector) өнөө код дотор өгөгдлийн сантай холболт үүсгээд холболтоо хаах үйлдлийг буруу хийсэн байгааг илрүүлж, цаашлаад тийм алдаа хаа сайгүй, бараг өгөгдлийн сантай харьцаж байгаа бүх газарт байгаа болох нь илэрвээ гэж… Энэ тохиолдолд гараараа янзлана гэвэл нилээд их хөдөлмөр шаардагдах бөгөөд бүх алдааг олж засна гэх зуун хувийн итгэл байхгүй. Дараах кодыг хараад ямар алдаа байгааг олно уу?
Connection conn;
try {
conn = ... өгөгдлийн сан руу холболт хийх ...
... өгөгдлийн сан руу хандах кодууд ...
... өгөгдлийн сан руу хандах кодууд ...
conn.close();
} catch (SQLException e) {
... алдааг тооцож үзэх ...
}
Дээрх кодын хувьд хэрвээ өгөгдлийн сан руу холболт үүсгэсний дараа өгөгдлийн сан руу хандах явцад ямар нэг Exception гарвал холболт хаагдахгүй үлдэхээр байна. Иймд кодыг арай жаахан өөрчлөөд дараах байдлаар бичиж болно.
Connection conn = null;
try {
conn = ... өгөгдлийн сан руу холболт хийх ...
... өгөгдлийн сан руу хандах кодууд ...
... өгөгдлийн сан руу хандах кодууд ...
} catch (SQLException e) {
... алдааг тооцож үзэх ...
} finally {
if (conn != null) {
try { conn.close(); } catch (SQLException e) { ; }
conn = null;
}
}
Одоо бол өгөгдлий сан руу хандаж байхад ямар нэг Exception гарсан ч холболтыг хаах үйлдэл хийгдэхээр боллоо, ядаж хаах үйлдлийг хийхээр оролдохоор боллоо.
Алдаа ямархуу хэлбэртэй байж болохыг мэдсэн бол статик код шинжигч багаж дээрээ алдааны үлгэрүүдийг(pattern) оруулж өгөөд алдаа олох ажлыг автоматжуулах боломжтой. Цаашилбал, AppPerfect гэх мэт багажууд алдааг илрүүлээд зогсохгүй автоматаар засах боломжтой байдаг. Алдааны үлгэр болон яаж засах загвараа зөв, маш ерөнхий түвшинд оруулаад өгчихвөл зуун хувийн найдвартайгаар өнөө алдаануудыг илрүүлж засч болох нь.
Эцэст нь хэлэхэд, хэн ч алдаж болох учраас статик код шинжигч ашиглацгаая.
Холбоосууд: