Sitemap mit includes etc.

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Sitemap mit includes etc.

    Hallo,

    nicht zum ersten mal stehe ich vor folgender Aufgabe:

    Ich soll Aktualisierungen an einem (schlecht bis gar nicht dokumentierten) umfangreicherem Web (PHP) Projekt vornehmen. Nach ein-tägiger Suche und versuchter Dokumentation hab ich heute morgen aufgegeben. Es befinden sich mehrere 100 php-files, zzgl. includes, css-dateien, js-dateien. Von Pics will ich mal gar nicht reden. Beim Stöbern ist mir nun aufgefallen, dass recht viele Dateien nur noch als "Leichen" rumdümplen, also gar nicht mehr aufgerufen werden.

    Ums Kurz zu machen:
    Kennt jemand ein Programm, mit welchem man ein (lokale) Webseite durchsuchen kann, in dessem Ergebnis man eine Sitemap bekommt, wo sämtliche Links (lokal) durchgegangen werden, includes aufgenommen werden (rekursiv) und sowohl css, js, als auch Pics als Baum, oder wie auch immer dargestellt werden.

    Quasi so:
    index.php
    |
    |- Link: unternehmen.php
    |- Link: produkte.php
    |- Link: impressum.php
    |- CSS: xy.css
    |- JS: includes/menu.js
    |- PHP: db.php
    |- IMG: pics/logo.gif
    |- IMG: pics/background.png

    unternehmen.php
    |
    |- Link: index.php
    ... usw.

    Danke
    Christian

  • #2
    glaub nicht, dass es so was gibt. trotzdem falsches forum, daher * verschieb *

    peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      uppsss.. sorry ... dann besser hier ..

      na ich warte mal das WE ab. vielleicht kennt der eine oder andere so'n Tool (jetzt fällts mir auch auf: Tool == App und ich suche ja was )

      falls keiner was kennt, werd ich halt milliardär, indem ich sowas mal versucher selbst zu schreiben

      bis dann
      *feierabend.mach*

      Christian

      Kommentar


      • #4
        Glaub nicht, dass du damit Milliardär wirst, weil das Programm außer dir keiner brauchen wird

        Kommentar


        • #5
          Hi,

          @h3ll
          „Ich denke, es gibt weltweit einen Markt für vielleicht fünf Computer.“ IBM-Chef Watson, 1943
          soviel zu "schlauen" Bemerkungen zum "Brauchen"

          Wieviel hat heute jeder von uns zu Hause?

          Hab über's WE mal im Bekanntenkreis rumgefragt, und jeder der was mit Web-Entwicklung zu tun hat, findet den Ansatz für so'n Prog gut.

          Da ich nicht vor hab, Milliardär zu werden, werd ich mich mal ransetzen, sowas zu entwickeln und dann for free zur Verfügung stellen.

          Falls einer von Euch noch nette Ideen hat, bitte her damit. Werde es unter C# entwickeln, wird also 'ne WINDOOFS-Sache.

          Leider muß ich nebenbei (hauptberuflich) noch andere Soft entwickeln, sodaß es sooo schnell nicht wird.

          Also dann bis dahin

          CU Christian

          Kommentar


          • #6
            Wenn ich mir dein gewünschtes ergebnis ansehe, erwartet deine wunschsoftware offensichtlich ein ziemlich unprof. Design. Andernfalls lässt sich alles weitere mit doxigen ermitteln. Oder mit ein bißchen spielfrei sogar mit eclipse.

            Oh, ach ja: millionäre sind die damit auch nicht geworden.
            [FONT="Helvetica"]twitter.com/unset[/FONT]

            Shitstorm Podcast – Wöchentliches Auskotzen

            Kommentar


            • #7
              Hi unset,

              Prof. Design liegt im Auge des Betrachters. Außerdem geht's mir im ersten Schritt erstmal darum, die Funktionen reinzubringen und mich dann ums Aussehen zu kümmern (forms follows function) .

              Hatte mir grade mal doxygen (das richtige Programm?) installiert. Das Ergebnis: unbekannter Ausnahmefehler - Absturz. DAS nenne ich unprofessionelles Coding. Hab es dann mit dem mitgeliefertem Beispiel probiert, da hats gefunzt. Allerdings konnte ich dem Ergebnis nichts entnehmen, was irgendwie MEINEN Anforderungen entsprach, aber vielleichts lags auch an mir. Auf jedenfall ist's wieder wech ...

              Arbeite mit PHPeclipse. In der Gliederungsansicht sehe ich includes und requires .. aber das wars. Wo sehe ich Links? Pics? Names? Classes? Ids? Wo zeigt es mir Dateileichen an?

              Ich stelle mir das Prog so vor: zwei-geteilter Bildschirm. Links die eingelesene Verzeichnisstruktur, über ein Icon vor dem Dateinamen, sieht man, ob die Datei aktiv ist, oder nur so "rumdümpelt". Wird dann auf eine Datei geklickt, sieht man alle relevanten o.g. Daten im Hauptscreen. In CSS-Dateien könnte man über Codehighlighting sogar anzeigen, dass Klassen nicht benutzt werden.

              Wie gesagt, konstruktive Ideen sind willkommen. Solche Behauptungen wie von unset können mir, gelinde gesagt, gestohlen bleiben.

              Btw: Ich denke schon, dass es den IBM-Gründern nicht schlecht geht. Irgendwer muss ja das Geld ausgeben, was deren Techniker ranschleppen (230€/Stunde)

              CU Christian

              Kommentar


              • #8
                Ich hab noch nie was anderes als grep gebraucht. Auch nicht bei wirklich großen Projekten die ich zum ersten Mal gesehen habe.

                Kommentar


                • #9
                  @Christianm_ghc

                  Wie willst du automatisiert feststellen, ob eine Datei aktiv ist? Dateien werden ja auch dynamisch geladen (zB: mit autoload) und das siehst du erst, wenn du das Programm ausführst. Da das Verhalten aber je nach eingegeben Daten komplett unterschiedlich ausfallen kann, müsste man erst manuell hergehen und alle erdenklichen Möglichkeiten vorgeben. Aber um das machen zu können, musst du sowieso schon wissen, welche Dateien gebraucht werden.

                  Es gäbe übrigens eine einfachere Möglichkeit:

                  Suche nach Dateien, auf die schon sehr lange nicht mehr zugegriffen wurde. Wenn eine Datei 1 Jahr oder länger unangetastet rumtümpelt, ist es sehr wahrscheinlich, dass diese nicht benötigt wird (sollte man trotzdem vor dem löschen manuell überprüfen).

                  Und dafür brauchst du kein Programm schreiben, denn diese Funktion hat eigentlich jedes Betriebssystem eingebaut.
                  Zuletzt geändert von h3ll; 27.10.2008, 11:29.

                  Kommentar


                  • #10
                    Wie willst du denn Dateileichen erkennen?

                    Alles nach dem Dateinamen durchsuchen? Ich kann Code schreiben, dem dein Programm nicht ansieht, welche Dateien er benutzt!

                    Lesezugriffe auf alle Dateien beobachten? Dann muß dein Programm die Applikation mit 100% Code Coverage laufen lassen. Unmöglich!

                    Wie sonst?

                    Kommentar


                    • #11
                      OffTopic:

                      Original geschrieben von h3ll
                      Wie willst du automatisiert feststellen, ob eine Datei aktiv ist? Dateien werden ja auch dynamisch geladen (zB: mit autoload) und das siehst du erst, wenn du das Programm ausführst. Da das Verhalten aber je nach eingegeben Daten komplett unterschiedlich ausfallen kann, müsste man erst manuell hergehen und alle erdenklichen Möglichkeiten vorgeben. Aber um das machen zu können, musst du sowieso schon wissen, welche Dateien gebraucht werden.
                      ~# strace php index.php | grep-awk-hell






                      Mein Vorschlag: Anstatt hier über IBM zu faseln solltest du lieber einmal Doxygen drüber jagen und dann so weit wie möglich versuchen durch ein Nachvollziehen den Code zu verstehen.

                      Kommentar


                      • #12
                        Original geschrieben von lennart
                        Mein Vorschlag: Anstatt hier über IBM zu faseln solltest du lieber einmal Doxygen drüber jagen und dann so weit wie möglich versuchen durch ein Nachvollziehen den Code zu verstehen.
                        D'Accord!

                        Alternativ beherrschen sowas (also Projektbäume auswerten und versuchen, include-Strukturen zu durchschauen) doch auch die meisten IDEs. Auf jeden Fall Nuspheres PHPEd, mit der Arbeite ich jeden Tag... Und die Zend sicher auch.

                        Kommentar


                        • #13
                          Original geschrieben von Christianm_ghc
                          Wie gesagt, konstruktive Ideen sind willkommen. Solche Behauptungen wie von unset können mir, gelinde gesagt, gestohlen bleiben.
                          Meine Vorschläge sind doch nur aus dem Grund in deinen Augen nicht konstruktiv, weil du es nicht auf Anhieb gebacken bekommen hast. Tut mir leid, wenn du "DoIt" haben willst, da musst du weiter suchen - oder dir deinen Scheiß selbst zusammenprogrammieren. Du hast von mehreren Leuten hier gehört, dass das was du da brauchst oder machen willst nicht benötigt wird. Natürlich sind wir hier alle Spinner, die keine Ahnung haben - ich frage mich aber, warum du dann unsere Hilfe in Form von Vorschlägen erbittest.

                          Und um es nochmal hervorzuheben: Ich habe extra "offensichtlich" gesagt, da ich keine Ahnung habe, wie dein Projekt dort wirklich aufgebaut es. Für mich deutet jedoch alles darauf hin, dass dort eine ekelhafte Vermischung von PHP und HTML stattgefunden hat, dass dort nicht im entferntesten modularisiert und das ganze mit unzähligen includes kompensiert wurde. Scheiße, wenn man sich dadurchwühlen muss, jedoch kein Grund direkt so zickig zu werden. Nebenbei: Bei so einem Design, wie ich vermute was bei dir vorliegt, ist es vorprogrammiert, dass man nicht mehr durchblickt und irgendwann Leichen auftauchen.
                          [FONT="Helvetica"]twitter.com/unset[/FONT]

                          Shitstorm Podcast – Wöchentliches Auskotzen

                          Kommentar


                          • #14
                            Hi @all,

                            komme leider erst heute zum schreiben, musste mich erstmal von euren Beiträgen erholen

                            Als allererstes: Falls ich mich im Ton vergriffen habe, entschuldige ich mich. Sollte so nicht rüberkommen. Hatte irgendwie nach der Sucherei ziemlich schlechte Laune, die dann wohl hier her verlagert wurde. Also nochmals: I'M SORRY. Wenn man jedoch gleich auf unprof. DESIGN angesprochen wird... Hatte nicht mal im Ansatz was von Design geschrieben. Ok, am Anfang die Baumstruktur, aber ich schrieb ja auch drüber
                            oder so
                            . Trotzdem verbitte ich mir solch verbalen Ausrutscher, wie bei dir, unset:
                            ... deinen Scheiß selbst ...
                            Komischerweise finden andere diese Idee gar nicht so schlecht.

                            zurück zum Anliegen: Ich habe mich mit jemanden unterhalten, der sich recht gut mit Linux auskennt (ich tue das leider nicht), und er hat gesagt, ja, mit grep ist es möglich, allerdings auch sehr umständlich. Und da ich ja in Zukunft eine Erleichterung für mich haben möchte, fällt das dann aus. Ich stelle mir das so vor, dass ein Assistent am Anfang den komplette Baum der Projektes durchsucht, und alle relevanten Infos wegspeichert. Dabei geht das Prog rekursiv vor, also folgt auch den includes in den includes in den includes etc., gleiches bei Links.

                            @h3ll: autoload verlangt m.E. , dass die Klassen genau so heißen, wie die php-Dateien. (http://de.php.net/autoload) hab ich da was falsch verstanden? Wenn nicht, kann man ja auch die Klassen überprüfen, wenn die autoload-Funktion am Anfang aufgerufen wird. Mit dem Datum des letzten Zugriffs kann ich nicht arbeiten, da z.B. Import-Module nur alle Jubeljahre mal aufgerufen werden.

                            @onemorenerd: jep, genau so. Wie ich schon schrieb: alles durchsuchen, fürs Löschen ist der User selbst verantwortlich Was mich wirklich interessiert: Wie sieht denn dieser Code aus? Wenn das möglich ist, wäre es natürlich ein K.O.-Kriterium.

                            @lennart: hatte schon geschrieben, dass doxygen bei dem Projekt abschmiert und beim Beispiel zwar durchläuft, aber mir überhaupt nicht die Infos liefert, die ich gerne hätte.

                            @pekka: habe grade mal die Trial von NuSphere installiert, macht auf den ersten Blick einen guten Eindruck, allerdings fehlen mir auch hier Informationen, kann man die Abhängigkeiten der Files untereinander irgendwie einblenden? Weil, die Infos zeigt mir Eclipse auch an. Des weiteren der Wermutstropfen PREIS ... arbeite im öffentlichen Dienst und das Geld ist alle

                            @unset: Sind wir Software-Entwickler nicht alle Spinner? Ansonsten könnte man diesen Job doch gar nicht durchstehen. Und genau deshalb hab ich hier nachgefragt. Und genau so, wie du es vermutest, sieht das Projekt aus: Keinerlei Modularisierung, sämtliche Dateien fangen mit <?an und hören mit ?> auf, alle HTML-Tags werden mittels echo ausgegeben ... ... Am liebsten würde ich von NULL neu anfangen, aber es ist schon produktiv und so lange hab ich auch keine Zeit.

                            Naja, nichtsdestrotrotz, schreibe ich das Tool jetzt mal nach meinen Wünschen. Hoffe weiterhin auf kollegiale Zusammenarbeit.

                            Grüße
                            Christian

                            Kommentar


                            • #15
                              Original geschrieben von Christianm_ghc
                              @onemorenerd: jep, genau so. Wie ich schon schrieb: alles durchsuchen, fürs Löschen ist der User selbst verantwortlich Was mich wirklich interessiert: Wie sieht denn dieser Code aus? Wenn das möglich ist, wäre es natürlich ein K.O.-Kriterium.
                              Du willst also den gesamten Code nach Dateinamen durchsuchen und dir ist nicht klar, dass das nicht funktionieren kann? Dann muß ich dir leider attestieren, dass du dieser Sache nicht gewachsen bist. Du glaubst wohl, dass alle Dateinamen in einem sauberen String wie "file.ext" stecken und eben hinter include oder requiere stehen.
                              PHP-Code:
                              if (!rand()) {
                                  
                              fooFunc('..'implode('e.e', array(strtolower(chr(70)."iL"), 'xt')));

                              Wie will dein Tool erkennen, dass hier file.ext benutzt wird? Richtig, das geht nicht. Denn dazu müßtest du den Code ausführen. Beim Ausführen würdest du aber höchstwahrscheinlich nicht den if-Zweig betreten. Dein Tool meldet also file.ext als Dateileiche, du löschst es und irgendwann knallt's!

                              Kommentar

                              Lädt...
                              X