navQ

navQ - NAVISION Sourcecode Analyse, Referenz und Dokumentation

Tausende von NAVSION Objekten 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.

So 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 wo und wie verwendet? Diese Information geht runter bis auf die Quellcodezeile.
  • Welche Variable wird wo verwendet? Gibt es Deklarationen, die nicht benötigt werden?
  • Welche Funktion (PROCEDURE) wird wo 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 zu Verfügung, es erfolgt also keine langwierige Detailsuche wie im 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 wurde der Aufwand für die Weiterentwicklung zu groß.

Heute setzen wir auf das Werkzeug Statical Prism , das wir an dieser Stelle gerne weiterempfehlen.