Среда 20. 11.

У среду неће бити часова:

GMail

Ako pišete na fakultetske adrese sa svojih ličnih gmail adresa, računajte da vam odgovori verovatno neće biti isporučeni jer GMail često odbija poruke sa MATF servera poincare.

Алати за развој софтвера

Налози на студентском сервису алас

Проверите да су вам налози на сервису алас исправни:

Снимци предавања

Снимци предавања ранијих година:
Час 1:Увод у курс, GCC, BASH, Vim (није сниман)
Факултативно: Crazy code, crazy coders (W. E. Brown)
Час 2:Увод у Git
Час 3:Git - наставак
Час 4:Git From the Bits Up (T. Berglund)
Час 5:GDB
Није потребно све памтити из наредних предавања о интеграцији GDB-а и Python-а, али је потребно оквирно знати шта је могуће:
Python integration with GDB
GDB User Defined Commands - Part 1
GDB User Defined Commands - Part 2
GDB User Defined Commands - Part 3
Час 6:Git и GitLab
Час 7:Пакети
Час 8:Санитајзери
Час 9:LCov, Hotspot, Git hooks, ...

Асистенти

Прагови

Праг на испиту је 30 поена, а на пројекту је 15.

Испит

Пример задатака какве можете очекивати на испиту видите овде.

Напомена: На испиту пакете који вам затребају за задатак ћете моћи да инсталишете преко конана. За овај пример изнад користите нормалан пакет менаджер који имате на систему (apt, yum...).

Пројекти

Пројекти се раде у тиму, али се оцењују појединачно -- свакоме се бодују они задаци које је урадио/ла. Максималан број поена који је путем пројекта могуће освојити је 30. Оцењује се примена алата који се обрађују на предавањима и вежбама, али и других алата које сте користили.

Рок за предају пројеката

Пројекте ће бити могуће предавати у свком испитном року преко наредног линка:

Биће накнадно постављено

Последњи дан за предају пројекта за сваки испитни рок је термин испита.

Студенти који су претходне године радили пројекат, нека се пријаве преко истог овог формулара и нека ставе "од претходне године, XX poena" уместо линка ка канбан табли (замените XX бројем поена који сте имали на пројекту).

Резултати ће бити објављивани заједно са резултатима испита.

Информације о изради пројеката

Можете да радите следеће:

Задаци

На личном GitLab налогу направити пројекат који ће се звати azrs-tracking и у њему направити канбан таблу и картице за сваки од задатака које планирате да урадите. Овде ћете водити евиденцију о прогресу задатка и описивати начин употребе алата који су у том задатку коришћени.

Дакле, направите канбан картице за сваки задатак, и док радите на задатку додајете коментаре у самој картици шта сте и како урадили. Додајте и снике екрана алата током употребе.

Додатак: На сваки задатак ставите таг на који се алат односи. Тагови треба да буду написани малим словима, речи унутар тага раздвојене цртицама. На пример, за Git, таг би био git, за Clang Format би био clang-format, и слично.

Битно: Сврха алата је да унапреде квалитет неког софтвера. Тако да, кад алатом детектујете неки проблем и направите измене над изворним кодом пројекта над којим сте применили алат, пошаљите merge захтев, и линк ка захтеву такође додате као коментар на картици.

Сам репозиторијум azrs-tracking не мора да садржи ништа, -- код пројекта држите у репозиторијуму у ком радите, а извештаји су унутар канбан табеле. Отварате репозиторијум да бисте могли да направите канбан таблу.

У сваком испитном року ће бити објављиван формулар преко ког предајете завршен пројекат (линк ка канбан табели).

Git (таг git)
Користити неки познати модел гранања, писати уредне commit поруке, користити merge захтеве приликом прављења измена на пројекту.
GDB (таг gdb)
Користити дибагер приликом налажења неке грешке у пројекту на коме радите и исправити ту грешку.
GDB (таг gdb-command)
Направити неку корисну команду за GDB (Python додатак).
CI (таг ci)
Осмислити и имплементирати неколико неуобичајених CI задатака који ће се извршавати кад год се нова ревизија кода пошаље на сервер.
git hook (таг git-hook)
Осмислити и имплементирати бар 3 неуобичајена git hook-a.
CMake (таг cmake)
Направити или унапредити CMakeLists.txt за пројекат (ако је други члан тима направио CMakeLists.txt, додајте неке новине у исти).
Valgrind (таг valgrind)
истражити функције које троше више времена него што би требало и решити проблем.
Gammaray (таг gammaray)
У случају да пројекат користи Qt, испитати апликацију -- кориснички интерфејс и да ли има проблема у истом.
ClangTidy (таг clang-tidy)
Аутоматски рефакторисати код изабраним clang-tody проверама. Објаснити због чега сте укључили баш те провере.
ClangFormat (таг clang-format)
Направити свој формат заснован на неком већ постојећем. Обезбедити да је цео пројекат форматиран тим стилом.
Статичка анализа кода (тагови cppcheck, clang-tidy, clazy, clang-analyzer)
Преко неког од алата за статичку анализу кода наћи 2-3 проблема у пројекту на коме радите. Исправите проблем и пошаљите закрпу путем merge захтева.
Docker (таг docker)
Припремити апликацију да се може покренути као Docker контејнер (докеризовати). Бонус: комбиновати са CI.
GCov (таг gcov)
Генерисати coverage извештај за пројекат.
Остали алати
На пројектима ће бити урачунато и ако сте испробали и документовали употребу и неких алата који нису предавани на курсу.

Завршетак пројеката

  • пре предаје пројеката, проверите сва правила везана за пројекте на овој страници;
  • многи погрешно покрећу clang-tidy (без компилационе базе, без скрипте run-clang-tidy) и добијају грешке да, на пример, <vector> или QObject не постоје из чега некако закључе да clang-tidy нема замерке на љихов код;
  • изворни код не треба да се налази у репозиторијуму azrs-tracking, пројекат на коме радите има свој репозиторијум;
  • ако остављате линкове ка туђим изменама, наведите аутора и објасните зашто остављате линкове ка туђим изменама;
  • ако остављате линкове ка изменама, те измене траба да буду везане за тај конкретан задатак;
  • сам снимак екрана да сте покренули неки алат не говори ништа о томе како сте га користили;
  • ако после употребе неког алата нисте због резултата које сте добили изменили код (и поставили линк ка тим изменама), или бар нешто конкретно закључили о свом пројекту (што сте детаљно описали), пробајте поново;
  • Git репозиторијум пројекта не треба да садржи производе компилације, html фајлове које генеришу разни алати (gcov, clang-analyzer)... Ако желите да их поставите негде, њих још и можете да поставите у репозиторијум azrs-tracking.