Irgendein Programm oder Trick, um die Definition einer Variablen zu finden?

7

Wenn ich anderen Code sehe, möchte ich oft herausfinden, wo und wie eine Variable definiert ist. Normalerweise suche ich nach dem Typ der Variablen, bis ich die Definition gefunden habe, die sehr zeitaufwendig ist. Und ich denke, dass es einige Werkzeuge gibt, die mir in dieser ruinösen Situation helfen können. Irgendwelche Vorschläge in einigen Tools oder Befehlen, um mir bei dieser Aufgabe zu helfen?.

Ich weiß, dass die Verwendung einer GUI und das Erstellen eines Projekts automatisch erfolgt. Ich spreche von einer Möglichkeit, dies ohne GUI zu tun. Ich arbeite mit nur Textmodus. Ich laufe unter Linux und ich benutze C / C ++, aber Vorschläge für andere Sprachen sind willkommen.

Vielen Dank.

Eine mögliche Lösung

Michel schlägt in einem seiner Kommentare eine einfache und effektive Lösung vor, um die Variable erneut zu definieren, in diesem Fall wird der Compiler in der Compilierungszeit angeben, wo die vorherige Definition ist. Natürlich müssen wir, um diese Lösung anzuwenden, vorher im Ort der Variablen nachdenken.

    
Eduardo 17.02.2009, 23:54
quelle

8 Antworten

8

Bearbeiten : OK, Sie sagen, Sie verwenden C ++. Ich bearbeite meine Antwort. Ich würde den C-Präprozessor verwenden und dann für die Variable grep. Es wird an erster Stelle erscheinen.

%Vor%

Der C-Präprozessor verbindet alle Includes, die das Programm verwendet, und die Definition muss vor jeder Verwendung dieser Variablen in der Datei stehen. Nicht eine perfekte Sache, aber ohne eine IDE oder eine komplette Sprache Beschreibung / Verwaltung Werkzeug, haben Sie nur den Text.

Eine andere Option wäre die Verwendung von Ctags . Es versteht unter anderem die C- und C ++ - Syntax und kann unter anderem mit den Befehlszeilentools emacs und vi nach Variablen und Funktionen durchsucht werden.

    
Diego Sevilla 18.02.2009, 00:00
quelle
11

Sie haben bereits das geeignetste Werkzeug angegeben: eine IDE. Das ist genau was eine IDE auszeichnet. Warum würden Sie nicht eine IDE verwenden wollen, wenn Sie Entwicklung schmerzhaft ohne eine finden?

Beachten Sie, dass Emacs, Vim usw. als IDEs arbeiten können - ich spreche nicht davon, Sie zu der Welt der GUIs zu zwingen, wenn Sie in einer Nur-Text-Situation bleiben möchten, z. weil du SSHing bist.

(Ich bin wirklich nicht versuche hier unhöflich zu sein. Ich denke nur, dass du die offensichtliche Lösung ignoriert hast, ohne zu erklären warum.)

    
Jon Skeet 18.02.2009 00:00
quelle
5

Ich benutze cscope und ctags - überschwänglich religiös. Führen Sie es einmal auf meiner Codebasis und dann in Vim, kann ich verschiedene Befehle wie ^] oder [D oder [I oder ähnlich, um Definitionen oder Deklarationen für ein bestimmtes Wort zu finden.

Dies ist vergleichbar mit Einrichtungen, die von Mega-IDEs wie Visual Studio und Eclipse bereitgestellt werden.

Cscope fungiert auch als eigenständiges Tool, das diese Suchen durchführt.

    
greyfade 18.02.2009 01:24
quelle
2

Ich verwende eine von drei Methoden:

  1. Ich werde CTags verwenden, um meinen Quellbaum (nachts) zu bearbeiten, und kann dann einfach Befehle in Vim (oder anderen) verwenden Editoren), um direkt zur Definition zu springen.
  2. Ich werde einfach grep (linux) oder findstr (windows) verwenden, um nach allen Vorkommen des Variablennamens oder -typs zu suchen. Die Definition ist normalerweise ziemlich offensichtlich.
  3. In Vim können Sie einfach rückwärts im Bereich suchen und oft finden, wonach Sie suchen.
Steve Rowe 18.02.2009 01:37
quelle
1

Grep für allgemeine Muster für Variablendeklarationen. Beispiel: *, & amp; & gt; oder ein alphanumerisches Zeichen, gefolgt von einem oder mehreren Leerzeichen, dann der Name der Variablen. Oder ein Variablenname gefolgt von null oder mehr Leerzeichen, dann eine linke Klammer oder ein Semikolon. Es sei denn, es wurde unter wirklich seltsamen Umständen (wie mit irgendeiner Art von Makro) definiert, es funktioniert jedes Mal.

    
Michel 18.02.2009 00:21
quelle
1

In VIM können Sie gd verwenden, um lokale Variablendeklarationen anzuzeigen, oder gD , um globale Variablendeklarationen anzuzeigen, wenn sie in der aktuellen Datei definiert sind. Referenz Go_to_definition_using_g

Sie können auch [i verwenden, um die Definition zu sehen, ohne zu ihr zu springen, oder [I , um alle Vorkommen der Variablen in allen eingeschlossenen Dateien zu sehen, was natürlich auch die Definition anzeigt.

    
Nathan Fellman 18.02.2009 09:35
quelle
-1

Wenn Sie in Microsoft Visual Studio arbeiten (was ich denke, dass Sie auch für C ++ verwenden könnten, aber auf einer Windows-Workstation arbeiten müssten), gibt es eine leicht zugängliche Rechtsklick-Menüoption für "Gehe zu Definition ..." Dies führt Sie zur Definition einer aktuell markierten Variablen, eines Typs oder einer Methode.

    
Tomas Lycken 18.02.2009 00:01
quelle
-1

Wenn Sie darauf bestehen, den Textmodus beizubehalten, können Sie dies entweder mit emacs oder vi mit den entsprechenden Plug-Ins tun.

Aber wirklich, bewegen Sie sich in das 21. Jahrhundert.

EDIT: Sie haben kommentiert, dass Sie dies über SSH tun, weil Sie die Build-Geschwindigkeit des Remote-Server-Clusters benötigen.

In diesem Fall mounten Sie das Laufwerk auf Ihrem lokalen Rechner und verwenden Sie eine IDE und nur SSH, um einen Build zu starten.

    
FlySwat 18.02.2009 00:08
quelle

Tags und Links