 |
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
AFE-GmdG JLI MVP


Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 23.02.2007, 20:03 Titel: Programm (Konstruktor) zu komplex-Fehler... |
|
|
Davon hab ich ja noch nie gehört - bis ichs heut selber fabriziert habe:
Visual Studio 2005 - Team Edition for Software Developers hat Folgendes geschrieben: | Warnung 1 CA1502 : Microsoft.Maintainability : .ctor weist eine zyklomatische Komplexität von 26 auf. Schreiben Sie die Methode neu, oder gestalten Sie sie um, um die Komplexität auf 25 zu reduzieren.
|
Ich habe in den Projekteinstellungen die Codeanalysefunktionen aktiviert (enthalten in Team Edition for Software Developers) - Da gibt es eine ganze Menge nützlicher Analysen, welche Code wirklich sicherer machen können - aber auch ein paar nerfige.
Aber dass ich zu große "zyklomatische Komplexität" erzeuge - WOW...
PS.: Was heisst "zyklomatische" in diesem Zusammenhang? _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
|
|
Nach oben |
|
 |
GreveN JLI Master

Alter: 38 Anmeldedatum: 08.01.2004 Beiträge: 901 Wohnort: Sachsen - Dresden Medaillen: Keine
|
Verfasst am: 23.02.2007, 20:24 Titel: |
|
|
Ich habe es so aufgefasst, dass zyklomatische Komplexität angibt, in welchem Grad dein Algorithmus bzw. deine Funktion nicht-deterministisch ist.
http://www.software-kompetenz.de/?15490 |
|
Nach oben |
|
 |
The Lord of Programming Living Legend

Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 24.02.2007, 03:23 Titel: |
|
|
lol, geiler Fehler...
Zyklomatisch, hmm - hat wohl irgendwas mit Schleifen zu tun?
Wäre interessant, deinen Konstruktor mal zu sehen  _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
 |
GreveN JLI Master

Alter: 38 Anmeldedatum: 08.01.2004 Beiträge: 901 Wohnort: Sachsen - Dresden Medaillen: Keine
|
Verfasst am: 24.02.2007, 09:37 Titel: |
|
|
Nicht direkt, eher der Grad der "Uneindeutigkeit", sprich, wenn du dir den möglichen Ablauf der Funktion als Graphen vorstellst, gibt es einfach zuviele Knoten mit zuvielen potenzielle Entscheidungswegen. Es ist eben in gewisser Weise nichtdeterministisch, abhängig von verschiedenen Parameter etc. |
|
Nach oben |
|
 |
xardias JLI Master

Alter: 38 Anmeldedatum: 28.12.2003 Beiträge: 804 Wohnort: Palo Alto, CA Medaillen: Keine
|
Verfasst am: 25.02.2007, 09:06 Titel: |
|
|
GreveN hat Folgendes geschrieben: | Nicht direkt, eher der Grad der "Uneindeutigkeit", sprich, wenn du dir den möglichen Ablauf der Funktion als Graphen vorstellst, gibt es einfach zuviele Knoten mit zuvielen potenzielle Entscheidungswegen. Es ist eben in gewisser Weise nichtdeterministisch, abhängig von verschiedenen Parameter etc. |
Und das mag die CPU wieder garnicht, so von wegen jump prediction... |
|
Nach oben |
|
 |
AFE-GmdG JLI MVP


Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 26.02.2007, 07:29 Titel: |
|
|
In dem Konstruktor habe ich einen kleinen Parser für bestimmte Textdateien eingebaut... In Abhängigkeit, ob dieser Parser vernünftig durchläuft, wird ein Objekt der Textdatei erzeugt.
Sicherlich könnte ich das Ding auf einige Subfunktionen ausweiten und damit diese Komplexität verringern - aber im Moment ist es nebensächlich, da er ja so funktioniert, wie erwartet...
In der MSDN steht ja auch was von:
25 - Warnung
50 - Kritische Warnung
75 - Fehler
100 - Kritischer Fehler
Meine Funktion hat den Wert 26 - also noch nicht wirklich zuuuu viel...
Wenn ich Zeit hab, schreib ich die Funktion mal um^^ _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
|
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 26.02.2007, 14:44 Titel: |
|
|
Kann das dem Compiler nicht egal sein, wie komplex der Code ist??? _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
GreveN JLI Master

Alter: 38 Anmeldedatum: 08.01.2004 Beiträge: 901 Wohnort: Sachsen - Dresden Medaillen: Keine
|
Verfasst am: 26.02.2007, 14:48 Titel: |
|
|
Wieso? Er kann dich doch warnen, wenn negative Laufzeitfolgen zu erwarten sind... |
|
Nach oben |
|
 |
Fallen JLI MVP


Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 26.02.2007, 15:06 Titel: |
|
|
Zitat: | 75 - Fehler
100 - Kritischer Fehler |
Geht dann doch etwas über eine Warnung hinaus, wobei man sich da natürlich wirklich sorgen machen sollte ob man das Prinzip von OOP nicht missverstanden hat xD _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
 |
GreveN JLI Master

Alter: 38 Anmeldedatum: 08.01.2004 Beiträge: 901 Wohnort: Sachsen - Dresden Medaillen: Keine
|
Verfasst am: 26.02.2007, 15:21 Titel: |
|
|
Ja, aber AFE-GmdG hat ja auch "nur" einen Wert von 26. Etwas schleierhaft ist es mir zugegeben aber auch. |
|
Nach oben |
|
 |
AFE-GmdG JLI MVP


Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 26.02.2007, 16:29 Titel: |
|
|
Nochmal zur Aufklärung der ganzen Geschichte, da einige hier (berichtigt mich, wenn ich falsch liegen sollte) das "Problem" nicht ganz verstanden haben:
Ich habe einen Konstruktor einer Klasse programmiert, der einen Textfileparser enthält (hatte ich noch nicht erwähnt). Der Konstruktor erstellt mir also ein Objektorientiertes Modell dieser Textdatei, auf das mein weiterer Code aufbaut.
Ich habe zusätzlich eine Option "Code Analyse" eingeschaltet. (Diese Option gibt es erst ab der Team Edition for Software Developers-Version des Visual Studios 2005, welche ich auf meiner Arbeit verwende)
Diese Option analysiert den Quellcode auf mögliche Sicherheitsprobleme, negative Laufzeitverhalten und allgemein "schlechten" Programmierstil (nach Microsoftangaben "schlecht")
Eine dieser Prüfungen war diese zyklomatische Komplexität - und die ist mit 26 eben höher als 25, was zu einer Warnung führt.
Der Code an sich ist schon in Ordnung, er funktioniert (für meinen Gebrauchsfall auch schnell genug) und ich habe kein weiteres Problem mit ihm. Ich habe diese Warnung hier nur deswegen gepostet, weil ich sie lustig fand - es war für mich das erste mal, dass der Compiler mir sagte, ich programmiere zu komplex...
Wenn ich Zeit habe und mir den Parser nochmal vornehme, dann kann ich diese Komplexität sicherlich noch senken - aber im Moment belasse ich die Warnung einfach bei...
MFG, AFE-GmdG _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
|
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 26.02.2007, 17:18 Titel: |
|
|
D.h, dass Fehler kommen liegt nur an der eingeschalteten Code-Analyse? Das ist dann sowas wie "Warnungen als Fehler"?
Ich meine, ist ja auch sinnvoll, bzw. kann sinnvoll sein. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
GreveN JLI Master

Alter: 38 Anmeldedatum: 08.01.2004 Beiträge: 901 Wohnort: Sachsen - Dresden Medaillen: Keine
|
Verfasst am: 26.02.2007, 17:46 Titel: |
|
|
Welcher Fehler?
|
|
Nach oben |
|
 |
KI JLI Master

Alter: 39 Anmeldedatum: 04.07.2003 Beiträge: 965 Wohnort: Aachen Medaillen: Keine
|
Verfasst am: 26.02.2007, 18:40 Titel: |
|
|
GreveN hat Folgendes geschrieben: | Welcher Fehler?
|
Jonathan bezieht sich hierdrauf:
AFE-GmdG hat Folgendes geschrieben: | I[...]
In der MSDN steht ja auch was von:
25 - Warnung
50 - Kritische Warnung
75 - Fehler
100 - Kritischer Fehler[...] |
|
|
Nach oben |
|
 |
AFE-GmdG JLI MVP


Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 27.02.2007, 07:26 Titel: |
|
|
Ab einer Komplexität von 75 wird aus der Warnung tatsächlich ein Fehler, der trotzdem nur mit eingeschalteter Codeanalyse erzeugt wird. Die Codeanalyse wird aber erst NACH erstellung des Codes vorgenommen (Wahrscheinlich auf IL-Ebene) weshalb man das Programm dann trotz Fehler ausführen kann... _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
|
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|