ProHoster > Pūnaewele > Nā Administration > E hoʻokō i ka loiloi static i ke kaʻina hana, ma mua o ka hoʻohana ʻana iā ia e ʻimi ai i nā pōpoki
E hoʻokō i ka loiloi static i ke kaʻina hana, ma mua o ka hoʻohana ʻana iā ia e ʻimi ai i nā pōpoki
Ua hoʻoikaika ʻia au e kākau i kēia ʻatikala e ka nui o nā mea e pili ana i ka loiloi static e ulu nui mai nei i koʻu nānā. ʻO ka mea mua, kēia PVS-studio blog, e hoʻolaha ikaika ana iā ia iho ma Habré me ke kōkua o nā loiloi o nā hewa i ʻike ʻia e kā lākou mea hana ma nā papahana open source. Ua hoʻokō ʻia ʻo PVS-studio Kākoʻo Java, a, ʻoiaʻiʻo hoʻi, nā mea hoʻomohala o IntelliJ IDEA, nona ka mea hoʻoponopono i kūkulu ʻia ʻo ia paha ka mea kiʻekiʻe loa no Java i kēia lā, ʻaʻole hiki ke noho mamao.
I ka heluhelu ʻana i kēlā mau loiloi, loaʻa iā ʻoe ka manaʻo e kamaʻilio nei mākou e pili ana i kahi elixir magic: e kaomi i ke pihi, a eia - kahi papa inoa o nā hemahema i mua o kou mau maka. Me he mea lā i ka hoʻomaikaʻi ʻana o nā mea loiloi, e ʻike koke ʻia ka nui o nā pōpoki, a ʻoi aku ka maikaʻi o nā huahana i nānā ʻia e kēia mau robots, me ka ʻole o kā mākou hoʻoikaika ʻana.
Akā ʻaʻohe elixirs magic. Makemake au e kamaʻilio e pili ana i ka mea maʻamau ʻaʻole i kamaʻilio e pili ana i nā pou e like me "eia nā mea i loaʻa i kā mākou robota": he aha nā mea loiloi hiki ʻole ke hana, he aha kā lākou kuleana maoli a wahi i ke kaʻina hoʻopuka polokalamu, a pehea e hoʻokō pono ai iā lākou. .
He aha ka loiloi kumu kumu, mai ka manaʻo kūpono? Hāʻawi mākou i kekahi code kumu ma ke ʻano he hoʻokomo, a ma ke ʻano he hoʻopuka, i ka manawa pōkole (ʻoi aku ka pōkole ma mua o nā hoʻokolohua holo ʻana) loaʻa iā mākou kekahi ʻike e pili ana i kā mākou ʻōnaehana. ʻO ka palena kumu a me ka makemakika hiki ʻole ke loaʻa iā mākou kahi papa haiki o ka ʻike ma kēia ala.
ʻO ka laʻana kaulana loa o kahi pilikia ʻaʻole hiki ke hoʻoponopono ʻia me ka hoʻohana ʻana i ka loiloi static pilikia pani: He kumumanaʻo kēia e hōʻoiaʻiʻo ana he hiki ʻole ke hoʻomohala i kahi algorithm maʻamau e hiki ke hoʻoholo mai ke kumu kumu o kahi papahana inā e loop a hoʻopau paha i ka manawa palena. ʻO ka hoʻonui ʻia o kēia theorem Ka manaʻo o ka laiki, e ʻōlelo ana no kēlā me kēia waiwai waiwai ʻole o nā hana helu, ʻo ka hoʻoholo ʻana inā loiloi ka papahana arbitrary i kahi hana me ia waiwai he pilikia algorithmically intractable. No ka laʻana, ʻaʻole hiki ke kākau i kahi mea hoʻoponopono e hiki ke hoʻoholo mai kekahi code kumu inā he hoʻokō ka papahana e kālailai ʻia ana i kahi algorithm e helu ana, e ʻōlelo, ka ʻālike o ka integer.
No laila, ʻo ka hana o nā mea anana static he mau palena hiki ʻole ke hoʻokō. ʻAʻole hiki ke ʻike ʻia kahi mea hoʻoponopono static i nā hihia āpau e like me, no ka laʻana, ka hanana ʻana o kahi "null pointer exception" i nā ʻōlelo e ʻae ai i ka waiwai o ka null, a i ʻole i nā hihia āpau e hoʻoholo i ka hanana ʻana o kahi " ʻAʻole i loaʻa ke ʻano" ma nā ʻōlelo i paʻi ʻia. ʻO nā mea a pau e hiki ai i ka mea loiloi static kiʻekiʻe ke hana i nā hihia kūikawā, ʻo ka helu o ia mau pilikia, ma waena o nā pilikia āpau e pili ana i kāu code kumu, ʻo ia, me ka hoʻonui ʻole ʻana, he hāʻule i ka moana.
ʻAʻole pili ka nānā ʻana i ka ʻikepili i ka ʻimi ʻana i nā pōpoki
Mai ka mea i luna aʻe, ʻo ka hopena: ʻaʻole ʻo ka loiloi static he mea e hōʻemi ai i ka helu o nā hemahema i kahi papahana. Makemake wau e ʻōlelo: ke noi ʻia i kāu papahana no ka manawa mua, e ʻike ʻo ia i nā wahi "ʻoluʻolu" i ke code, akā, ʻoi loa, ʻaʻole ia e ʻike i nā hemahema e pili ana i ka maikaʻi o kāu papahana.
ʻO nā hiʻohiʻona o nā hemahema i ʻike maʻalahi ʻia e nā mea loiloi he mea kupanaha, akā ʻaʻole pono mākou e poina ua loaʻa kēia mau hiʻohiʻona ma ka nānā ʻana i kahi pūʻulu nui o nā codebases nui. Ma ke kumu like, loaʻa i nā mea hackers ka manawa e hoʻāʻo ai i kekahi mau huaʻōlelo maʻalahi ma ka helu nui o nā moʻolelo e loaʻa i kēlā mau moʻolelo i loaʻa kahi ʻōlelo huna.
ʻAʻole pono e hoʻohana ʻia ka loiloi static? ʻAʻole naʻe! A no ke kumu like e pono ai e nānā i kēlā me kēia ʻōlelo huna hou e hōʻoia i ka hoʻokomo ʻia i ka papa inoa o nā huaʻōlelo "maʻalahi".
ʻOi aku ka nānā ʻana o Static ma mua o ka ʻimi ʻana i nā pōpoki
ʻO ka ʻoiaʻiʻo, ʻoi aku ka laulā o nā pilikia i hoʻoponopono ʻia e ka nānā ʻana. Ma hope o nā mea a pau, ma ka laulā, ʻo ka loiloi static kekahi hōʻoia o nā code kumu i hana ʻia ma mua o ka hoʻomaka ʻana. Eia kekahi mau mea hiki iā ʻoe ke hana:
Ke nānā ʻana i ke ʻano coding ma ke ʻano ākea o ka huaʻōlelo. Hoʻopili kēia i ka hoʻopololei ʻana, e ʻimi ana i ka hoʻohana ʻana i nā pani hakahaka/ʻokoʻa, ka hoʻonohonoho ʻana i nā paepae ma nā metric e like me ka helu o nā laina/ka paʻakikī cyclomatic o kahi ʻano, a me nā mea ʻē aʻe. Ma Java, ʻo ia ka mea hana ʻo Checkstyle, ma Python - flake8. Kapa ʻia nā papahana o kēia papa he "linters."
ʻAʻole hiki ke nānā ʻia ke code executable wale nō. Hiki ke nānā 'akomi 'ia nā waihona waiwai e like me JSON, YAML, XML, .properties (a pono!). Ma hope o nā mea a pau, ʻoi aku ka maikaʻi o ka ʻike ʻana ua haki ka hale JSON ma muli o kekahi mau huaʻōlelo i hoʻopaʻa ʻole ʻia i ka wā mua o ka hōʻoia ʻana i ka Pull Request ma mua o ka wā o ka hoʻokō ʻana a i ʻole ka manawa holo? Loaʻa nā mea hana kūpono: e.g. YAMLlint, JSONLint.
ʻO ka hōʻuluʻulu ʻana (a i ʻole ka parsing no nā ʻōlelo hoʻonohonoho hoʻoikaika kino) ʻo ia kekahi ʻano o ka loiloi static. Ma keʻano laulā, hiki i nā mea hōʻuluʻulu ke hana i nā ʻōlelo aʻo e hōʻike ana i nā pilikia me ka maikaʻi o ka code kumu a ʻaʻole pono e mālama ʻia.
I kekahi manawa ʻoi aku ka hoʻohui ʻana ma mua o ka hoʻopili ʻana i nā code executable. No ka laʻana, inā loaʻa iā ʻoe nā palapala i ke ʻano Ascii Kahuna, a laila i ka manawa e hoʻololi ai i HTML/PDF ka mea hoʻokele AsciiDoctor (Pākuʻi Maven) hiki ke hoʻopuka i nā ʻōlelo aʻo, no ka laʻana, e pili ana i nā loulou kūloko i haki. A he kumu maikaʻi kēia e ʻae ʻole ai i ka Pull Request me nā hoʻololi palapala.
ʻO ka nānā ʻana i ka huaʻōlelo kekahi ʻano o ka nānā ʻana. Mea hoohana aspell hiki iā ia ke nānā i ka spelling ʻaʻole wale ma nā palapala, akā i nā code kumu papahana (nā manaʻo a me nā literals) ma nā ʻōlelo papahana like ʻole, me C/C++, Java a me Python. ʻO ka hewa o ka spelling i loko o ka mea hoʻohana a i ʻole nā palapala he hemahema hoʻi!
Nā ho'āʻo hoʻonohonoho (e pili ana iā lākou - ʻike. kēia и kēia nā hōʻike), ʻoiai ua hoʻokō ʻia i loko o kahi manawa hoʻāʻo ʻāpana e like me pytest, ʻoiaʻiʻo nō kekahi ʻano o ka nānā ʻana static, ʻoiai ʻaʻole lākou e hoʻokō i nā code kumu i ka wā o kā lākou hoʻokō ʻana.
E like me kāu e ʻike ai, ʻoi aku ka liʻiliʻi o ka ʻimi ʻana i nā pōpoki ma kēia papa inoa, a loaʻa nā mea ʻē aʻe ma ka hoʻohana ʻana i nā hāmeʻa manuahi manuahi.
ʻO wai o kēia mau ʻano o ka loiloi static āu e hoʻohana ai i kāu papahana? ʻOiaʻiʻo, ʻoi aku ka maikaʻi! ʻO ka mea nui ka hoʻokō pono ʻana, e kūkākūkā hou ʻia.
ʻO ka pipeline hāʻawi ma ke ʻano he kānana multi-stage a me ka nānā ʻana static e like me kāna pae mua
ʻO ka metaphor maʻamau no ka hoʻohui mau ʻana he pipeline e holo ai nā loli, mai ka hoʻololi ʻana i ke code kumu a hiki i ka lawe ʻana i ka hana. ʻO ke kaʻina maʻamau o nā pae i kēia pipeline e like me kēia:
ka nānā ʻana paʻa
ka houluulu ana
hoʻāʻo ʻāpana
nā hoʻokolohua hoʻohui
Nā hoʻokolohua UI
nānā lima lima
ʻAʻole hoʻololi ʻia nā hoʻololi i hōʻole ʻia ma ka pae Nth o ka pipeline i ka pae N+1.
No ke aha i kēia ala a ʻaʻole ma kahi ʻē aʻe? Ma ka ʻāpana hoʻāʻo o ka pipeline, e ʻike nā mea hōʻike i ka pyramid hoʻāʻo kaulana.
Aia ma lalo o kēia pyramid nā ho'āʻo i maʻalahi ke kākau, ʻoi aku ka wikiwiki o ka hoʻokō ʻana, a ʻaʻohe manaʻo e hāʻule. No laila, ʻoi aku ka nui o lākou, pono lākou e uhi i nā code hou aʻe a hoʻokō mua ʻia. Ma ka piko o ka pyramid, he ʻoiaʻiʻo ka mea ʻē aʻe, no laila e hoʻemi ʻia ka helu o ka hoʻohui a me nā hoʻāʻo UI i ka liʻiliʻi e pono ai. ʻO ke kanaka i loko o kēia kaulahao ka waiwai nui loa, lohi a hilinaʻi ʻole, no laila aia ʻo ia ma ka hope loa a hana wale i ka hana inā ʻaʻole i loaʻa nā hemahema i nā pae mua. Eia naʻe, hoʻohana ʻia nā loina like e kūkulu i kahi pipeline i nā ʻāpana pili ʻole i ka hoʻāʻo!
Makemake wau e hāʻawi i kahi hoʻohālikelike ma ke ʻano o kahi ʻōnaehana kānana wai multi-stage. Hāʻawi ʻia ka wai lepo (nā hoʻololi me nā hemahema) i ka mea hoʻokomo; ma ka hoʻopuka e loaʻa iā mākou ka wai maʻemaʻe, kahi i hoʻopau ʻia ai nā mea haumia makemake ʻole.
E like me kāu e ʻike ai, hoʻolālā ʻia nā kānana hoʻomaʻemaʻe i hiki i kēlā me kēia cascade hope ke kānana i kahi hapa o nā mea haumia. I ka manawa like, ʻoi aku ka kiʻekiʻe o nā cascades hoʻomaʻemaʻe coarser a me ke kumu kūʻai haʻahaʻa. Ma kā mākou hoʻohālikelike, ʻo ia ka mea ʻoi aku ka wikiwiki o ka hoʻokomo ʻana i nā ʻīpuka maikaʻi, koi ʻoi aku ka liʻiliʻi o ka hoʻoikaika ʻana e hoʻomaka, a ʻoi aku ka maikaʻi ʻole o ka hana - a ʻo ia ke kaʻina i kūkulu ʻia ai. ʻO ke kuleana o ka loiloi static, e like me kā mākou e hoʻomaopopo nei, hiki ke hoʻopau wale i nā hemahema nui loa, ʻo ia ke kuleana o ka "mud" grid i ka hoʻomaka ʻana o ka cascade kānana.
ʻAʻole hoʻomaikaʻi ʻo Static analysis iā ia iho i ka maikaʻi o ka huahana hope, e like me ka "pena ʻōpala" ʻaʻole hiki ke inu i ka wai. Eia naʻe, i ka hui pū me nā mea ʻē aʻe o ka pipeline, ʻike ʻia kona koʻikoʻi. ʻOiai i loko o kahi kānana multistage hiki i nā pae hoʻopuka ke hopu i nā mea a pau i hana ʻia e nā pae hoʻokomo, ua maopopo ka hopena o ka hoʻāʻo e hana me nā pae hoʻomaʻemaʻe maikaʻi wale nō, me ka ʻole o nā pae hoʻokomo.
ʻO ke kumu o ka "mud trap" e hoʻokuʻu i nā cascade ma hope mai ka hopu ʻana i nā hemahema nui loa. No ka laʻana, ma ka liʻiliʻi loa, ʻaʻole pono e hoʻopilikia ʻia ka mea e hana ana i ka loiloi code e nā code i hōʻano hewa ʻia a me ka uhaki ʻana i nā kūlana coding i hoʻokumu ʻia (e like me nā pale ʻē aʻe a i ʻole nā lālā pūnana hohonu loa). Pono e hopu ʻia nā pōpoki e like me nā NPE e nā hoʻāʻo ʻāpana, akā inā ma mua o ka hoʻāʻo ʻana e hōʻike mai ka mea loiloi iā mākou e hiki mai ana kahi bug, e wikiwiki loa kēia i ka hoʻoponopono ʻana.
Ke manaʻoʻiʻo nei au ua maopopo ke kumu e hoʻomaikaʻi ʻole ai ka loiloi static i ka maikaʻi o ka huahana inā hoʻohana ʻia i kekahi manawa, a pono e hoʻohana mau ʻia e kānana i nā loli me nā hemahema nui. ʻO ka nīnau no ka hoʻohana ʻana i kahi mea ananala static e hoʻomaikaʻi i ka maikaʻi o kāu huahana e like me ka nīnau ʻana, "E hoʻomaikaʻi ʻia ka wai i lawe ʻia mai loko mai o ka loko lepo i ka maikaʻi o ka inu ʻana inā e hele ʻia i loko o kahi colander?"
Ka hoʻokō ʻana i kahi papahana hoʻoilina
He nīnau koʻikoʻi koʻikoʻi: pehea e hoʻokō ai i ka loiloi static i ke kaʻina hana hoʻohui mau ma ke ʻano he "puka maikaʻi"? I ka hihia o nā ho'āʻo maʻalahi, maopopo nā mea a pau: aia kahi hoʻonohonoho o nā hoʻokolohua, ʻo ka hemahema o kekahi o lākou ke kumu kūpono e manaʻoʻiʻo ai ʻaʻole i hala ka ʻaha i ka ʻīpuka maikaʻi. ʻAʻole hiki i ka hoʻāʻo ʻana e hoʻokomo i ka ʻīpuka ma ke ʻano like e pili ana i nā hopena o kahi loiloi static: ua nui loa nā ʻōlelo aʻoaʻo loiloi ma ka code hoʻoilina, ʻaʻole ʻoe makemake e haʻalele loa iā lākou, akā hiki ʻole ke hoʻōki i ka hoʻouna ʻana i kahi huahana. no ka mea, loaʻa nā ʻōlelo aʻoaʻo loiloi.
Ke hoʻohana ʻia no ka manawa mua, hoʻopuka ka mea loiloi i ka nui o nā ʻōlelo luhi ma kekahi papahana, ʻo ka hapa nui ʻaʻole pili i ka hana kūpono o ka huahana. ʻAʻole hiki ke hoʻoponopono i kēia mau ʻōlelo a pau i ka manawa hoʻokahi, a ʻaʻole pono ka nui. Ma hope o nā mea a pau, ʻike mākou e hana ana kā mākou huahana holoʻokoʻa, ʻoiai ma mua o ka hoʻokomo ʻana i ka loiloi static!
ʻO ka hopena, ua kaupalena ʻia nā mea he nui i ka hoʻohana ʻana i ka loiloi static, a i ʻole e hoʻohana wale ia ma ke ʻano ʻike, ke hoʻopuka wale ʻia kahi hōʻike loiloi i ka wā e ʻākoakoa ai. Ua like kēia me ka loaʻa ʻole o ka nānā ʻana, no ka mea inā he nui nā ʻōlelo aʻo iā mākou, a laila ʻaʻole ʻike ʻia ka hanana ʻana o kekahi (ʻaʻole koʻikoʻi) i ka wā e hoʻololi ai i ke code.
Ua ʻike ʻia nā ʻano o ka hoʻokomo ʻana i nā ʻīpuka maikaʻi:
Ka hoʻonoho ʻana i ka palena i ka huina o nā ʻōlelo aʻo a i ʻole ka helu o nā ʻōlelo aʻo i puʻunaue ʻia e ka helu o nā laina o ke code. Hana maikaʻi ʻole kēia, no ka mea, ʻae ʻia kēlā ʻīpuka i nā loli me nā hemahema hou e hele ai, ʻoiai ʻaʻole i ʻoi aku ko lākou palena.
Hoʻoponopono, i kekahi manawa, nā ʻōlelo aʻo kahiko a pau i ke code e like me ka nānā ʻole ʻia, a hōʻole e kūkulu i ka wā e puka mai ai nā ʻōlelo luhi hou. Hāʻawi ʻia kēia hana e PVS-studio a me kekahi mau kumuwaiwai pūnaewele, no ka laʻana, Codacy. ʻAʻole i loaʻa iaʻu ka manawa e hana ai ma PVS-studio, no kaʻu ʻike me Codacy, ko lākou pilikia nui ʻo ka hoʻoholo ʻana i ka mea "kahiko" a he aha ka "hou" hewa he algorithm paʻakikī ʻaʻole e hana mau. pololei, ʻoi aku ka nui inā hoʻololi a hoʻololi hou ʻia nā faila. I koʻu ʻike, hiki iā Codacy ke haʻalele i nā ʻōlelo aʻo hou i kahi noi huki, ʻoiai i ka manawa like ʻaʻole e hāʻawi i kahi noi huki ma muli o nā ʻōlelo aʻo i pili ʻole i nā loli i ke code o kahi PR i hāʻawi ʻia.
I koʻu manaʻo, ʻo ka hopena maikaʻi loa ka mea i wehewehe ʻia ma ka puke Lawe mau "ʻano ratcheting". ʻO ka manaʻo kumu, ʻo ka helu o nā ʻōlelo aʻoaʻo static he waiwai o kēlā me kēia hoʻokuʻu ʻana, a ʻae ʻia nā hoʻololi wale nō ʻaʻole e hoʻonui i ka nui o nā ʻōlelo aʻo.
Ratchet
Hana ia penei:
I ka pae mua, ua hana ʻia kahi moʻolelo ma ka metadata e pili ana i ka hoʻokuʻu ʻana i ka helu o nā ʻōlelo aʻo i ke code i loaʻa e nā mea nānā. No laila, ke kūkulu ʻoe i luna, kākau kāu luna waihona ʻaʻole "hoʻokuʻu i ka 7.0.2", akā "hoʻokuʻu iā 7.0.2 i loaʻa nā ʻōlelo aʻo 100500." Inā ʻoe e hoʻohana i kahi mana hoʻopaʻa waihona kiʻekiʻe (e like me Artifactory), maʻalahi ka mālama ʻana i nā metadata e pili ana i kāu hoʻokuʻu ʻana.
I kēia manawa i kēlā me kēia noi huki, ke kūkulu ʻia, hoʻohālikelike i ka helu o nā ʻōlelo aʻo i loaʻa me ka helu o nā ʻōlelo aʻo i loaʻa i ka hoʻokuʻu o kēia manawa. Inā alakaʻi ʻo PR i ka hoʻonui ʻana i kēia helu, a laila ʻaʻole i hala ke code i ka ʻīpuka maikaʻi no ka loiloi static. Inā emi a loli ʻole ka helu o nā ʻōlelo aʻo, a laila ua hala.
Ma ka hoʻokuʻu aʻe, e hoʻopaʻa hou ʻia ka helu o nā ʻōlelo luhi i ka metadata hoʻokuʻu.
No laila liʻiliʻi a paʻa (e like me ka hana ʻana o ka ratchet), e maʻalahi ka helu o nā ʻōlelo aʻo i ka ʻole. ʻOiaʻiʻo, hiki ke hoʻopunipuni ʻia ka ʻōnaehana ma ka hoʻokomo ʻana i kahi ʻōlelo aʻo hou, akā hoʻoponopono i ka haʻi. He mea maʻamau kēia, no ka mea ma kahi lōʻihi e hāʻawi i nā hopena: hoʻoponopono ʻia nā ʻōlelo aʻo, ma ke ʻano he kānāwai, ʻaʻole hoʻokahi, akā i loko o kahi hui o kekahi ʻano i ka manawa hoʻokahi, a ua hoʻopau koke ʻia nā ʻōlelo aʻo maʻalahi a pau.
Hōʻike kēia pakuhi i ka huina o nā ʻōlelo aʻo Checkstyle no ʻeono mahina o ka hana ʻana o ia "ratchet" ma kekahi o kā mākou papahana OpenSource. Ua emi iho ka helu o nā ʻōlelo aʻo ma ke ʻano o ka nui, a ua hana maoli kēia, e like me ka hoʻomohala huahana!
Ke hoʻohana nei au i kahi mana i hoʻololi ʻia o kēia ʻano hana, e helu kaʻawale ana i nā ʻōlelo aʻo e ka module papahana a me ka mea hana loiloi, ka hopena i kahi faila YAML me ke kūkulu ʻana i nā metadata e like me kēia:
Ma kekahi ʻōnaehana CI kiʻekiʻe, hiki ke hoʻokō ʻia ka ratchet no nā mea hana loiloi static me ka hilinaʻi ʻole i nā plugins a me nā mea hana ʻekolu. Hoʻopuka kēlā me kēia mea kānana i kāna hōʻike ponoʻī ma kahi kikokikona maʻalahi a i ʻole XML maʻalahi i maʻalahi ke kālailai. ʻO nā mea a pau i koe, ʻo ke kākau ʻana i ka loiloi kūpono i ka palapala CI. Hiki iā ʻoe ke ʻike pehea e hoʻokō ʻia ai kēia i kā mākou papahana open source e pili ana iā Jenkins a me Artifactory maanei ai ole ia, maanei. Aia nā laʻana ʻelua i ka waihona ratchetlib: ʻano hana countWarnings() helu i nā huaʻōlelo xml i nā faila i hana ʻia e Checkstyle a me Spotbugs ma ke ʻano maʻamau, a compareWarningMaps() hoʻokō i ka ratchet hoʻokahi, hoʻolei i kahi hewa ke piʻi ka helu o nā ʻōlelo aʻo i kekahi o nā ʻāpana.
Hiki ke hoʻokō maikaʻi ʻia ka "ratchet" no ka nānā ʻana i ka spelling o nā manaʻo, kikokikona literals a me nā palapala me ka aspell. E like me kāu e ʻike ai, i ka nānā ʻana i ka spelling, ʻaʻole pololei nā huaʻōlelo a pau i ʻike ʻole ʻia i ka puke wehewehe ʻōlelo maʻamau; hiki ke hoʻohui ʻia i ka puke wehewehe mea hoʻohana. Inā ʻoe e hana i kahi puke wehewehe ʻōlelo maʻamau o ke kumu kumu o ka papahana, a laila hiki ke hoʻonohonoho ʻia ka ʻīpuka o ka spelling quality penei: holo aspell me kahi puke wehewehe kikoʻī a maʻamau. ʻaʻole pono ʻaʻole ʻike i nā kuhi hewa.
E pili ana i ke koʻikoʻi o ka hoʻoponopono ʻana i ka mana anala
I ka hopena, ʻo ka manaʻo e hoʻomaopopo ʻia ʻaʻole pehea ʻoe e hoʻokō ai i ka nānā ʻana i kāu pipeline hoʻouna, pono e hoʻopaʻa ʻia ka mana o ka analyer. Inā ʻoe e ʻae i ka mea ananala e hoʻopou koke, a laila i ka wā e hui pū ai i ka noi huki hou, hiki ke "pop up" nā hemahema hou ʻaʻole pili i nā hoʻololi code, akā pili i ka mea hiki i ka mea loiloi hou ke ʻimi i nā hemahema - a e uhaki kēia i kāu hana o ka ʻae ʻana i nā noi huki. ʻO ka hoʻomaikaʻi ʻana i kahi mea loiloi he hana noʻonoʻo. Eia nō naʻe, ʻo ka hoʻopaʻa paʻa ʻana o ka mana o kēlā me kēia ʻāpana hui he mea pono ia a he kumuhana no kahi kūkākūkā kaʻawale.
haʻina
ʻAʻole ʻike ʻia ka ʻikepili static no ʻoe a ʻaʻole e hoʻomaikaʻi i ka maikaʻi o kāu huahana ma muli o kahi noi hoʻokahi. Hiki ke loaʻa ka hopena maikaʻi i ka maikaʻi ma o kāna hoʻohana mau ʻana i ka wā o ka lawe ʻana.
ʻAʻole ʻo ka ʻimi ʻana i nā pōpoki ka hana nui o ka nānā ʻana; aia ka hapa nui o nā hana pono i nā mea hana opensource.
E hoʻokō i nā ʻīpuka maikaʻi e pili ana i nā hopena o ka loiloi static ma ka pae mua loa o ka pipeline hoʻopuka, me ka hoʻohana ʻana i kahi "ratchet" no ke code hoʻoilina.