Welche Art von Fehlern kann statische Analyse (z. B. Compiler) erkennen und symbolische Ausführung nicht erkennen? und welche Art von Fehlern, die symbolische Ausführung erkennen kann und statische Analyse nicht erkennen kann? Kann die symbolische Ausführung beispielsweise Syntaxfehler erkennen?Fehlererkennung in der statischen Analyse und symbolische Ausführung
Antwort
Kurz gesagt, die statische Analyse ist in der Lage, Codierungsfehler wie schlechte Praktiken zu erkennen. Wenn Sie beispielsweise (unnötig) ein Klassenfeld als public deklarieren, kann ein statisches Analyse-Tool Sie warnen, dass dieses Feld als privat deklariert werden sollte. Der "sauberste" Code ist jedoch nicht unbedingt fehlerfrei. Obwohl in einigen Codes keine Fehler gefunden werden können, kann ein falsches Schließen im Namen des Codierers (später) zu einem Absturz in der Laufzeit führen. Wenn wir beispielsweise sauberen Code entwickeln, um einen Taschenrechner zu implementieren, gibt ein statisches Analysewerkzeug keine Warnung aus. Wenn wir jedoch vergessen, die Eingabe zu verifizieren, um zu verhindern, dass der Benutzer eine Division durch Null versucht, dann ist unser Rechner würde schließlich in der Laufzeit abstürzen.
Auf der anderen Seite führt die symbolische Ausführung (oder Concolic) das Zielprogramm aus, daher haben sie das Potenzial, einen möglichen Laufzeitausführungszustand des Programms zu erreichen, wie zum Beispiel einen durch einen Fehler verursachten Laufzeitfehler. In dem oben beschriebenen Taschenrechnerbeispiel würde die symbolische Ausführung den Laufzeitfehler finden und würde uns auch mitteilen, welche Eingaben einen solchen Fehler induzieren. Um Ihre letzte Frage zu beantworten, ist die symbolische Ausführung nicht dazu gedacht, die Qualität des Codes zu überprüfen.
Idealerweise sollten wir beide vor der Freigabe der Software verwenden.
- 1. Was sind die Lücken zwischen symbolischer Ausführung und Taint-Analyse?
- 2. Reihenfolge der Ausführung der statischen Methode
- 3. Werkzeuge für die symbolische Ausführung von Binärdateien
- 4. Gute Speicherprofilierung, Leck und Fehlererkennung für Windows
- 5. Kann ich einige Verträge leicht von der statischen Analyse ausschließen?
- 6. Komplexität der IDE-Fehlererkennung und automatische Vervollständigung abhängig von der Sprachsyntax?
- 7. Emacs und symbolische Links
- 8. Objektorientierte Analyse und Design
- 9. HttpModule von der Ausführung für statischen Inhalt auf IIS7 ausschließen
- 10. Fehlererkennung in Bluetooth-Kommunikation mit Android
- 11. Fehlererkennung Effizienz (CRC, Prüfsumme, etc)
- 12. Python os.walk und symbolische Verknüpfungen
- 13. Harte Link und symbolische Links in Unix
- 14. symbolische Berechnung in C++
- 15. Symbolische Links in Windows
- 16. symbolische Berechnung
- 17. Gibt es Werkzeuge zur statischen Analyse von Scala-Code?
- 18. Guter einleitender Text zur statischen Analyse für die Fehlersuche?
- 19. C# -Code-Analyse Abneigungen geschützten statischen s_Foo (CA1709, CA1707)
- 20. RegisterStartupScript und Reihenfolge der Ausführung
- 21. wie finden äquivalente APIs der statischen Analyse Bericht in dynamischen Bericht
- 22. Boost asio ip tcp iostream Fehlererkennung
- 23. relative symbolische Links in absolute symbolische Links konvertieren
- 24. Symbolische Referenzdateien
- 25. Was ist der Unterschied zwischen statischen und nicht statischen globalen
- 26. Scala und HTML-Analyse
- 27. Mehrdimensionale symbolische Matrix in Python
- 28. Löschen eines Ordners, der symbolische Verknüpfungen enthält
- 29. rapidminer und Sentiment-Analyse
- 30. Ignoriere symbolische Links in .gitignore
Vielen Dank für Ihre Antwort. Was passiert, wenn ich das Programm mit Syntaxfehler symbolisch ausführe? – any
Wenn das Programm einen Syntaxfehler hat, kompiliert es nicht, also wie führst du es aus (symbolisch oder nicht)? –
Das ist richtig. Was ist mit der interpretierten Sprache? – any