Wie kann man AST aus dem Objective-C-Code extrahieren?

8

Ich muss statischen Objective-C-Code analysieren, hauptsächlich AST, nachdem ich in den möglichen Werkzeugen nachgesehen habe, dass das Clang-Tool von LLVM den AST ablegen kann, also benutzte ich das Terminal, um es mit diesem Befehl zu testen:

%Vor%

aber ich bekomme diesen Fehler:

%Vor%

Irgendeine Idee, warum ich das bekomme? Es macht mir nichts aus, irgendein Werkzeug zu verwenden, um AST aus dem Objective-C-Code zu extrahieren, solange es zuverlässig ist und Dokumentation für die Ausgabe liefert.

    
Muaz Othman 18.05.2012, 08:56
quelle

3 Antworten

3

Der Compiler findet das UIKit-Framework nicht. Sie müssen es sagen, um es zu benutzen:

%Vor%     
Nikolai Ruhe 18.05.2012 09:18
quelle
0

Versuchen Sie -Xclang -ast-dump anstelle von -cc1 -ast-dump . (Standard-Haftungsausschluss: Alles, was -Xclang oder -cc1 verwendet, verwendet eine instabile Schnittstelle zum Compiler.)

    
servn 18.05.2012 18:29
quelle
0

OP sagt Es macht mir nichts aus, irgendein Werkzeug zu verwenden, um AST aus dem Objective-C-Code zu extrahieren ...

Unser DMS Software Reengineering Toolkit kann dies für Objective-C tun.

Für diese Kommandozeile zum DMS-generierten Parser "domainparser":

%Vor%

Diese Ziel C-Datei "test.m":

%Vor%

erzeugt diese Ausgabe mit einem AST:

%Vor%

Da die Form des Baumes isomorph zu der von uns verwendeten Grammatik ist, ist die Grammatik die Dokumentation. Sehen Sie sich eine frühere SO-Antwort für an, wie wir dies tun und dennoch eine AST erstellen .

Dies ist ein Codefragment aus einer beliebten Bibliothek. es ist nur ein Fragment, denn sonst wäre der Baum riesig. Ich habe auch ein kleines bisschen betrogen, indem ich die #Importe weggelassen habe, die mir einen leicht konfigurierbaren Parser erlauben. DMS analysiert Dateien mit #includes und behält die Anweisung bei oder behält den Include-Text bei, abhängig davon, wie sein Parser konfiguriert ist.

Dies ist für ObjectiveC, nicht ObjectiveC ++. Daran arbeiten wir: -}

DMS bietet eine Menge zusätzlicher Unterstützung für die Programmanalyse, die auf den von ihm produzierten ASTs basiert.

    
Ira Baxter 25.05.2012 07:05
quelle
Django: Verwenden von Annotate, Count und Distinct in einem Queryset ___ tag123sqlserver ___ Microsoft SQL Server ist ein relationales Datenbankverwaltungssystem (RDBMS). Verwenden Sie dieses Tag für alle SQL Server-Editionen, einschließlich Compact, Express, Azure, Fast-Track, APS (früher PDW) und Azure SQL DW. Verwenden Sie dieses Tag nicht für andere Arten von DBMS (MySQL, PostgreSQL, Oracle usw.). Verwenden Sie dieses Tag nicht für Probleme bei der Software- und mobilen Entwicklung, es sei denn, es steht in direktem Zusammenhang mit der Datenbank. ___ tag123amazonec2 ___ Amazon EC2 steht für "Amazon Elastic Compute Cloud". Es ist Teil von Amazon Web Services (AWS) und ermöglicht Benutzern das Anmieten von VM-Instanzen. Sie können Instanzen erstellen, starten und über eine zentrale Schnittstelle, über eine Web-API oder über eine Konsole verwalten. SQL Server Reporting Services für Amazon RDS ___ qstntxt ___

Vor kurzem haben wir eine Geschäftsanwendungsdatenbank auf Amazon AWS SQL Server RDS migriert. Wir haben die Flexibilität der Sicherung und Skalierung mit der Cloud-Datenbank sehr geschätzt, aber wir müssen Berichte für unsere gesammelten Analysedaten erstellen. Unser hausinterner Datenanalyst verwendet SQL Reporting Services am besten. Normalerweise wird dies als eine Komponente mit der SQL Server-Installation installiert, aber diese Option haben wir offensichtlich nicht auf RDS.

Meine Frage ist: war jemand erfolgreich in der Lage, SQL Reporting Services mit Amazon RDS zu implementieren und zu nutzen?

Was ich versucht habe:

Ich habe versucht, eine andere EC2-Instanz hochzufahren, "SQL Server Express mit erweiterten Diensten" zu installieren und SSRS auf RDS zu setzen, aber es gab an, dass ich inkompatible Lizenztypen habe.

Ich plane auch, das AWS-Team direkt dafür zu kontaktieren, aber ich dachte, dass ich mich zuerst an SO wenden würde, um zu sehen, ob jemand darauf gestoßen ist. Danke.

    
___ answer11020202 ___

Möglicherweise müssen Sie ein bestimmtes von Microsoft erstelltes "Amazon Machine Image" verwenden, insbesondere das "SQL Server Optimized" AMI: Microsoft AMIs .

    
___ tag123amazonrds ___ Der Amazon-Dienst für relationale Datenbanken (Amazon RDS) ist ein Webdienst, mit dem Sie eine relationale Datenbank in der Cloud einfach einrichten, betreiben und skalieren können. ___