navQ – NAVISION Sourcecode Analyse, Referenz und Dokumentation
Tausende von NAVISION Objekte wurden von uns angepasst oder neu erstellt. Dabei haben sich eine Vielzahl von Regeln und Prüfungen ergeben, die gewährleisten, dass der erstellte Code eine gewisse Qualität hat. Außerdem gibt es immer wieder das Problem, wann was zu dokumentieren ist und wie man eine einheitliche und vor allem lesbare und damit wartbare Lösung erstellt.
Ganz nebenbei erhält man eine schnelle Übersicht, welches Objekt wie und wo verwendet wird.
Diese Erfahrungen haben wir in unserem navQ zusammengefasst.
- Wie hängt was zusammen?
- Welche offensichtlichen Fehler sind im Code enthalten?
- Welche Dokumentationen fehlen?
Entwicklung
Die ursprünglichen Prototypen wurden in Python entwickelt und die Analyseergebnisse wurden in SQLite abgespeichert. Als die Anforderungen immer größer wurden, erfolgte ein Re-Design in C#.
Im Praxiseinsatz
navQ wurde in umfangreichen Praxistests erprobt. So erfolgten umfangreichen Quellcodeanalysen in Kundenprojekten, in denen sich navQ schnell bewährte.
Folgende Informationen zum NAVISION Quellcode konnten abgefragt werden:
- Welches Objekt wird an welcher Stelle und wie verwendet? Diese Information geht runter bis auf die Quellcodezeile.
- Welche Variable wird an welcher Stelle verwendet? Gibt es Deklarationen, die nicht benötigt werden?
- Welche Funktion (PROCEDURE) wird an welcher Stelle referenziert? Welche Funktion wird nicht benutzt? Welche Funktion/Trigger ist leer?
- Welche Zeichenketten sind vorhanden und müssen ev. für Multilanguage Anforderungen umgesetzt werden?
- Wo werden bestimmte NAVISION Befehle benutzt? Uns hat z. B. interessiert, wo überall ein COMMIT erfolgt. Die Abfrage geht aber auf jede NAVISION Funktion und jeden Befehl. Damit kann man schnell alte FIND Aufrufe ermitteln und SQL konform umsetzen.
- Gibt es editierbare FlowFields, die besser nicht editierbar wären?
- Sind Objekt- und/oder Feldnamen enthalten, die den Rollout einer Lösung in die 2-Byte Welt (z. B. China) erschweren?
- Welche Objekte werden referenziert, existieren aber nicht im System?
Die Daten stehen direkt zur Verfügung, es erfolgt also keine langwierige Detailsuche wie im alten DevToolkit. Dafür benötigt navQ etwas Zeit, um die Daten alle zusammenzustellen. Im Moment erfolgt die Abfrage direkt über SQL Views und einfache SQL Scripte.
Einstellung des Projekts
Das Projekt wurde 2013 eingestellt. Durch die neuen NAVISION Versionen und mit der AL Programmiersprache, wurde der Aufwand für die Weiterentwicklung zu groß.
Heute setzen wir auf das Werkzeug Statical Prism, das wir an dieser Stelle gerne weiterempfehlen.