Verwendet Programmiersprache aus Quellcode - Datei ermitteln

S

Schuriko

Bekanntes Mitglied
Folgendes kleines Beispiel:
Java:
package mypckg;

public class MyApp
{
  public static void main( String[] args ) {
      
  }
}
myapp.java

PHP:
<php
    // mache irgendetwas
?>
myapp.php

XML:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <!-- Irgendetwas -->
</project>
my.pom

und noch zig weitere Dateien...

Wie kann man ermitteln aus einer Quelldatei es sich um eine xml, php, java, c#, etc. Datei handelt? Das Problem besteht darin das man von der zugrundliegenden Datei anhand der Endung nicht auf den Inhalt schlußfolgern kann - denn es hindert mich ja keiner daran Java Quellcode zu schreiben und die Datei dann mit der Endung php zu versehen, etc.

Also muss es dazu andere Möglichkeiten geben.

Ich bin bei meinen kurzen Rechern u.a. auf
  1. guesslag (https://guesslang.readthedocs.io/en/latest/) eine in pyhton geschriebenes Programm
  2. und github/linguist (https://github.com/github/linguist) eine in ruby geschriebens Programm


    gestoßen. Leider habe ich noch kein entsprechendes Pandon in Java gefunden. Kennt einer von euch evtl. ein in java geschriebenes Programm? Hintergrund: Ich habe keine Zeit mich lang mit pyhton oder ruby auseinander zu setzen.
 
mihe7

mihe7

Top Contributor
XML ist relativ einfach, da es einen Prolog gibt. Ansonsten muss klar sein, dass das nicht 100 %-ig funktioniert, denn
Code:
class A {
    int a;
};
ist gültig in C++, Java und C#.

Unter dieser Voraussetzung ist also die Frage, wie gut eben gut genug ist. PHP könnte man noch am "<?php" erkennen, wobei es ja auch noch Short-Tags gibt (<?= ?> und <? ?>) .

Bei einem einfachen Vorgehen kann es natürlich passieren, dass ein in Java geschriebenes System.out.print("<?php ... ?>"); dann als PHP-Quelldatei erkannt wird.

Daher: wie gut ist gut genug?

Und wenn Du schon Tools gefunden hast, warum nutzt Du diese nicht?
 
kneitzel

kneitzel

Top Contributor
XML ist relativ einfach, da es einen Prolog gibt.
Nunja - damit weiss man, dass es im XML Format ist. Aber Inhalt kann dennoch sonst irgendwas sein.

Das <?xml version="1.0" encoding="ISO-8859-1"?> kann html enthalt oder eine Oberfläche Beschreiben (fxml, XAML, ...)

Das ganze Anliegen fand ich also als relativ absurd. Warum sollte jemand Java Code als .php abspeichern? Selbst wenn Du ein Doctype findest - Ich wäre mir nicht sicher, dass die Loader für FXML oder XAML sich an einem <!DOCTYPE .... > wirklich stören würden ...

Und vor allem: Was ist mit einer html Seite, die dann php intern nutzt? Als was wird die dann erkannt? Die .php Endung wäre dann ignoriert und ein html wäre erkannt worden?
 
S

Schuriko

Bekanntes Mitglied
XML ist relativ einfach, da es einen Prolog gibt. Ansonsten muss klar sein, dass das nicht 100 %-ig funktioniert, denn
Code:
class A {
    int a;
};
ist gültig in C++, Java und C#.

Unter dieser Voraussetzung ist also die Frage, wie gut eben gut genug ist. PHP könnte man noch am "<?php" erkennen, wobei es ja auch noch Short-Tags gibt (<?= ?> und <? ?>) .

Bei einem einfachen Vorgehen kann es natürlich passieren, dass ein in Java geschriebenes System.out.print("<?php ... ?>"); dann als PHP-Quelldatei erkannt wird.

Daher: wie gut ist gut genug?

Und wenn Du schon Tools gefunden hast, warum nutzt Du diese nicht?
Alles gesagte ist mir wohl bekannt. Weshalb ich z.B. guesslang oder linguist verwende ist, dass es in mein Java-Projekt als fester Bestandteil integriert werden soll und dem obigen genannten Punkt, dass ich keine Zeit habe mich mit Pyhton oder Ruby auseinander zu setzen.
 
mihe7

mihe7

Top Contributor
Weshalb ich z.B. guesslang oder linguist verwende ist, dass es in mein Java-Projekt als fester Bestandteil integriert werden soll und dem obigen genannten Punkt, dass ich keine Zeit habe mich mit Pyhton oder Ruby auseinander zu setzen.
OK, Du willst die Tools in Deine Java-Anwendung integrieren. Da bin ich im Prinzip raus, ich würde mir aber JRuby und Jython ansehen.
 
S

Schuriko

Bekanntes Mitglied
Das ganze Anliegen fand ich also als relativ absurd. Warum sollte jemand Java Code als .php abspeichern? Selbst wenn Du ein Doctype findest - Ich wäre mir nicht sicher, dass die Loader für FXML oder XAML sich an einem <!DOCTYPE .... > wirklich stören würden ...

Und vor allem: Was ist mit einer html Seite, die dann php intern nutzt? Als was wird die dann erkannt? Die .php Endung wäre dann ignoriert und ein html wäre erkannt worden?
Du sprichst hier von verschiedenen Dingen
  1. Es geht nicht um den Inhalt der ausgedrückt wird. XAML z.B. ist und bleibt XML. Die Aussage von XAML hingegen drückt Benutzeroberflöchen, Verhaltensweisen, grafische Elemente (Animationen), etc. aus.
  2. Auch wenn du es absurd findest, aber es ist praktisch möglich. Deshalb geht man von der zugrundeliegende Syntax aus.
  3. Ich verstehe was du meinst. Aber ein Datei in der sich PHP mit HTML - Code befindet, bleibt eine PHP Datei (Syntaxisch gesehen)
 
kneitzel

kneitzel

Top Contributor
Aus meiner Sicht widersprichst Du Dir da selbst.

XML ist XML, egal was für ein Inhalt? Dann ist HTML auch nur XML. Auch wenn das PHP Anteile mit Drin sind -> Es ist und bleibt eine XML Datei.
Aber das willst Du ja eben doch nicht.

Und das Problem ist, dass es eben praktisch nicht wirklich möglich ist.
- Ein Beispiel ist schon genannt worden, wo Du nicht sagen kannst, ob es Java oder C++ ist.
- Die Endung, die Du ignorieren willst, ist wichtig. Davon hängt halt mit ab, was mit einer Seite gemacht wird. Als HTML kann es also eine Seite sein, die irgendwas mit php Blöcken enthält, die aber so auf der Seite einfach mitgesendet werden. (Keine Ahnung, was man da ggf. machen kann und wie Browser sowas ggf. anzeigen). Wenn es dann aber .php ist (und der Server entsprechend konfiguriert wurde), dann wird es von php ausgewertet.

Es mag da irgendwelche Dinge geben, die man schauen kann. Aber es wird sehr schwer, da wirklich sauber alles zu erkennen (Daher auch das "guess"lang. Da suggeriert der Name schon einiges.)

Mich würde da die eigentliche Problemstellung interessieren. Was musst Du da scannen / prüfen? Und zu welchem Zweck?

Was mehr Sinn machen kann, wäre die Endungen nicht zu ignorieren und dann zu schauen:
ist die .java Datei eine gültige Java Datei? -> Ein Java Parser wird es Dir sagen.
Ist die .php Datei eine gültige Datei? -> php Parser wird es geben ...
u.s.w.

Dann würdest Du ggf. nur Problemfälle betrachten müssen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Ant Probleme bei einer Installation die Apache ant+ivy verwendet Allgemeine Java-Themen 14
T @NotBlank verwendet nicht message aus .property-File Allgemeine Java-Themen 4
G Gleiche Packages in verschiedenen JAR Dateien - Welches Package wird verwendet? Allgemeine Java-Themen 5
C log4j.properties wird nicht verwendet?? Allgemeine Java-Themen 3
S Vererbung: Welche Methode wird verwendet? Allgemeine Java-Themen 9
C Kopieren von Dateien die von einem anderen Programm verwendet werden? Allgemeine Java-Themen 7
J Eigener ClassLoader wird nicht immer verwendet Allgemeine Java-Themen 3
M Wann verwendet man PropertyChangedEvents, wann eigene? Allgemeine Java-Themen 3
W VersionsVerwaltung welches Tool Verwendet ihr Allgemeine Java-Themen 12
Redfrettchen addAll verwendet kein Iterator? Allgemeine Java-Themen 8
H Welche Scriptsprache verwendet ihr in Java Allgemeine Java-Themen 9
T ändern neue Java Versionen was an der Programmiersprache? Allgemeine Java-Themen 15
R bei eclipse von java in eine andere programmiersprache wechseln? Allgemeine Java-Themen 2
S Programmiersprache entwickeln Allgemeine Java-Themen 65
F Softwarekonzept - Entscheidung Programmiersprache Allgemeine Java-Themen 4
R Java: Programmiersprache für Spiele? Allgemeine Java-Themen 16
C Quellcode-Übersetzung englisch zu deutsch Allgemeine Java-Themen 9
D Suche Quellcode! Allgemeine Java-Themen 8
B Quellcode einer Java libary finden um zu copy & paste'n Allgemeine Java-Themen 5
G Quellcode wiederherstellen Allgemeine Java-Themen 27
B Quellcode lesen - Aussortieren Allgemeine Java-Themen 3
M Quellcode von Java-Methoden Allgemeine Java-Themen 9
U Swing Hilfe beim Quellcode für ein Codierungs-/Decodierungsprogramm Allgemeine Java-Themen 9
G Externer Quellcode Allgemeine Java-Themen 3
L Methoden "Schiffe versenken" Quellcode in Methoden umwandeln Allgemeine Java-Themen 6
T Android Webview Webpage Quellcode to string Allgemeine Java-Themen 0
B Quellcode für Zwischenprüfung Allgemeine Java-Themen 4
M Aus Javaprogramm .NET Quellcode kompileren Allgemeine Java-Themen 2
J XML Dokument Zeilenumbruch in den Quellcode einfügen Allgemeine Java-Themen 5
T ExceptionHandling mit bescheidenem Quellcode Allgemeine Java-Themen 14
I Methoden Quellcode auslesen (Refelction o.ä.) Allgemeine Java-Themen 5
H Zeilenumbruch in Quellcode Allgemeine Java-Themen 4
G Eingegeben Formeln in Quellcode einbetten?! Allgemeine Java-Themen 4
E Compiler-Fehler wie muss ich die entstandene Quellcode kompilieren?? Allgemeine Java-Themen 2
T Api in Quellcode laden Allgemeine Java-Themen 8
L Java Quellcode auf Windows 7 ausführen? Allgemeine Java-Themen 3
S jsr in Quellcode Allgemeine Java-Themen 4
M R250 Quellcode Allgemeine Java-Themen 2
J Quellcode aus .jar auslesen? Allgemeine Java-Themen 3
M JLapack Quellcode beifügen? Allgemeine Java-Themen 4
P Probleme mit wikipedia quellcode zur binären Suche Allgemeine Java-Themen 6
X Quellcode von nativen Funktionen Allgemeine Java-Themen 2
D Übersetzen von Quellcode Allgemeine Java-Themen 11
N Java Quellcode zu Syntaxbaum Allgemeine Java-Themen 3
M Wie in Eclipse Quellcode incl. Zeilennummern kopieren? Allgemeine Java-Themen 6
G SourceForge - Quellcode Allgemeine Java-Themen 15
V Quellcode auf "Güte" testen? Allgemeine Java-Themen 5
C Java Quellcode parsen Allgemeine Java-Themen 8
M Quellcode DriverManager Allgemeine Java-Themen 2
C Fehler im Quellcode. Suche in einem Baum Allgemeine Java-Themen 3
G Problem mit Quellcode, Eingabe wird nicht angezeigt --HELP-- Allgemeine Java-Themen 2
T Problem mit Quellcode Allgemeine Java-Themen 2
D Was haltet ihr von meinem Quellcode - JConsole? Allgemeine Java-Themen 2
Lazybone Java Quellcode sichern Allgemeine Java-Themen 9
P Fehler im Quellcode Allgemeine Java-Themen 8
J Viel Text mit " im Quellcode abspeichern Allgemeine Java-Themen 7
R Copyright-Notiz am Anfang jeder Quellcode-Datei? Allgemeine Java-Themen 5
R Problem mit Quellcode Allgemeine Java-Themen 2
M Events im Quellcode auslösen Allgemeine Java-Themen 4
J Java Quellcode Aufbereitung für Dokumentation Allgemeine Java-Themen 11
P Organisation von Quellcode Allgemeine Java-Themen 6
F Quellcode von Java ansehen Allgemeine Java-Themen 4
S In einem HTML Quellcode gewünschten Abschnitt in Datei Save Allgemeine Java-Themen 9
R Java Quellcode zu exe Datei unsw. Allgemeine Java-Themen 5
G Quellcode inkludieren Allgemeine Java-Themen 3
J Quellcode aus JAVA Programmen Allgemeine Java-Themen 4

Ähnliche Java Themen


Oben