Keil µVision Code-Checker

Persönliche Seite #1280018
Lesenswert?
• ▲
▼
Markus schrieb:
> ich habe von einem Tool für Keil's µVision gehört, dass mein C-code
> analysiert.

Meinst Du PC-lint (www.gimpel.com)? Das ist nicht "für µVision". Man 
kann es aus µVision (aber auch von der Kommandozeile, z.B. Makefile) 
starten. Der Aufruf ist ähnlich zu dem eines Compilers. Es gibt sogar 
eine Art Objekt Datei, um über die Grenzen einer Compile Unit 
analysieren zu können.

Ob es generell Schleifen analysiert kann ich nicht sagen. Gut möglich, 
solange das statisch zu ermitteln ist:
1
while (1) {
2
    if (1 == 0)
3
        break;
4
}

PC-lint ist quasi Standard für derartige Tools in der Embedded Software 
Welt.

Gruß
Marcus
http://www.doulos.com/arm/
Persönliche Seite #1280112
Lesenswert?
• ▲
▼
Splint (http://www.splint.org/), kommt aber nicht an die Fähigkeiten von 
PC-lint heran. Wenn Du Dir Keils tools leisten kannst, dann sollten die 
paar Kröten für PC-Lint auch noch drin sein ;-)

RTL-check (http://rtlcheck.sourceforge.net/). Bin aber nicht sicher, wie 
der Entwicklungsfortschritt ist. Der aktuelle Zustand ist wohl eher 
proof-of-concept.

Bei Splint ist nach langer Pause wenigstens mal wieder was passiert.

Gruß
Marcus
http://www.doulos.com/arm/
#2516395
Lesenswert?
• ▲
▼
Hallo,
ich möchte meinen C-Code überprüfen lassen.
µVision3/LPC23xx verwendet Compilerspezifische Anweisungen die Splint 
nicht kennt. Auch Unterstriche, Konstanten, ...

Aus der io.h
1
void ISR_EINT_0_Handler (void) __irq;
1
Parse Error: New function scope inside function. (For help on parse errors, see splint -help parseerrors.)
2
*** Cannot continue.

Ein Bekannter hat mir gesagt ich soll folgende Parameter versuchen:
1
splint -strict *.c > splint_report.log

Und später jede c Datei einzeln:
1
splint -checks -Dfar= -Dnear= io.c > splint_io.log
#2518037
Lesenswert?
• ▲
▼
Multiposting: Beitrag "Re: Wie benutzt man Lint?!"

Ich glaube ich habs jetzt verstanden.
Ich habe meine Header Datei wie folgt geändert:
1
#ifndef __SPLINT__
2
void ISR_EINT_0_Handler (void) __irq; 
3
#endif
4

5
#ifdef __SPLINT__
6
void ISR_EINT_0_Handler (void); 
7
#endif

Oder optimiert:
1
#ifndef __SPLINT__
2
void ISR_EINT_0_Handler (void) __irq; 
3
#else
4
void ISR_EINT_0_Handler (void); 
5
#endif

Allerdings ist dann nicht klar ob Splint diese Funktion als Interrupt 
nutzt, der Sinn von __irq verloren geht.
Möglicherweise gibt es alternative Anweisungen um Splint mitzuteilen 
diese Funktion als Interrupt zu nutzen ist.

http://www.cs.virginia.edu/pipermail/splint-discuss/2007-August/001023.html

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.