I ka PVS-Studio analyzer no nā ʻōlelo C a me C ++ ma Linux a me macOS, e hoʻomaka ana mai ka mana 7.04, ua ʻike ʻia kahi koho hoʻāʻo e nānā i ka papa inoa o nā faila i kuhikuhi ʻia. Ke hoʻohana nei i ke ʻano hou, hiki iā ʻoe ke hoʻonohonoho i ka mea ananala e nānā i nā hana a huki i nā noi. E haʻi kēia ʻatikala iā ʻoe pehea e hoʻonohonoho ai i ka nānā ʻana i ka papa inoa o nā faila i hoʻololi ʻia o kahi papahana GitHub i nā ʻōnaehana CI (Continuous Integration) kaulana e like me Travis CI, Buddy a me AppVeyor.
Ke ʻano nānā papa inoa waihona
I ka mana PVS-Studio 7.04 no Linux a me macOS, ua ʻike ʻia kahi ʻano no ka nānā ʻana i ka papa inoa o nā faila kumu. Hana kēia no nā papahana nona ka ʻōnaehana kūkulu e hiki ai iā ʻoe ke hana i kahi faila
Eia kekahi, hiki ke hoʻohana pū ʻia ke ʻano loiloi papa inoa waihona me ka strace trace log o ka hoʻokuʻu ʻana o ka mea hoʻopili (pvs-studio-analyzer trace). No ka hana ʻana i kēia, pono ʻoe e hana mua i kahi kūkulu piha o ka papahana a hahai iā ia i ʻohi ai ka mea nāna e hōʻiliʻili i ka ʻike piha e pili ana i nā ʻāpana compilation o nā faila a pau e nānā ʻia.
Eia nō naʻe, he drawback koʻikoʻi kēia koho - pono ʻoe e hana i kahi hana piha piha o ka papahana holoʻokoʻa i kēlā me kēia manawa āu e holo ai, ʻo ia ka mea e kūʻē i ka manaʻo o ka nānā wikiwiki ʻana i kahi hana. A i ʻole, inā ʻoe e hūnā i ka hopena o ka trace ponoʻī, ʻaʻole i hoʻopau ʻia nā holo hope o ka mea kānana inā hoʻololi ke ʻano hilinaʻi o nā faila kumu ma hope o ka trace (no ka laʻana, hoʻohui ʻia kahi #include hou i kekahi o nā faila kumu).
No laila, ʻaʻole mākou e paipai i ka hoʻohana ʻana i ke ʻano loiloi papa inoa faila me ka trace log e nānā i nā commits a huki i nā noi. Inā hiki iā ʻoe ke hana i kahi kūkulu hoʻonui i ka wā e nānā ai i kahi commit, e noʻonoʻo e hoʻohana i ke ʻano
Mālama ʻia ka papa inoa o nā waihona kumu no ka nānā ʻana i kahi faila kikokikona a hāʻawi ʻia i ka mea hoʻoponopono me ka hoʻohana ʻana i ke ʻano -S:
pvs-studio-analyzer analyze ... -f build/compile_commands.json -S check-list.txt
Hōʻike kēia faila i nā ala pili a pili pono paha i nā faila, a pono kēlā me kēia faila hou ma kahi laina hou. ʻAe ʻia ka wehewehe ʻana ʻaʻole wale i nā inoa faila no ka nānā ʻana, akā i nā kikokikona like ʻole. E ʻike ka mea hoʻoponopono ʻaʻole kēia he faila a e haʻalele i ka laina. Hiki ke hoʻohana ʻia kēia no ka ʻōlelo ʻana inā hoʻonohonoho lima ʻia nā faila. Eia nō naʻe, e hana pinepine ʻia kahi papa inoa o nā faila i ka wā o ka nānā ʻana ma CI, no ka laʻana, hiki i kēia mau faila mai kahi noi commit a huki paha.
I kēia manawa, me ka hoʻohana ʻana i kēia ʻano, hiki iā ʻoe ke nānā wikiwiki i ke code hou ma mua o ke komo ʻana i ka lālā hoʻomohala nui. E hōʻoia i ka pane ʻana o ka ʻōnaehana scanning i nā ʻōlelo aʻoaʻo analyer, ʻo ka pono mea hoʻololi-palapala hoʻohui ʻia ka hae --indicat-warnings:
plog-converter ... --indicate-warnings ... -o /path/to/report.tasks ...
Me kēia hae, e hoʻihoʻi ka mea hoʻololi i ka helu helu ʻole inā loaʻa nā ʻōlelo aʻo i loko o ka hōʻike loiloi. Ke hoʻohana nei i ke code hoʻihoʻi, hiki iā ʻoe ke ālai i kahi hook precommit, commit, a i ʻole huki noi, a hiki ke hōʻike ʻia, kaʻana like, a i hoʻouna ʻia ma ka leka uila ka hōʻike analyer i hana ʻia.
Nānā. Ke hoʻomaka mua ʻoe e nānā i kahi papa inoa o nā faila, e nānā ʻia ka papahana holoʻokoʻa, no ka mea pono ka mea anaana e hoopuka i ka waihona o na mea hilinai o na waihona kumu papahana ma na waihona poo. He hiʻohiʻona kēia o ka nānā ʻana i nā faila C a me C++. I ka wā e hiki mai ana, hiki ke hoʻopaʻa ʻia ka waihona hilinaʻi a hoʻonui ʻia e ka mea ananala. ʻO ka maikaʻi o ka nānā ʻana i ka wā e hoʻohana ai i ke ʻano loiloi papa inoa faila ma mua o ka hoʻohana ʻana i ke ʻano loiloi incremental ʻo ia wale nō ka mea e pono ai ʻoe e hūnā i kēlā faila a ʻaʻole nā faila mea.
Nā loina maʻamau o ka ʻimi noiʻi huki
ʻO ka nānā ʻana i ka papahana holoʻokoʻa e lōʻihi ka manawa, no laila he mea kūpono ke nānā i kahi ʻāpana wale nō. ʻO ka pilikia, pono ʻoe e hoʻokaʻawale i nā faila hou mai ke koena o nā faila papahana.
E nānā kākou i kahi laʻana o kahi lāʻau commit me nā lālā ʻelua:
E noʻonoʻo kākou i kēlā hana A1 loaʻa i kahi helu helu nui i hoʻāʻo ʻia. Ma mua iki ua hana mākou i lālā mai ka commit A1 a hoʻololi i kekahi mau faila.
Ua ʻike ʻoe ma hope A1 ʻelua mau hana hou i hana ʻia, akā he hui pū kēia o nā lālā ʻē aʻe, no ka mea, ʻaʻole mākou e hoʻohiki haku. A i kēia manawa ua hiki mai ka manawa hotfix mākaukau. ʻO ia ke kumu i puka mai ai kahi noi huki no ka hui ʻana B3 и A3.
ʻOiaʻiʻo, hiki ke nānā i ka hopena holoʻokoʻa o kā lākou hui ʻana, akā ʻoi aku ka nui o ka manawa a me ke kūpono ʻole, no ka mea he liʻiliʻi nā faila i hoʻololi ʻia. No laila, ʻoi aku ka maikaʻi o ka nānā ʻana i nā mea i hoʻololi ʻia.
No ka hana ʻana i kēia, loaʻa iā mākou ka ʻokoʻa ma waena o nā lālā, aia ma ke poʻo o ka lālā a mākou e makemake ai e hoʻohui i haku:
git diff --name-only HEAD origin/$MERGE_BASE > .pvs-pr.list
$MERGE_BASE e nana pono kakou mahope. ʻO ka ʻoiaʻiʻo, ʻaʻole kēlā me kēia lawelawe CI e hāʻawi i ka ʻike kūpono e pili ana i ka waihona no ka hoʻohui ʻana, no laila i kēlā me kēia manawa pono ʻoe e hele mai me nā ala hou e loaʻa ai kēia ʻikepili. E wehewehe ʻia kēia ma lalo o kēlā me kēia lawelawe pūnaewele i wehewehe ʻia.
No laila, loaʻa iā mākou ka ʻokoʻa ma waena o nā lālā, a i ʻole, kahi papa inoa o nā faila i hoʻololi ʻia. I kēia manawa pono mākou e hāʻawi i ka faila .pvs-pr.list (ua hoʻihoʻi mākou i ka hopena ma luna aʻe) i ka mea hoʻoponopono:
pvs-studio-analyzer analyze -j8
-o PVS-Studio.log
-S .pvs-pr.list
Ma hope o ka nānā ʻana, pono mākou e hoʻololi i ka faila log (PVS-Studio.log) i kahi ʻano maʻalahi e heluhelu:
plog-converter -t errorfile PVS-Studio.log --cerr -w
E papa inoa kēia kauoha i nā hewa i loko
I kēia manawa pono mākou e hōʻike i nā hewa wale nō, akā e hoʻomaopopo pū i kā mākou lawelawe no ka hui ʻana a me ka hoʻāʻo ʻana e pili ana i nā pilikia. No kēia kumu, ua hoʻohui ʻia kahi hae i ka mea hoʻololi -W (--indicat-warnings). Inā loaʻa ma ka liʻiliʻi hoʻokahi ʻōlelo aʻoaʻo analyer, ʻo ke code hoʻihoʻi pono mea hoʻololi-palapala e hoʻololi i ka 2, ʻo ia hoʻi, e hoʻomaopopo i ka lawelawe CI e pili ana i ka hiki ʻana o nā hewa kūpono i nā faila noi huki.
ʻO Travis CI
Hana ʻia ka hoʻonohonoho ma ke ʻano he faila .travis.yml. No ka maʻalahi, ke aʻo aku nei au iā ʻoe e hoʻokomo i nā mea āpau i kahi palapala bash ʻokoʻa me nā hana e kāhea ʻia mai ka faila .travis.yml (bash script_name.sh function_name).
E hoʻohui mākou i ke code pono i ka palapala ma ke kī, ma kēia ala e loaʻa ai iā mākou nā hana hou aku. Ma ka pauku e hoʻohui e kakau kakou i keia:
install:
- bash .travis.sh travis_install
Inā loaʻa iā ʻoe nā ʻōlelo aʻoaʻo, hiki iā ʻoe ke hoʻololi iā lākou i loko o ka palapala, e wehe i nā hyphens.
E wehe kākou i ka faila .travis.sh a hoʻohui i ka hoʻonohonoho ʻanakala i ka hana travis_install():
travis_install() {
wget -q -O - https://files.viva64.com/etc/pubkey.txt
| sudo apt-key add -
sudo wget -O /etc/apt/sources.list.d/viva64.list
https://files.viva64.com/etc/viva64.list
sudo apt-get update -qq
sudo apt-get install -qq pvs-studio
}
I kēia manawa e hoʻohui i ka ʻāpana kōmi'ōkuhi e holo ana i ka noonoo ana:
script:
- bash .travis.sh travis_script
A ma ka palapala bash:
travis_script() {
pvs-studio-analyzer credentials $PVS_USERNAME $PVS_KEY
if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then
git diff --name-only origin/HEAD > .pvs-pr.list
pvs-studio-analyzer analyze -j8
-o PVS-Studio.log
-S .pvs-pr.list
--disableLicenseExpirationCheck
else
pvs-studio-analyzer analyze -j8
-o PVS-Studio.log
--disableLicenseExpirationCheck
fi
plog-converter -t errorfile PVS-Studio.log --cerr -w
}
Pono e holo kēia code ma hope o ke kūkulu ʻana i ka papahana, no ka laʻana, inā ua kūkulu ʻoe ma CMake:
travis_script() {
CMAKE_ARGS="-DCMAKE_EXPORT_COMPILE_COMMANDS=On ${CMAKE_ARGS}"
cmake $CMAKE_ARGS CMakeLists.txt
make -j8
}
E like me kēia:
travis_script() {
CMAKE_ARGS="-DCMAKE_EXPORT_COMPILE_COMMANDS=On ${CMAKE_ARGS}"
cmake $CMAKE_ARGS CMakeLists.txt
make -j8
pvs-studio-analyzer credentials $PVS_USERNAME $PVS_KEY
if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then
git diff --name-only origin/HEAD > .pvs-pr.list
pvs-studio-analyzer analyze -j8
-o PVS-Studio.log
-S .pvs-pr.list
--disableLicenseExpirationCheck
else
pvs-studio-analyzer analyze -j8
-o PVS-Studio.log
--disableLicenseExpirationCheck
fi
plog-converter -t errorfile PVS-Studio.log --cerr -w
}
Ua ʻike mua paha ʻoe i kēia mau ʻano hoʻololi kaiapuni $TRAVIS_PULL_REQUEST и $TRAVIS_BRANCH. Hoʻolaha kūʻokoʻa ʻo Travis CI iā lākou:
- $TRAVIS_PULL_REQUEST mālama i ka helu noi huki a i ʻole wahahee, ina he lala mau keia;
- $TRAVIS_REPO_SLUG mālama i ka inoa o ka waihona papahana.
ʻO ka algorithm no kēia hana:
Pane ʻo Travis CI i nā code hoʻihoʻi, no laila e haʻi ka hele ʻana o nā ʻōlelo aʻo i ka lawelawe e hōʻailona i ka hana i loaʻa nā hewa.
I kēia manawa, e nānā pono kākou i kēia laina code:
git diff --name-only origin/HEAD > .pvs-pr.list
ʻO ka ʻoiaʻiʻo ʻo Travis CI e hui pū i nā lālā i ka wā e nānā ana i kahi noi huki:
No laila mākou e kālailai A4,ʻaʻole B3->A3. Ma muli o kēia hiʻohiʻona, pono mākou e helu i ka ʻokoʻa me A3, ʻo ia ka luna o ka lālā mai nā kumu.
Aia hoʻokahi kikoʻī koʻikoʻi i koe - ke kāʻei ʻana i nā hilinaʻi o nā faila poʻomanaʻo ma nā ʻāpana unuhi i hui ʻia (*.c, *.cc, *.cpp, etc.). E helu ana ka mea anaana i keia mau hilinai i ka wa i hoomaka mua ia ai ma ke ano o ka nana ana i ka papa inoa o na waihona a laila e hoola ia lakou ma ka papa kuhikuhi .PVS-Studio. ʻAe ʻo Travis CI iā ʻoe e hūnā i nā faila, no laila e mālama mākou i ka ʻikepili papa kuhikuhi .PVS-Studio/:
cache:
directories:
- .PVS-Studio/
Pono e hoʻohui ʻia kēia code i ka faila .travis.yml. Mālama kēia papa kuhikuhi i nā ʻikepili like ʻole i hōʻiliʻili ʻia ma hope o ka hoʻopaʻa ʻana, ka mea e hoʻolalelale i nā holo hope o ka nānā ʻana i ka papa inoa o nā faila a i ʻole ka hoʻonui ʻana. Inā ʻaʻole i hana ʻia kēia, a laila e loiloi maoli ka mea anana i nā faila āpau i kēlā me kēia manawa.
Buddy
E like me Travis CI,
ʻO ka mea mua, pono mākou e hoʻohui i kahi hana hou i ka laina hui:
E hōʻike i ka mea hoʻopili i hoʻohana ʻia e kūkulu i ka papahana. E nānā i ka pahu docker i hoʻokomo ʻia i kēia hana. No ka laʻana, aia kahi pahu kūikawā no GCC:
I kēia manawa e hoʻokomo i ka PVS-Studio a me nā pono pono:
E hoʻohui i kēia mau laina i ka mea hoʻoponopono:
apt-get update && apt-get -y install wget gnupg jq
wget -q -O - https://files.viva64.com/etc/pubkey.txt | apt-key add -
wget -O /etc/apt/sources.list.d/viva64.list
https://files.viva64.com/etc/viva64.list
apt-get update && apt-get -y install pvs-studio
I kēia manawa, e hele kāua i ka ʻaoʻao Run (ikona mua) a hoʻohui i kēia code i ke kahua hoʻoponopono pili.
pvs-studio-analyzer credentials $PVS_USERNAME $PVS_KEY
if [ "$BUDDY_EXECUTION_PULL_REQUEST_NO" != '' ]; then
PULL_REQUEST_ID="pulls/$BUDDY_EXECUTION_PULL_REQUEST_NO"
MERGE_BASE=`wget -qO -
https://api.github.com/repos/${BUDDY_REPO_SLUG}/${PULL_REQUEST_ID}
| jq -r ".base.ref"`
git diff --name-only HEAD origin/$MERGE_BASE > .pvs-pr.list
pvs-studio-analyzer analyze -j8
-o PVS-Studio.log
--disableLicenseExpirationCheck
-S .pvs-pr.list
else
pvs-studio-analyzer analyze -j8
-o PVS-Studio.log
--disableLicenseExpirationCheck
fi
plog-converter -t errorfile PVS-Studio.log --cerr -w
Inā heluhelu ʻoe i ka ʻāpana ma Travs-CI, a laila ua kamaʻāina kēia code iā ʻoe, akā naʻe, aia kahi pae hou:
ʻO ka mea ʻoiaʻiʻo, ʻaʻole mākou e loiloi i ka hopena o ka hui ʻana, akā ʻo ka HEAD o ka lālā kahi i hana ʻia ai ka noi huki:
No laila, aia mākou i loko o kahi hana kūlana B3 a pono mākou e loaʻa ka ʻokoʻa mai A3:
PULL_REQUEST_ID="pulls/$BUDDY_EXECUTION_PULL_REQUEST_NO"
MERGE_BASE=`wget -qO -
https://api.github.com/repos/${BUDDY_REPO_SLUG}/${PULL_REQUEST_ID}
| jq -r ".base.ref"`
git diff --name-only HEAD origin/$MERGE_BASE > .pvs-pr.list
E hoʻoholo ai A3 E hoʻohana kākou i ka API GitHub:
https://api.github.com/repos/${USERNAME}/${REPO}/pulls/${PULL_REQUEST_ID}
Ua hoʻohana mākou i nā ʻano like ʻole i hāʻawi ʻia e Buddy:
- $BUDDY_EXECUTION_PULL_REQEUST_NO — huki helu noi;
- $BUDDY_REPO_SLUG - kahi hui o ka inoa inoa a me ka waihona (no ka laʻana max/test).
I kēia manawa e mālama i nā hoʻololi e hoʻohana ana i ke pihi ma lalo a hiki i ka nānā ʻana i ka noi huki:
ʻAʻole like me Travis CI, ʻaʻole pono mākou e wehewehe .pvs-studio no ka hoʻopaʻa ʻana, no ka mea, e hūnā ʻo Buddy i nā faila a pau no ka hoʻokuʻu ʻana. No laila, ʻo ka mea hope i koe e mālama i ka inoa inoa a me ka ʻōlelo huna no PVS-Studio ma Buddy. Ma hope o ka mālama ʻana i nā loli, e hoʻihoʻi ʻia mākou i Pipeline. Pono mākou e neʻe i ka hoʻonohonoho ʻana i nā mea hoʻololi a hoʻohui i kahi login a me ke kī no PVS-Studio:
Ma hope o kēia, ʻo ke ʻano o kahi noi huki hou a i ʻole commit e hoʻomaka i ka loiloi. Inā loaʻa nā hewa i kahi hana, e hōʻike ʻo Buddy i kēia ma ka ʻaoʻao noi huki.
AppVeyor
ʻO ka hoʻonohonoho ʻana iā AppVeyor ua like ia me Buddy, no ka mea, ke hana nei nā mea a pau ma ka pūnaewele pūnaewele a ʻaʻohe pono e hoʻohui i kahi faila *.yml i ka waihona papahana.
E hele kāua i ka ʻaoʻao Settings i ka ʻike nui o ka papahana:
E kaomi i lalo i kēia ʻaoʻao a hiki ke mālama i ka cache no ka ʻohi ʻana i nā noi huki:
I kēia manawa, e hele kāua i ka ʻaoʻao Environment, kahi a mākou e kuhikuhi ai i ke kiʻi no ka hui ʻana a me nā ʻano hoʻololi kaiapuni e pono ai:
Inā ua heluhelu ʻoe i nā pauku i hala, ua kamaʻāina loa ʻoe i kēia mau ʻano ʻelua − PVS_KEY и PVS_USERNAME. Inā ʻaʻole, e hoʻomanaʻo wau iā ʻoe he pono lākou e hōʻoia i ka laikini o ka PVS-Studio analyzer. E ʻike hou mākou iā lākou ma nā palapala Bash i ka wā e hiki mai ana.
Ma ka ʻaoʻao hoʻokahi ma lalo nei mākou e hōʻike i ka waihona no ka caching:
Inā ʻaʻole mākou e hana i kēia, e nānā mākou i ka papahana holoʻokoʻa ma mua o nā faila ʻelua, akā e loaʻa iā mākou ka hopena mai nā faila i kuhikuhi ʻia. No laila, pono e hoʻokomo i ka inoa papa kuhikuhi pololei.
ʻO ka manawa kēia e hoʻāʻo ai ka palapala. E wehe i ka pā hōʻike a koho i ka Script:
Pono ʻoe e hoʻopili i kēia code i loko o kēia palapala:
sudo apt-get update && sudo apt-get -y install jq
wget -q -O - https://files.viva64.com/etc/pubkey.txt
| sudo apt-key add -
sudo wget -O /etc/apt/sources.list.d/viva64.list
https://files.viva64.com/etc/viva64.list
sudo apt-get update && sudo apt-get -y install pvs-studio
pvs-studio-analyzer credentials $PVS_USERNAME $PVS_KEY
PWD=$(pwd -L)
if [ "$APPVEYOR_PULL_REQUEST_NUMBER" != '' ]; then
PULL_REQUEST_ID="pulls/$APPVEYOR_PULL_REQUEST_NUMBER"
MERGE_BASE=`wget -qO -
https://api.github.com/repos/${APPVEYOR_REPO_NAME}/${PULL_REQUEST_ID}
| jq -r ".base.ref"`
git diff --name-only HEAD origin/$MERGE_BASE > .pvs-pr.list
pvs-studio-analyzer analyze -j8
-o PVS-Studio.log
--disableLicenseExpirationCheck
--dump-files --dump-log pvs-dump.log
-S .pvs-pr.list
else
pvs-studio-analyzer analyze -j8
-o PVS-Studio.log
--disableLicenseExpirationCheck
fi
plog-converter -t errorfile PVS-Studio.log --cerr -w
E nānā kākou i kēia ʻāpana o ke code:
PWD=$(pwd -L)
if [ "$APPVEYOR_PULL_REQUEST_NUMBER" != '' ]; then
PULL_REQUEST_ID="pulls/$APPVEYOR_PULL_REQUEST_NUMBER"
MERGE_BASE=`wget -qO -
https://api.github.com/repos/${APPVEYOR_REPO_NAME}/${PULL_REQUEST_ID}
| jq -r ".base.ref"`
git diff --name-only HEAD origin/$MERGE_BASE > .pvs-pr.list
pvs-studio-analyzer analyze -j8
-o PVS-Studio.log
--disableLicenseExpirationCheck
--dump-files --dump-log pvs-dump.log
-S .pvs-pr.list
else
pvs-studio-analyzer analyze -j8
-o PVS-Studio.log
--disableLicenseExpirationCheck
fi
ʻO ka hāʻawi kikoʻī ʻana o ka waiwai o ke kauoha pwd i kahi ʻano e mālama ai i kēia waiwai paʻamau he mea ʻē i ka nānā mua ʻana, akā, e wehewehe wau i nā mea āpau i kēia manawa.
ʻOiai e hoʻonohonoho ana i ka mea anaana ma AppVeyor, ua ʻike au i kahi ʻano ʻano ʻano ʻē aʻe o ka mea kānana. Ma kekahiʻaoʻao, ua hana pololei nā mea a pau, akā,ʻaʻole i hoʻomaka ka nānāʻana. Ua lōʻihi koʻu manawa e ʻike ai aia mākou i loko o ka /home/appveyor/projects/testcalc/ directory, a ua maopopo ka mea anaana aia mākou i /opt/appveyor/build-agent/. A laila, ʻike wau he wahaheʻe iki ka helu $PWD. No kēia kumu, ua hoʻoponopono lima wau i kona waiwai ma mua o ka hoʻomaka ʻana i ka nānā ʻana.
A laila ua like nā mea a pau ma mua:
I kēia manawa e noʻonoʻo i kēia ʻāpana:
PULL_REQUEST_ID="pulls/$APPVEYOR_PULL_REQUEST_NUMBER"
MERGE_BASE=`wget -qO -
https://api.github.com/repos/${APPVEYOR_REPO_NAME}/${PULL_REQUEST_ID}
| jq -r ".base.ref"`
I loko o laila mākou e loaʻa ai ka ʻokoʻa ma waena o nā lālā kahi i haʻi ʻia ai ka noi huki. No ka hana ʻana i kēia, pono mākou i nā ʻano hoʻololi kaiapuni:
- $APPVEYOR_PULL_REQUEST_NUMBER — huki helu noi;
- $APPVEYOR_REPO_NAME - inoa mea hoʻohana a me ka waihona papahana.
hopena
ʻOiaʻiʻo, ʻaʻole mākou i noʻonoʻo i nā lawelawe hoʻohui hoʻomau hiki ke hoʻomau ʻia, akā naʻe, loaʻa iā lākou āpau nā kikoʻī hana like loa i kekahi. Me ka ʻokoʻa o ka caching, hana kēlā me kēia lawelawe i kāna "paikikala", no laila ʻokoʻa nā mea āpau.
Ma kekahi wahi, e like me Travis-CI, ʻelua mau laina o ka code a me ka caching e hana flawlessly; ma kahi, e like me AppVeyor, pono ʻoe e kuhikuhi i ka waihona i nā hoʻonohonoho; akā ma kahi e pono ai ʻoe e hana i nā kī kūikawā a hoʻāʻo e hōʻoia i ka ʻōnaehana e hāʻawi iā ʻoe i ka manawa e kākau ai i ka ʻāpana huna. No laila, inā makemake ʻoe e hoʻonohonoho i ka loiloi o nā noi huki ma kahi lawelawe hoʻohui hoʻomau ʻaʻole i kūkākūkā ʻia ma luna, a laila e hōʻoia mua ʻaʻole ʻoe e loaʻa nā pilikia me ka caching.
Mahalo no kou noonoo. Inā maikaʻi ʻole kekahi mea, e ʻoluʻolu e kākau iā mākou ma
Inā makemake ʻoe e kaʻana like i kēia ʻatikala me kahi anaina ʻōlelo Pelekania, e ʻoluʻolu e hoʻohana i ka loulou unuhi: Maxim Zvyagintsev.
Source: www.habr.com