嵌入式系統(tǒng)開發(fā),內(nèi)存對(duì)齊問題如同隱藏的礁石,稍有不慎便會(huì)導(dǎo)致程序崩潰或性能下降。未對(duì)齊訪問(Unaligned Access)指CPU嘗試讀取或?qū)懭敕菍?duì)齊邊界的內(nèi)存數(shù)據(jù),這種操作在ARM Cortex-M等架構(gòu)上會(huì)觸發(fā)硬件異常,在x86架構(gòu)上雖不直接報(bào)錯(cuò),但會(huì)降低性能并增加功耗。靜態(tài)分析工具Cppcheck和PC-lint通過解析源代碼的語法與語義,能夠在編譯前識(shí)別這類風(fēng)險(xiǎn),為開發(fā)者提供早期預(yù)警。
在Windows上,需要下載cppcheck的安裝包:cppcheck.sourceforge.io/ ,也可以下載源碼,注意安裝成功后需要配置下它的環(huán)境變量。也可以使用clang-tidy來做靜態(tài)代碼檢測(cè), 不同于cppcheck使用正則表達(dá)式進(jìn)行靜態(tài)代碼分析,clang-tidy是基于語法分析樹的靜態(tài)代碼檢查工具,雖然它的速度比正則表達(dá)式慢一些,但是它檢查的更準(zhǔn)確、全面,而且不僅可以做靜態(tài)檢查,還可以做一些修復(fù)工作,自行添加一些自定義檢查規(guī)則。