Autor: Dondu
Artykuł jest częścią cyklu: Atmel Studio - Spis treści
W przypadku Atmel Studio w momencie pisania tego artykuły tj. 2013r. funkcjonalność tę zawiera dodatek (rozszerzenie) o nazwie Naggy. Jest to nic innego jak dodatek wykorzystujący kompilator pracujący w tle w trakcie pisania programu i wykrywający błędy kodu.
Możliwości Naggy w zakresie wykrywania błędów są duże, a zobaczymy je na prostym przykładzie kodu programu zawierającego przykładowe błędy (ang. errors) i ostrzeżenia (ang. warings):
W trakcie pisania kodu Naggy wykonywauje ciągłą kompilację pisanego kodu i zaznacza czerwonym wężykiem fragmenty, które według niego są błędne. Dodatkowo zielonym wężykiem podkreśla te fragmenty kodu, które generują w czasie kompilacji ostrzeżenia.
Jaki więc błąd popełniłem pisząc powyższy kod? Wystarczy najechać kursorem na linię z błędem i pokazuje się dymek z informacją:
czyli błąd polaga na braku średnika na końcu wskazanej czerwonym wężykiem linii, w której ustawiam rejestr DDRB. Ta linia powinna więc wyglądać następująco:
DDRB = s;
Po dokonaniu tej poprawki znika wężyk wskazujący błąd:
Pozostały nam dwa ostrzeżenia, a właściwie jedno pokazane w dwóch miejscach. Na czym polega problem? Tak samo jak poprzednio wskazujemy kursorem linię i otrzymujemy dymek:
To bardzo częsty błąd wśród początkujących polegający na tym, iż numerują komórki tablicy od jeden, podczas gdy według standardu języka C numerowane są one od zera. Dlatego przy tak zdefiniowanej tablicy:
char tablica[3];
oczekują, że kolejne komórki to tablica[1], tablica[2] oraz tablica[3]. Jednakże faktycznie są to tablica[0], tablica[1] oraz tablica[2]. Innymi słowy próba przypisania komórki o numerze 3 oznacza wykonywanie przypisania poza tablicą, ponieważ taka komórka nie istnieje.
W takim przypadku Naggy wskazuje linię kodu, w której przypisujemy tablicy jakąś wartość oraz jednocześnie deklarację tej tablicy ponieważ nie wie, czy prawidłową sytuacją jest przypadek, gdy tablica ma mieć 4 elementy, czy tylko 3. Ty podejmujesz decyzję.
Możesz więc wydłużyć tablicę o jeden element :
char tablica[4];
lub poprawić linię, w której przypisujesz wartość trzeciemu elementowi tablicy na następujący:
tablica[2] = 0x8f;
Ja dokonałem poprawki linii przypisującej wartość i po zmianie znikają oba ostrzeżenia:
Powyższe przykłady są tylko jednymi z wielu błędów i ostrzeżeń wykrywanych przez kompilator pracujący z dodatkiem Naggy. Inne przypadki na pewno sam "przerobisz" w trakcie używania Atmel Studio z Naggy ;-)
Komunikaty dot. błędów i ostrzeżeń dodawane są także przez Naggy w okienku Error List:
Wystarczy wykonać dwuklik na wybranym komunikacie, by okno z programem przewinęło się do właściwego miejsca, a kursor ustawił w odpowiedniej linii.
Kompilacaja programu
Naggy kompiluje (w tle) kod tylko dla potrzeb sprawdzania składni w trakcie pisania kodu. Dlatego też, by po skończeniu pisania kodu otrzymać plik wynikowy, nadal musisz skompilować cały projekt tak jak to zwykle robisz używając odpowiedniego skrótu klawiszowego lub menu.
Instalacja Naggy
Aby skorzystać z możliwości dodatku Naggy należy go zainstalować. Wykonuje się to poprzez menu Tools > Extension Manager:
W oknie dodatków znajdujesz Naggy:
Dalej już chyba nie muszę tłumaczyć :-)
Nie zapomnij zamknąć i ponownie otworzyć Atmel Studio po zainstalowaniu Naggy.
W oknie tym możesz także zobaczyć szczegółowe dane o wersji dodatku oraz inne informacje.
Wyłączenie Naggy
W każdej chwili możesz wyłączyć dodatek Naggy w menu Tools:
Na koniec oficjalny film Atmela dot. tego dodatku:
Dzięki za ten artykuł, bo tego mi brakowało w AS, a nie wiedziałem, że jest taki dodatek. Opiszesz także inne dodatki, bo widzę że jest ich więcej?
OdpowiedzUsuńCoś jeszcze skrobnę, ale na pewno nie wszystkie dodatki - trochę kombinujcie sami, albo może ktoś je opisze i wystartuje w comiesięcznym konkursie: Napisz artykuł i wygraj nagrody. :-)
Usuńwitam,
OdpowiedzUsuńjak mniemam Naggy "nie chodzi" pod AVRStudio4
Nie wiem - postaram się sprawdzić. Ale raczej nie.
Usuńna tym filmiku można zaobserwować, przycinanie się środowiska, tzn. zostaje ślad po kursorze.
OdpowiedzUsuńTo raczej zasługa programu nagrywającego film. W rzeczywistości takie problemy nie występują no chyba, że Windows XP odpalimy na AT386 z 512kB pamięci :-)
Usuń"przykładowe błąd (ang. errors)"
OdpowiedzUsuńDzięki ... poprawiłem :-)
UsuńCzytając książkę tmf'a o xmega przeczytałem o naggy - pobrałem wg instrukcji, no i po kliknięci sign in i dalej colse nic się nie działo a po chwili program AS6 się zawiesił - tak kilka razy :(
UsuńNiestety AS ma upierdliwe logowanie, czasami trzeba długo czekać aż przejdzie, więc cierpliwości. Czasami wymagane jest uruchomienie AS z uprawnieniami administracyjnymi (nie wystarczy być zalogowanym jako administrator), musisz kliknąć ppm na skrócie i wybrać "Uruchom jako Administrator". Generalnie naggy działa i nie powinno być problemów (nie ma jeszcze nowej wersji do AS 6.2 beta, ale to pewnie w ciągu kilku dni się zmieni). Naggy nie rozpoznaje też niestandardowych rozszerzeń gcc, co jest upierdliwe, bo np. wszędzie podkreśla mi __int24 itd. Ale ogólnie warto powalczyć, bo często daje sensowne podpowiedzi - przydaje się na każdym etapie wtajemniczenia. Warto alternatywnie rozważyć wtyczkę "Margins of errors".
UsuńPo zainstalowaniu naggy podkreśla mi wszędzie łańcuchy gdzie jest polska czcionka np:
OdpowiedzUsuńuint8_t napis[] = "śćźą";
printf("Gęś");
Jeśli to rozszerzenie jest włączone to po kompilacji dostaję warning w tych miejscach.
Jak temu zaradzić?
Czy to zależy od kodowania przez edytor AS6.
Krzysztof