DE112016003130T5 - Automatische Importe und Abhängigkeiten in großräumigen Quellcode-Depots - Google Patents

Automatische Importe und Abhängigkeiten in großräumigen Quellcode-Depots Download PDF

Info

Publication number
DE112016003130T5
DE112016003130T5 DE112016003130.0T DE112016003130T DE112016003130T5 DE 112016003130 T5 DE112016003130 T5 DE 112016003130T5 DE 112016003130 T DE112016003130 T DE 112016003130T DE 112016003130 T5 DE112016003130 T5 DE 112016003130T5
Authority
DE
Germany
Prior art keywords
qualified
name
list
names
source code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112016003130.0T
Other languages
English (en)
Inventor
Carmi GRUSHKO
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Publication of DE112016003130T5 publication Critical patent/DE112016003130T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/164File meta data generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/0482Interaction with lists of selectable items, e.g. menus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/33Intelligent editors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/74Reverse engineering; Extracting design information from source code

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Abstract

Ein System und ein Verfahren zum Finden von Kandidaten von qualifizierten Namen für wenigstens einen einfachen Namen in einer Quellcode-Datei sind offenbart. Eine Quellcode-Datei kann empfangen werden, die wenigstens einen einfachen Namen hat, für welchen ein entsprechender qualifizierter Name erforderlich ist. Die Quellcode-Datei kann geparst werden, um die einfachen Namen in der Datei und die qualifizierten Namen in der Datei zu bestimmen. Für den wenigstens einen einfachen Namen, für welchen ein entsprechender qualifizierter Name erforderlich ist, kann ein Quellcode-Graph durchsucht werden, um Kandidaten für potentielle qualifizierte Namen zu finden, die dem wenigstens einen einfachen Namen entsprechen. Auf einen Empfang einer Liste von Kandidaten für potentielle qualifizierte Namen aus dem Quellcode-Graphen hin kann die Liste zu einem Anwender ausgegeben werden, damit der Anwender den geeigneten qualifizierten Namen auswählt. Es könne auch Erstellungsabhängigkeiten für den qualifizierten Namen ausgewählt werden.

Description

  • HINTERGRUND
  • Entwickler erstellen oft komplexe Softwareanwendungen, die einen externen Code oder Bibliotheken enthalten. Beispielsweise kann ein Entwickler wünschen, eine Liste von Leuten in seine Anwendung aufzunehmen. Anstelle eines Definierens seines eigenen Listenobjekts kann der Entwickler eine Listenklasse von einem externen Paket aufnehmen. Bei diesem Beispiel, wie es in 1 gezeigt ist, kann der Entwickler eine Liste aus einer Standardbibliothek in seinen Code aufnehmen, wie beispielsweise "java.util.List.". "java.util.List" ist eine Klasse einer geordneten Sammlung, die durch das Paket java.util öffentlich verfügbar ist. Wenn die Liste einmal in eine Quellcode-Datei eines Entwicklers importiert worden ist, kann der Entwickler überall, wo eine Liste instanziiert oder verwendet wird, einfach auf die Liste mit dem einfachen Namen "Liste" Bezug nehmen, ohne dass er den vollständigen, qualifizierten Namen "java.util.List" verwenden muss. Beispielsweise bezieht sich in der Zeile 3 von 1 der Code nur auf den einfachen Namen "Liste" und nicht auf den qualifizierten Namen "java.util.List".
  • Obwohl der Prozess, um Pakete, Bibliotheken oder einen externen Code, der die qualifizierten Namen definiert, in einen Quellcode zu importieren, für kleine Codebasen unter Verwendung von standardmäßigen integrierten Entwicklungsumgebungen (IDEs) unkompliziert sein können, haben Codebasen großen Ausmaßes zu viele externe Abhängigkeiten für Standard-IDEs, um die geeigneten vollständigen Namen, auf die als qualifizierte Namen Bezug genommen wird, oder die geeigneten Erstellungs-Systemkonstrukte für die Abhängigkeiten effizient zu finden.
  • Herkömmliche Systeme versuchen, qualifizierte Namen in Echtzeit zu finden, indem auf die gesamte Codebasis geschaut und versucht wird, das geeignete Paket, die geeignete Bibliothek oder einen geeigneten anderen externen Code zu bestimmen. Dieser Prozess ist zeitaufwendig. Große Mengen eines Quellcodes können unter Verwendung dieses Ansatzes nicht einfach in einer vernünftigen Zeit verarbeitet werden.
  • Wie es durch den Erfinder erkannt ist, wäre es erwünscht, Kandidaten von qualifizierten Namen schnell zu finden, um das geeignete Paket, die geeignete Bibliothek oder den geeigneten externen Code für einfache Namensreferenzen, die im Quellcode existieren, und die Erstellungs-Systemabhängigkeiten, die die qualifizierten Namen liefern, zu importieren.
  • ZUSAMMENFASSUNG
  • Diese Beschreibung beschreibt Technologien in Bezug auf ein Finden von Kandidaten von qualifizierten Namen für wenigstens einen einfachen Namen in einer Quellcode-Datei, wie beispielsweise in einer Quellcode-Datei in der Java-Sprache.
  • Allgemein kann ein Aspekt des in dieser Beschreibung beschriebenen Gegenstands in einem System zum Finden von Kandidaten von qualifizierten Namen für wenigstens einen einfachen Namen in einer Quellcode-Datei verkörpert sein. Ein beispielhaftes System kann eine oder mehrere Verarbeitungsvorrichtungen und eine oder mehrere Speichervorrichtungen, die Anweisungen speichern, die ein beispielhaftes Verfahren implementieren, enthalten. Ein beispielhaftes Verfahren kann enthalten: Empfangen einer Quellcode-Datei mit wenigstens einem einfachen Namen, für welchen ein entsprechender qualifizierter Name erforderlich ist; Parsen der Quellcode-Datei, um die einfachen Namen in der Datei und qualifizierte Namen in der Datei zu bestimmen; für den wenigstens einen einfachen Namen, für welchen ein entsprechender qualifizierter Name erforderlich ist, Suchen eines Quellcode-Graphen, um potentielle qualifizierte Namen zu finden, die dem wenigstens einen einfachen Namen entsprechen; und auf einen Empfang einer Liste von Kandidaten für potentielle qualifizierte Namen von dem Quellcode-Graphen hin Ausgeben der Liste.
  • Diese und andere Ausführungsformen können optional eines oder mehrere der folgenden Merkmale enthalten: die Liste von Kandidaten für potentielle qualifizierte Namen kann vor einem Ausgeben der Liste mit zusätzlicher Information gefiltert oder angereichert werden; Erstellungsabhängigkeiten und Erstellungsziele für spezifische qualifizierte Namen können bestimmt werden, wenn einmal ein qualifizierter Name ausgewählt ist; die Liste von Kandidaten für potentielle qualifizierte Namen kann vor einem Ausgeben der Liste basierend auf einer Anzahl von Malen gefiltert werden, für welche ein qualifizierter Name eines bestimmten Typs durch andere Quellcode-Dateien verwendet worden ist; die Liste kann basierend auf der Häufigkeit, mit welcher ein bestimmter qualifizierter Name in anderen Teilen eines Quellcode-Depots verwendet worden ist, in eine Rangfolge gebracht werden; wenn die Liste nur einen potentiellen qualifizierten Namen enthält, kann der Name ohne Anwenderinteraktion automatisch als der qualifizierte Name ausgewählt werden; eine Schnittstelle kann für einen Anwender vorgesehen sein, um eine Auswahl eines qualifizierten Namens aus der Liste von Kandidaten für potentielle qualifizierte Namen aufzunehmen; ein Filtern kann ein Bestimmen enthalten, ob ein Paket von qualifizierten Namen aus der Quellcode-Datei sichtbar ist, in welcher aktuell auf einen einfachen Namen, der potentiell dem qualifizierten Namen entspricht, Bezug genommen wird, und in Reaktion auf ein Bestimmen, dass das Paket von qualifizierten Namen aus der Quellcode-Datei sichtbar ist, ein Liefern des Namens des Pakets von qualifizierten Namen als einen Kandidaten für potentielle qualifizierte Namen; und ein Filtern kann ein Bestimmen des Ausmaßes an Komplikation enthalten, das ein Paket von qualifizierten Namen zum Erstellungsprozess hinzufügen kann, einschließlich der Erhöhung bezüglich Zeit oder Ressourcen, um die Quellcode-Datei zu erstellen, und in Reaktion auf ein Bestimmen, dass das Ausmaß an Komplikation, das ein Paket von qualifizierten Namen zum Erstellungsprozess hinzufügt, ein erträgliches Ausmaß ist, Hinzufügen des Namens des Pakets von qualifizierten Namen zur Liste von Kandidaten für potentielle qualifizierte Namen.
  • KURZE BERSCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein Beispiel eines Quellcodes, der einen qualifizierten Namen und einen einfachen Namen enthält.
  • 2 ist ein Blockdiagramm, das ein beispielhaftes System zum Bestimmen von qualifizierten Namen für einfache Namen in einer Quellcode-Datei darstellt.
  • 3 ist ein Blockdiagramm, das eine beispielhafte Computervorrichtung darstellt.
  • DETAILLIERTE BESCHREIBUNG
  • Gemäß einer beispielhaften Ausführungsform kann es einen Graphen großen Ausmaßes in einem verteilten System geben, das einen gesamten Quellcode für ein bestimmtes Quellcode-Depot oder bestimmte Quellcode-Depots darstellt. Der Quellcode kann indexiert sein, um den Graphen zu erzeugen. Bei einigen Ausführungsformen kann dieser Graph auf einer Maschine oder mehreren Maschinen existieren, auf die entfernt durch Entwickler zugegriffen wird, so dass der Graph nicht auf einer Maschine eines individuellen Entwicklers laufengelassen wird und auf ihn durch mehrere Entwickler gleichzeitig zugegriffen werden kann. In der einfachsten Form kann der Graph zwei Tabellen sein, wobei eine einfache Namen auf qualifizierte Namen abbildet und wobei eine zweite Tabelle qualifizierte Namen auf Erstellungssystemabhängigkeiten abbildet. Durch Erzeugen des Graphen und Zugreifen auf ihn in einem verteilten System oder einer Cloud-Umgebung können Berechnungen in einem Cache gespeichert werden und unter Entwicklern wiederverwendet werden. Bei anderen Ausführungsformen kann der Graph auf der eigenen Maschine eines Entwicklers existieren.
  • Wie es in 2 gezeigt ist, gibt es zwei einfache Namen in einer beispielhaften Quellcode-Datei (201), "Bar" in Zeile 3 und "Foo" in Zeile 5. Der qualifizierte Name für "Bar" wird im Code als "com.sourcecode.Bar" in Zeile 1 zur Verfügung gestellt. Jedoch ist der qualifizierte Name für "Foo" nicht zur Verfügung gestellt.
  • Bei einem beispielhaften System kann eine integrierte Entwicklungsumgebung (IDE), die auf einer Maschine eines Entwicklers läuft, einen Parser (203) haben, der eine Liste von einfachen Namen zur Verfügung stellen bzw. liefern kann, die in einer bestimmten Quellcode-Datei verwendet werden. Der Parser (203) kann auch eine Liste von qualifizierten Namen in der Quellcode-Datei liefern. Für die in 2 gezeigte Quellcode-Datei kann die Liste von einfachen Namen Folgendes sein: [Foo, Bar]. Die Liste von qualifizierten Namen kann Folgendes sein: [com.sourcecode.Bar]. Wie es dargestellt ist, kann es sein, dass ein qualifizierter Name entsprechend einem einfachen Namen nicht geliefert ist. Um den qualifizierten Namen und das Erstellungssystemkonstrukt, das den qualifizierten Namen für einfache Namen im Quellcode liefert, für welche der entsprechende qualifizierte Name nicht geliefert ist, zu finden, kann der Quellcode-Graph (205) für mögliche Erweiterungen des einfachen Namens in einen qualifizierten Namen angefragt werden. Beim gegebenen Beispiel kann der Quellcode-Graph (205) für den qualifizierten Namen für "Foo" und Erstellungsabhängigkeiten, die mit "Foo" assoziiert sind, angefragt werden. Wenn der qualifizierte Name als ein Import geliefert wird, wie bei diesem Beispiel "Bar", kann die Erstellungssystemabhängigkeit vorhanden sein oder nicht. Daher kann der Quellcode-Graph (205) auch für die Erstellungssystemabhängigkeiten angefragt werden, selbst wenn der vollständig qualifizierte Name im Quellcode geliefert ist.
  • Beispielsweise kann, wenn nach "Foo" gesucht wird, die Suche des Quellcode-Graphen (205) Klassen und Erstellungssystem-Produkte bzw. -Prüfgegenstände, die den Namen "Foo" enthalten, paaren. Bei einigen Ausführungsformen können Ergebnisse dadurch gefiltert werden, wie ein einfacher Name in einem Code verwendet wird. Wenn beispielsweise ein bestimmtes Verfahren von "Foo" aufgerufen wird, können vollständig qualifizierte potentielle Kandidaten für eine Fertigstellung, die das Verfahren nicht enthalten, aus der Liste für potentielle Kandidaten herausgefiltert werden. Die Anfrage kann dann eine Liste von Importen und Erstellungssystemabhängigkeiten zurückbringen. Es gibt verschiedene Arten, um diese Liste zu ordnen und zu filtern, wie es ein Fachmann auf dem Gebiet erkennen kann.
  • Der Quellcode-Graph (205) kann durchquert bzw. durchlaufen werden, um Information zu erhalten, wie beispielsweise die Erstellungssystemabhängigkeiten für in den Dateien gefundene einfache Namen. Beispielsweise kann der Quellcode-Graph dazu fähig sein, die Ziele für die Abhängigkeiten zu dem qualifizierten Namen für den einfachen Namen "Foo" zu liefern, so dass der Quellcode in Objektdateien kompiliert werden kann.
  • Die Liste von potentiellen qualifizierten Namen für einen gegebenen einfachen Namen, der durch Durchqueren des Quellcode-Graphen (205) erhalten ist, kann mit anderen Daten angereichert und weiter gefiltert werden (213). Anreicherungsdaten können enthalten: die Anzahl von Malen, für welche der qualifizierte Name im Depot verwendet wird (um eine Rangfolgenbildung zuzulassen); ob der qualifizierte Name als abgelehnt bzw. überholt markiert ist, und wenn es so ist, welcher qualifizierte Name stattdessen verwendet werden sollte; ob das Paket von qualifizierten Namen aus dem Quellcode sichtbar ist, in welchem auf ihn aktuell Bezug genommen wird (einige Klassen können absichtlich beschränkt sein auf bestimmte Softwarepakete); und das Ausmaß an Komplikation, das dieser qualifizierte Name zum Erstellungsprozess hinzufügen kann, einschließlich der Erhöhung bezüglich Zeit und/oder Ressourcen, um den Quellcode zu erstellen. Die Liste kann beispielsweise basierend auf der Anzahl von Malen gefiltert werden, für welche ein qualifizierter Name eines bestimmten Typs durch andere Quellcode-Dateien verwendet worden ist. Ein Filtern kann auch ein Entfernen von allen nicht sichtbaren Klassen oder ein Entfernen von allen Klassen, die nicht in den spezifischen Kontext im Code passen würden, enthalten. Beispielsweise kann "Foo" ein spezifisches Verfahren in einer Quellcode-Datei aufrufen, so dass alle passenden "Foo"-Bibliotheken, die dieses Verfahren nicht haben, aus der potentiellen Kandidatenliste herausgefiltert werden können. Wenn eine Liste von möglichen Kandidaten für Fertigstellungen und Abhängigkeiten zu einem Anwender (215) zur Berücksichtigung zurückgebracht wird, kann ein beispielhaftes System zurückgebrachte Ergebnisse basierend auf der Häufigkeit in eine Rangfolge bringen, mit welcher ein bestimmter qualifizierter Name durch andere Entwickler in anderen Teilen des Quellcode-Depots verwendet worden ist.
  • Bei einigen Ausführungsformen sind stark verwendete qualifizierte Namen die Namen, die durch Entwickler in ihren Quellcode-Dateien am wahrscheinlichsten verwendet werden. Unter anderen Rangfolgenbildungen können Namen auch dadurch in eine Rangfolge gebracht werden, ob sie für die Quellcode-Datei sichtbar sind, die dafür in Betracht gezogen wird, dass sie darin verwendet werden; ob die Klasse, die den Namen darstellt, ein Verfahren hat, das in der Quellcode-Datei verwendet wird; und ob Klassen abgelehnt sind. Klassen, die abgelehnt sind, können in einer Rangfolgenbildung für einen Namen zurückgestuft werden. Einem Anwender (215) kann dann die angereicherte, gefilterte Liste von Kandidaten für potentielle qualifizierte Namen für eine spezifische einfache Namensbezugnahme im Code gezeigt werden, und er kann das geeignetste Paket, die geeignetste Bibliothek oder eine geeignetste andere externe Codequelle für das Objekt mit einfachem Namen auswählen. Wenn der Anwender (215) einmal den richtigen qualifizierten Namen für den einfachen Namen im Quellcode aus den Kandidaten von qualifizierten Namen auswählt, können die ausgewählten qualifizierten Namen dann wieder zum Quellcode-Graphen (205) gesendet werden, um Information über die Erstellungssystemabhängigkeiten zu erlangen, um Erstellungsregelabhängigkeiten und Erstellungsziele für spezifische qualifizierte Namen zu manipulieren. Bei einigen Ausführungsformen kann die Liste von potentiellen Kandidaten für eine Fertigstellung und Erstellungssystemabhängigkeiten gefiltert werden, und für die Anfrage, um nur den Import und Erstellungssystemabhängigkeiten zurückzubringen, die die wahrscheinlichsten Übereinstimmungen bzw. Paarungen sind.
  • Wie es in 2 gezeigt ist, können dann, wenn die eindeutigen qualifizierten Namen (207, 209) einmal im Quellcode-Graphen (205) gefunden worden sind oder aus der Datei selbst (203) geparst worden sind und mit den einfachen Namen gepaart worden sind, die in der Quellcode-Datei (201) verwendet sind, die qualifizierten Namen in die Datei (201) hinzugefügt/importiert werden. Der Quellengraph kann periodisch regeneriert werden, um zu bestimmen, welche Klassen/Erstellungsabhängigkeiten am häufigsten verwendet werden.
  • Ein beispielhaftes Verfahren, wie es in 3 gezeigt ist, beginnt mit einem Empfangen einer Quellcode-Datei mit wenigstens einem einfachen Namen, für welchen ein entsprechender qualifizierter Name gefunden werden sollte (oder erforderlich ist) (301). Die Quellcode-Datei kann dann geparst werden, um eine Liste der einfachen Namen zu finden, die in der Datei verwendet sind, und eine andere Liste von all den qualifizierten Namen in der Datei (303). Für den wenigstens einen einfachen Namen, für welchen ein entsprechender qualifizierter Name gefunden werden sollte, kann der Graph vom gesamten Quellcode durchsucht werden, um Kandidaten für potentielle qualifizierte Namen für den einfachen Namen zu finden (305). Bei einigen Ausführungsformen kann die Kandidatenliste von Namen mit zusätzlicher Information gefiltert oder angereichert werden. Die Liste kann einem Anwender dafür zur Verfügung gestellt bzw. geliefert werden, dass der Anwender den geeigneten qualifizierten Namen für einen gegebenen einfachen Namen auswählt (309). Bei einigen Ausführungsformen kann, wenn es nur einen Kandidaten für qualifizierte Namen gibt, ein Anwender den qualifizierten Namen nicht auswählen müssen und kann der qualifizierte Name automatisch ausgewählt werden. Bei anderen Ausführungsformen kann, wenn es nur einen Kandidaten für qualifizierte Namen gibt, ein Anwender nur bestätigen, dass der qualifizierte Name die geeignete Paarung für den einfachen Namen ist. Wenn der qualifizierte Name einmal ausgewählt ist, kann ein beispielhaftes Verfahren Erstellungsabhängigkeiten und Erstellungsziele für die spezifischen qualifizierten Namen bestimmen. Die qualifizierten Namen, die zu den einfachen Namen in der Quellcode-Datei passen, können zu der Quellcode-Datei hinzugefügt werden. Dann kann der Quellcode-Graph regeneriert werden und kann Information, die zu einer Häufigkeit eines einfachen Namens/qualifizierten Namens/Erstellungsabhängigkeit gehört, bei einer zukünftigen Analyse verwendet werden, um qualifizierte Namen und Erstellungsabhängigkeiten zu finden.
  • 4 ist ein Blockdiagramm auf hoher Ebene eines beispielhaften Computers (400), der zum Hosten und Veröffentlichen von Softwarepaketen eingerichtet ist. Bei einer sehr grundsätzlichen Konfiguration (401) enthält die Computervorrichtung (400) typischerweise einen oder mehrere Prozessoren (410) und einen Systemspeicher (420). Ein Speicherbus (430) kann zum Kommunizieren zwischen dem Prozessor (410) und dem Systemspeicher (420) verwendet werden.
  • In Abhängigkeit von der erwünschten Konfiguration kann der Prozessor (410) von irgendeinem Typ sein, einschließlich, aber nicht darauf beschränkt, eines Mikroprozessors (µP), einer Mikrosteuerung (µC), eines digitalen Signalprozessors (DSP) oder irgendeiner Kombination davon. Der Prozessor (410) kann einige Ebenen mehr einer Cache-Speicherung enthalten, wie beispielsweise einen Level-Eins-Cache (411) und einen Level-Zwei-Cache (412), einen Prozessorkern (413) und Register (414). Der Prozessorkern (413) kann eine arithmetisch-logische Einheit (ALU), eine Gleitkommaeinheit (FPU), einen Kern eines digitalen Signalprozessors (DSP-Kern) oder irgendeine Kombination davon enthalten. Eine Speichersteuerung (416) kann auch mit dem Prozessor (410) verwendet werden oder die Speichersteuerung (415) kann bei einigen Implementierungen ein interner Teil des Prozessors (410) sein.
  • In Abhängigkeit von der erwünschten Konfiguration kann der Systemspeicher (420) von irgendeinem Typ sein, einschließlich, aber nicht darauf beschränkt, eines flüchtigen Speichers (wie beispielsweise RAM), eines nichtflüchtigen Speichers (wie beispielsweise ROM, Flash-Speicher, etc.) oder irgendeiner Kombination davon. Der Systemspeicher (420) enthält typischerweise ein Betriebssystem (421), eine oder mehrere Anwendungen (422) und Programmdaten (424). Die Anwendung (422) kann ein Verfahren zum Hosten und Veröffentlichen von Softwarepaketen enthalten. Die Programmdaten (424) enthalten Speicherungsanweisungen, die dann, wenn sie durch die eine oder die mehreren Verarbeitungsvorrichtungen ausgeführt werden, ein Verfahren zum Hosten und Veröffentlichen von Softwarepaketen implementieren (423). Bei einigen Ausführungsformen kann die Anwendung (422) eingerichtet sein, um mit Programmdaten (424) auf einem Betriebssystem (421) zu arbeiten.
  • Die Computervorrichtung (400) kann zusätzliche Merkmale oder Funktionalität haben und zusätzliche Schnittstellen, um Kommunikationen zwischen der grundsätzlichen Konfiguration (401) und irgendwelchen erforderlichen Vorrichtungen und Schnittstellen zu ermöglichen.
  • Der Systemspeicher (420) ist ein Beispiel von Computerspeichermedien. Computerspeichermedien enthalten, sind aber nicht darauf beschränkt, RAM, ROM, EEPROM, einen Flash-Speicher oder eine andere Speichertechnologie, CD-ROM, digitale vielseitige Scheiben (DVD) oder einen anderen optischen Speicher, magnetische Kassetten, ein Magnetband, einen Magnetplattenspeicher oder andere magnetische Speichervorrichtungen oder irgendein anderes Medium, das dazu verwendet werden kann, die erwünschte Information zu speichern, und auf das durch die Computervorrichtung 400 zugegriffen werden kann. Irgendwelche solchen Computerspeichermedien können ein Teil der Vorrichtung (400) sein.
  • Die Computervorrichtung (400) kann als ein Teilbereich einer tragbaren (oder mobilen) elektronischen Vorrichtung mit kleinem Formfaktor implementiert sein, wie beispielsweise eines Zellentelefons, eines Smartphones, eines persönlichen Datenassistenten (PDA), einer persönlichen Medienabspielvorrichtung, eines Tablet-Computers (Tablets), einer drahtlosen Web-Uhrenvorrichtung, einer persönlichen Headset-Vorrichtung, einer anwendungsspezifischen Vorrichtung oder einer hybriden Vorrichtung, die irgendeine der obigen Funktionen enthält. Die Computervorrichtung (400) kann auch als ein Personalcomputer implementiert sein, einschließlich sowohl Laptopcomputer- als auch nicht Laptopcomputer-Konfigurationen.
  • Die vorangehende detaillierte Beschreibung hat verschiedene Ausführungsformen der Vorrichtungen und/oder Prozesse über die Verwendung von Blockdiagrammen, Ablaufdiagrammen und/oder Beispielen dargelegt. Insoweit solche Blockdiagramme, Ablaufdiagramme und/oder Beispiele eine oder mehrere Funktionen und/oder Operationen enthalten, wird es von Fachleuten auf dem Gebiet verstanden werden, dass jede Funktion und/oder Operation innerhalb von solchen Blockdiagrammen, Ablaufdiagrammen oder Beispielen individuell und/oder kollektiv durch einen weiten Bereich von Hardware, Software, Firmware oder virtuell irgendeiner Kombination davon implementiert sein kann. Bei einer Ausführungsform können mehrere Teilbereiche des hierin beschriebenen Gegenstands über anwendungsspezifische integrierte Schaltungen (ASICs), feldprogrammierbare Gate-Arrays (FPGAs), digitale Signalprozessoren (DSPs), andere integrierte Formate oder als ein Web-Dienst implementiert sein. Jedoch werden Fachleute auf dem Gebiet erkennen, dass einige Aspekte der hierin offenbarten Ausführungsformen, insgesamt oder teilweise, auf äquivalente Weise in integrierten Schaltungen implementiert sein können, als ein oder mehrere Computerprogramme, die auf einem oder mehreren Computern laufen, als ein oder mehrere Programme, die auf einem oder mehreren Prozessoren laufen, als Firmware oder als virtuell irgendeine Kombination davon, und dass ein Entwickeln der Schaltung und/oder ein Schreiben des Codes für die Software und/oder Firmware angesichts dieser Offenbarung gut innerhalb der Erfahrung eines Fachmanns auf dem Gebiet sein würde. Zusätzlich werden Fachleute auf dem Gebiet erkennen, dass die Mechanismen des hierin beschriebenen Gegenstands dazu fähig sind, als ein Programmprodukt in einer Vielfalt von Formen verteilt bzw. vertrieben zu werden, und dass eine illustrative Ausführungsform des hierin beschriebenen Gegenstands ungeachtet des bestimmten Typs eines ein nichtflüchtiges Signal tragenden Mediums Anwendung findet, das dazu verwendet wird, die Verteilung bzw. den Vertrieb tatsächlich auszuführen. Beispiele eines ein nichtflüchtiges Signal tragenden Mediums enthalten, sind aber nicht darauf beschränkt, das Folgende: ein Medium vom Aufzeichnungstyp, wie beispielsweise eine Diskette, ein Festplattenlaufwerk, eine Kompaktdiskette (CD), eine digitale Videodiskette (DVD), ein digitales Band, einen Computerspeicher, etc.; und ein Medium vom Übertragungstyp, wie beispielsweise ein digitales und/oder ein analoges Kommunikationsmedium (z.B. ein Glasfaserkabel, ein Wellenleiter, eine verdrahtete Kommunikationsverbindung, eine drahtlose Kommunikationsverbindung, etc.).
  • In Bezug auf die Verwendung von im Wesentlichen irgendwelchen Plural- und/oder Singular-Ausdrücken hierin können Fachleute auf dem Gebiet aus dem Plural zum Singular und/oder aus dem Singular zum Plural übersetzen, wie es für den Zusammenhang und/oder eine Anwendung geeignet ist. Die verschiedenen Singular/Plural-Permutationen bzw. -Umsetzungen können hierin der Klarheit halber ausdrücklich dargelegt sein.
  • Somit sind bestimmte Ausführungsformen des Gegenstands beschrieben worden. Andere Ausführungsformen sind innerhalb des Schutzumfangs der folgenden Ansprüche. In einigen Fällen können die in den Ansprüchen wiedergegebenen Aktionen in einer anderen Reihenfolge durchgeführt werden und noch erwünschte Ergebnisse erreichen. Zusätzlich erfordern die in den beigefügten Figuren gezeigten Prozesse nicht notwendigerweise die gezeigte bestimmte Reihenfolge oder sequentielle Reihenfolge, um erwünschte Ergebnisse zu erreichen. Bei bestimmten Implementierungen können Multitasking und Parallelverarbeitung vorteilhaft sein.

Claims (18)

  1. Computerimplementiertes Verfahren zum Finden von Kandidaten von qualifizierten Namen für wenigstens einen einfachen Namen in einer Quellcode-Datei, wobei das Verfahren umfasst: Empfangen einer Quellcode-Datei mit wenigstens einem einfachen Namen, für welchen ein entsprechender qualifizierter Name erforderlich ist; Parsen der Quellcode-Datei, um die einfachen Namen in der Datei und die qualifizierten Namen in der Datei zu bestimmen; für den wenigstens einen einfachen Namen, für welchen ein entsprechender qualifizierter Name erforderlich ist, Durchsuchen eines Quellcode-Graphen, um Kandidaten für potentielle qualifizierte Namen zu finden, die dem wenigstens einen einfachen Namen entsprechen; und auf einen Empfang einer Liste von Kandidaten für potentielle qualifizierte Namen aus dem Quellcode-Graphen hin, Ausgeben der Liste.
  2. Computerimplementiertes Verfahren nach Anspruch 1, das weiterhin umfasst: Bestimmen von Erstellungsabhängigkeiten und Erstellungszielen für spezifische qualifizierte Namen, wenn einmal ein qualifizierter Name ausgewählt ist.
  3. Computerimplementiertes Verfahren nach Anspruch 1 oder 2, das weiterhin umfasst: Filtern oder Anreichern der Liste mit zusätzlicher Information vor einem Ausgeben der Liste.
  4. Computerimplementiertes Verfahren nach Anspruch 3, wobei ein Filtern oder Anreichern der Liste enthält: Filtern der Liste basierend auf einer Anzahl von Malen, für welche ein qualifizierter Name eines bestimmten Typs durch andere Quellcode-Dateien verwendet worden ist, vor einem Ausgeben der Liste.
  5. Computerimplementiertes Verfahren nach Anspruch 3 oder 4, wobei ein Filtern oder Anreichern der Liste enthält: Bilden einer Rangfolge der Liste basierend auf der Häufigkeit, mit welcher ein bestimmter qualifizierter Name in anderen Teilen eines Quellcode-Depots verwendet worden ist.
  6. Computerimplementiertes Verfahren nach einem der Ansprüche 3 bis 5, wobei ein Filtern oder Anreichern der Liste enthält: Bestimmen, ob ein Paket von qualifizierten Namen aus der Quellcode-Datei sichtbar ist, in welcher auf einen einfachen Namen, der potentiell dem qualifizierten Namen entspricht, aktuell Bezug genommen wird; und in Reaktion auf ein Bestimmen, dass das Paket von qualifizierten Namen aus der Quellcode-Datei sichtbar ist, Liefern des Namens des Pakets von qualifizierten Namen als einen Kandidaten für potentielle qualifizierte Namen.
  7. Computerimplementiertes Verfahren nach einem der Ansprüche 3 bis 6, wobei ein Filtern oder Anreichern der Liste enthält: Bestimmen des Ausmaßes an Komplikation, das ein Paket von qualifizierten Namen zum Erstellungsprozess hinzufügen kann, einschließlich der Erhöhung bezüglich Zeit oder Ressourcen, um die Quellcode-Datei zu erstellen; und in Reaktion auf ein Bestimmen, dass das Ausmaß an Komplikation, das ein Paket von qualifizierten Namen zum Erstellungsprozess hinzufügt, ein erträgliches Ausmaß ist, Hinzufügen des Namens eines Pakets für qualifizierte Namen zur Liste von Kandidaten für potentielle qualifizierte Namen.
  8. Computerimplementiertes Verfahren nach einem der vorangehenden Ansprüche, das weiterhin umfasst: automatisches Auswählen des qualifizierten Namens ohne Anwenderinteraktion, wenn die Liste nur einen potentiellen qualifizierten Namen enthält.
  9. Computerimplementiertes Verfahren nach einem der Ansprüche 1 bis 7, das weiterhin umfasst: Bereitstellen einer Schnittstelle, um eine Auswahl eines qualifizierten Namens aus der Liste von Kandidaten für potentielle qualifizierte Namen zu empfangen.
  10. System zum Finden von Kandidaten von qualifizierten Namen für wenigstens einen einfachen Namen in einer Quellcode-Datei, wobei das System umfasst: eine oder mehrere Verarbeitungsvorrichtungen und eine oder mehrere Speichervorrichtungen, die Anweisungen speichern, die dann, wenn sie durch die eine oder die mehreren Verarbeitungsvorrichtungen ausgeführt werden, veranlassen, dass die eine oder die mehreren Verarbeitungsvorrichtungen: eine Quellcode-Datei mit wenigstens einem einfachen Namen empfängt oder empfangen, für welchen ein entsprechender qualifizierter Name erforderlich ist; die Quellcode-Datei parst oder parsen, um die einfachen Namen in der Datei und qualifizierte Namen in der Datei zu bestimmen; für den wenigstens einen einfachen Namen, für welchen ein entsprechender qualifizierter Name erforderlich ist, einen Quellcode-Graphen durchsucht oder durchsuchen, um potentielle qualifizierte Namen zu finden, die dem wenigstens einen einfachen Namen entsprechen; und auf einen Empfang einer Liste von Kandidaten für potentielle qualifizierte Namen aus dem Quellcode-Graphen hin, die Liste ausgibt oder ausgeben.
  11. System nach Anspruch 10, wobei die Anweisungen weiterhin veranlassen, das die eine oder die mehreren Verarbeitungsvorrichtungen: Erstellungsabhängigkeiten und Erstellungsziele für spezifische qualifizierte Namen bestimmt oder bestimmen, wenn einmal ein qualifizierter Name ausgewählt ist.
  12. System nach Anspruch 10 oder 11, wobei die Anweisungen weiterhin veranlassen, dass die eine oder die mehreren Verarbeitungsvorrichtungen: die Liste vor einem Ausgeben der Liste mit zusätzlicher Information filtert oder filtern oder anreichert oder anreichern.
  13. System nach Anspruch 12, wobei ein Filtern oder Anreichern der Liste enthält: Filtern der Liste basierend auf einer Anzahl von Malen, für welche ein qualifizierter Name eines bestimmten Typs durch andere Quellcode-Dateien verwendet worden ist, vor einem Ausgeben der Liste.
  14. System nach Anspruch 12 oder 13, wobei ein Filtern oder Anreichern der Liste enthält: Bilden einer Rangfolge der Liste basierend auf der Häufigkeit, mit welcher ein bestimmter qualifizierter Name in anderen Teilen eines Quellcode-Depots verwendet worden ist.
  15. System nach einem der Ansprüche 12 bis 14, wobei ein Filtern oder Anreichern der Liste enthält: Bestimmen, ob ein Paket für qualifizierte Namen aus der Quellcode-Datei sichtbar ist, in welcher auf einen einfachen Namen, der potentiell dem qualifizierten Namen entspricht, aktuell Bezug genommen wird; und in Reaktion auf ein Bestimmen, dass das Paket für qualifizierte Namen aus der Quellcode-Datei sichtbar ist, Bereitstellen des Namens eines Pakets für qualifizierte Namen als einen Kandidaten für potentielle qualifizierte Namen.
  16. System nach einem der Ansprüche 12 bis 15, wobei ein Filtern oder Anreichern der Liste enthält: Bestimmen des Ausmaßes an Komplikation, das ein Paket für qualifizierte Namen zum Erstellungsprozess hinzufügen kann, einschließlich der Erhöhung bezüglich Zeit oder Ressourcen, um die Quellcode-Datei zu erstellen; und in Reaktion auf ein Bestimmen, dass das Ausmaß an Komplikation, das ein Paket für qualifizierte Namen zum Erstellungsprozess hinzufügt, ein erträgliches Ausmaß ist, Hinzufügen des Namens eines Pakets für qualifizierte Namen zur Liste von Kandidaten für potentielle qualifizierte Namen.
  17. System nach einem der Ansprüche 10 bis 16, wobei die Anweisungen weiterhin veranlassen, dass die eine oder die mehreren Verarbeitungsvorrichtungen: den qualifizierten Namen ohne Anwenderinteraktion automatisch auswählen, wenn die Liste nur einen potentiellen qualifizierten Namen enthält.
  18. System nach einem der Ansprüche 10 bis 17, wobei die Anweisungen weiterhin veranlassen, dass die eine oder die mehreren Verarbeitungsvorrichtungen: eine Schnittstelle zur Verfügung stellt oder stellen, um eine Auswahl eines qualifizierten Namens aus der Liste von Kandidaten für potentielle qualifizierte Namen zu empfangen.
DE112016003130.0T 2015-07-10 2016-06-27 Automatische Importe und Abhängigkeiten in großräumigen Quellcode-Depots Pending DE112016003130T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/796,695 US10120679B2 (en) 2015-07-10 2015-07-10 Automatic imports and dependencies in large-scale source code repositories
US14/796,695 2015-07-10
PCT/US2016/039561 WO2017011176A1 (en) 2015-07-10 2016-06-27 Automatic imports and dependencies in large-scale source code repositories

Publications (1)

Publication Number Publication Date
DE112016003130T5 true DE112016003130T5 (de) 2018-03-22

Family

ID=56360528

Family Applications (2)

Application Number Title Priority Date Filing Date
DE112016003130.0T Pending DE112016003130T5 (de) 2015-07-10 2016-06-27 Automatische Importe und Abhängigkeiten in großräumigen Quellcode-Depots
DE202016008044.0U Active DE202016008044U1 (de) 2015-07-10 2016-06-27 Automatische Importe und Abhängigkeiten in gross angelegten Quellcode-Repositorien

Family Applications After (1)

Application Number Title Priority Date Filing Date
DE202016008044.0U Active DE202016008044U1 (de) 2015-07-10 2016-06-27 Automatische Importe und Abhängigkeiten in gross angelegten Quellcode-Repositorien

Country Status (8)

Country Link
US (1) US10120679B2 (de)
EP (1) EP3320430B1 (de)
JP (1) JP6568605B2 (de)
KR (1) KR101990603B1 (de)
CN (1) CN107810474B (de)
DE (2) DE112016003130T5 (de)
GB (1) GB2556481A (de)
WO (1) WO2017011176A1 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10437568B1 (en) * 2017-05-18 2019-10-08 Palantir Technologies Inc. Real-time rendering based on efficient device and server processing of content updates
US10671383B2 (en) * 2017-12-04 2020-06-02 Oracle International Corporation Inferring code deprecation from module deprecation
US11062385B2 (en) * 2018-08-21 2021-07-13 International Business Machines Corporation Providing code offerings inside code

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8365153B2 (en) * 2007-10-26 2013-01-29 Qualcomm Incorporated Server-based code compilation
US9424339B2 (en) * 2008-08-15 2016-08-23 Athena A. Smyros Systems and methods utilizing a search engine
US20100146481A1 (en) * 2008-12-09 2010-06-10 Microsoft Corporation Developing applications at runtime
US8364696B2 (en) * 2009-01-09 2013-01-29 Microsoft Corporation Efficient incremental parsing of context sensitive programming languages
US10175848B2 (en) * 2009-02-09 2019-01-08 Nokia Technologies Oy Displaying a display portion including an icon enabling an item to be added to a list
US8352913B2 (en) 2009-08-07 2013-01-08 Adobe Systems Incorporated Generating and resolving component names in an integrated development environment
DE102009059939A1 (de) * 2009-12-22 2011-06-30 Giesecke & Devrient GmbH, 81677 Verfahren zum Komprimieren von Bezeichnern
US9298427B2 (en) * 2010-01-06 2016-03-29 Microsoft Technology Licensing, Llc. Creating inferred symbols from code usage
US20110296386A1 (en) * 2010-05-28 2011-12-01 Salesforce.Com, Inc. Methods and Systems for Validating Changes Submitted to a Source Control System
US20110302565A1 (en) * 2010-06-07 2011-12-08 Ferris Michael S Implicit workspace dependencies
US8635204B1 (en) * 2010-07-30 2014-01-21 Accenture Global Services Limited Mining application repositories
CN101968736A (zh) * 2010-09-13 2011-02-09 杭州元睿信息技术有限公司 一种应用于Java到C++语言程序翻译中外部引用的翻译方法
US8584079B2 (en) * 2010-12-16 2013-11-12 Sap Portals Israel Ltd Quality on submit process
US20130326479A1 (en) * 2012-06-01 2013-12-05 Qnx Software Systems Limited System and method for tracking compliance information for a build-system product
WO2014041561A2 (en) * 2012-08-31 2014-03-20 Iappsecure Solutions Pvt. Ltd. A system for analyzing applications accurately for finding security and quality issues
US20140201709A1 (en) * 2013-01-15 2014-07-17 Martin Carl Euerle JavaScript™ Deployment Build Tool for software code that uses an object literal to define meta data and system code.
US8972975B1 (en) * 2013-04-01 2015-03-03 Google Inc. Bounded installation time optimization of applications
US9244658B2 (en) * 2013-06-04 2016-01-26 Microsoft Technology Licensing, Llc Multi-step auto-completion model for software development environments
US9244679B1 (en) * 2013-09-12 2016-01-26 Symantec Corporation Systems and methods for automatically identifying changes in deliverable files
CN105335137B (zh) * 2014-07-23 2019-01-18 国际商业机器公司 用于处理源文件的方法和装置
US10210211B2 (en) * 2014-08-26 2019-02-19 Codota Dot Com Ltd. Code searching and ranking
US20160117154A1 (en) * 2014-10-23 2016-04-28 Telefonaktiebolaget L M Ericsson (Publ) Automated software include graph and build environment analysis and optimization in compiled language
US20160196204A1 (en) * 2015-01-04 2016-07-07 International Business Machines Corporation Smart Validated Code Searching System
US9612821B2 (en) * 2015-07-02 2017-04-04 International Business Machines Corporation Predicting the success of a continuous software deployment pipeline

Also Published As

Publication number Publication date
EP3320430B1 (de) 2022-05-11
WO2017011176A1 (en) 2017-01-19
US20170010888A1 (en) 2017-01-12
CN107810474A (zh) 2018-03-16
KR20180008709A (ko) 2018-01-24
GB201720895D0 (en) 2018-01-31
US10120679B2 (en) 2018-11-06
KR101990603B1 (ko) 2019-06-18
EP3320430A1 (de) 2018-05-16
CN107810474B (zh) 2020-12-29
DE202016008044U1 (de) 2017-01-27
JP6568605B2 (ja) 2019-08-28
GB2556481A (en) 2018-05-30
JP2018519592A (ja) 2018-07-19

Similar Documents

Publication Publication Date Title
Angles et al. The LDBC social network benchmark
DE202014010938U1 (de) Omega-Namen: Namenserzeugung und -ableitung
DE202011110863U1 (de) Spaltenspeicher Darstellungen von Datensätzen
DE102014103279A1 (de) Pivot-Facets für Text-Mining und Suche
DE112011101391T5 (de) GPU-fähige Datenbanksysteme
DE112012000280T5 (de) Organisation von Tabellen mit reduzierten Indizes
DE202015009258U1 (de) Effizientes Anmerkungssystem für verteilte Versionsverwaltungssysteme
DE112016003130T5 (de) Automatische Importe und Abhängigkeiten in großräumigen Quellcode-Depots
Trummer Codexdb: Generating code for processing sql queries using gpt-3 codex
Adams et al. Oc π: object-centric process insights
El-Roby et al. Sapphire: Querying RDF data made simple
DE112013002953T5 (de) Instanziieren eines Codier-Wettbewerbs zum Entwickeln eines Programmmoduls in einer vernetztenDatenverarbeitungsumgebung
DE112016004967T5 (de) Automatisiertes Auffinden von Informationen
North et al. Understanding git history: A multi-sense view
Miller A software tools sampler
Hättasch et al. Netted?! How to Improve the Usefulness of Spider & Co.
DE202018006901U1 (de) Techniken zur dynamischen Definition eines Datensatzformats
Pei et al. Towards data mining benchmarking: a test bed for performance study of frequent pattern mining
Reed Pushing daisy
Kharboutli NoSQL Database Selection Focused on Performance Criteria for Web-driven Applications
Oreški Acquiring of Digital Competence in the Field of Database Management using Raspberry Pi Computers and Free and Open-Source Software
Bretterbauer Comparison of RDF Triplestores in a Kubernetes Environment
Lindstaedt Modeling Activation Processes in Human Memory to Improve Tag Recommendations
Ward et al. Intelligent Performance
Privat et al. Pro IOS Persistence: Using Core Data

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: BETTEN & RESCH PATENT- UND RECHTSANWAELTE PART, DE