DE202016008044U1 - Automatische Importe und Abhängigkeiten in gross angelegten Quellcode-Repositorien - Google Patents

Automatische Importe und Abhängigkeiten in gross angelegten Quellcode-Repositorien Download PDF

Info

Publication number
DE202016008044U1
DE202016008044U1 DE202016008044.0U DE202016008044U DE202016008044U1 DE 202016008044 U1 DE202016008044 U1 DE 202016008044U1 DE 202016008044 U DE202016008044 U DE 202016008044U DE 202016008044 U1 DE202016008044 U1 DE 202016008044U1
Authority
DE
Germany
Prior art keywords
qualified
name
source code
list
names
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.)
Active
Application number
DE202016008044.0U
Other languages
English (en)
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 DE202016008044U1 publication Critical patent/DE202016008044U1/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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

System zum Suchen von Kandidaten qualifizierter Namen für mindestens einen einfachen Namen in einer Quellcodedatei, wobei das Verfahren Folgendes umfasst:
ein oder mehrere Verarbeitungsvorrichtungen und
ein oder mehrere Speichervorrichtungen, die Anweisungen speichern, die bei Ausführung durch ein oder mehrere Verarbeitungsvorrichtungen, die eine oder mehreren Verarbeitungsgeräte zu Folgendem veranlassen:
empfangen einer Quellcodedatei mit mindestens einem einfachen Namen für den ein entsprechender qualifizierter Name erforderlich ist;
analysieren der Quellcodedatei, um die einfachen Namen in der Datei und die qualifizierten Namen in der Datei zu ermitteln;
für den mindestens einen einfachen Namen, für den ein entsprechender qualifizierter Name erforderlich ist, Durchsuchen einer Quellcodegrafik, um potenzielle qualifizierte Namen für den mindestens einfachen Namen zu finden; und
nach Empfang einer Liste potenzieller Kandidaten qualifizierter Namen aus der Quellcodegrafik, Ausgeben der Liste.

Description

  • HINTERGRUND
  • Entwickler bauen häufig komplexe Softwareanwendungen auf, die externe Codes oder Programmbibliotheken miteinbeziehen. So kann ein Entwickler beispielsweise eine Liste von Menschen in seine Anwendung einbauen wollen. Anstatt sein eigenes Listenobjekt zu definieren, kann der Entwickler eine Listenklasse aus einem externen Paket einfügen. In diesem Beispiel, wie in 1 dargestellt, kann der Entwickler eine Liste aus einer Standardbibliothek in seinen Code einfügen, wie „java.util.List.” Die „java.util.List” ist eine Klasse strukturierter Sammlungen, die öffentlich über das java.util-Paket verfügbar ist. Sobald die Liste in eine Quellcodedatei eines Entwicklers importiert wurde, kann der Entwickler sich mit dem einfachen Namen „Liste” auf diese Liste beziehen, ohne dass er den vollständigen Namen „java.util.List” überall dort, wie eine Instanz der Liste erstellt oder diese eingesetzt wird, verwenden zu müssen. Ein Beispiel findet sich in Zeile 3 von 1, wo der Code sich einfach auf den einfachen Namen „List”, und nicht auf den vollständigen Namen „java.util.List” bezieht. Unter Schutz gestellt werden und Gegenstand des Gebrauchsmusters sind, entsprechend den Vorschriften des Gebrauchsmustergesetzes, lediglich Vorrichtungen wie in den beigefügten Schutzansprüchen definiert, jedoch keine Verfahren. Soweit nachfolgend in der Beschreibung gegebenenfalls auf Verfahren Bezug genommen wird, dienen diese Bezugnahmen lediglich der beispielhaften Erläuterung der in den beigefügten Schutzansprüchen unter Schutz gestellten Vorrichtung oder Vorrichtungen.
  • Zwar kann der Prozess des Importierens von Paketen, Bibliotheken oder eines externen Codes, der die vollständigen Namen in einen Quellcode festlegt, bei kleinen Codebasen, die standardmäßige integrierte Entwicklungsumgebungen (IDEs, integrated development environments) verwenden, recht unkompliziert sein, groß angelegte Codebasen haben jedoch zu viele externe Abhängigkeiten, sodass IDEs die entsprechenden vollständigen Namen, bezeichnet als qualifizierte Namen, oder die angemessenen Build-Systemkonstrukte für die Abhängigkeiten nicht wirksam finden können.
  • Konventionelle Systeme versuchen, qualifizierte Namen in Echtzeit zu finden, indem sie die gesamte Codebasis durchsuchen und versuchen, das entsprechende Paket, die Bibliothek oder einen anderen externen Code zu ermitteln. Dieser Prozess ist sehr zeitaufwändig. Mit diesem Ansatz ist es nicht möglich, große Mengen an Quellcode innerhalb eines angemessenen Zeitraums zu verarbeiten.
  • Wie der Erfinder erkannt hat, ist es wünschenswert, schnell Kandidaten qualifizierter Namen zu finden, um das entsprechende Paket, die Bibliothek oder einen externen Code für einfache Namensreferenzen, die im Quellcode vorhanden sind, und die Build-Systemabhängigkeiten, welche die qualifizierten Namen liefern, zu importieren.
  • KURZDARSTELLUNG
  • Diese Spezifikation beschreibt Technologien, die sich auf die Suche nach Kandidaten qualifizierter Namen für mindestens einen einfachen Namen in eine Quellcodedatei beziehen, z. B. in einer Quellcodedatei in der Java-Sprache.
  • Im Allgemeinen kann ein Aspekt des in dieser Spezifikation beschriebenen Gegenstands in einem System zum Suchen von Kandidaten qualifizierter Namen für mindestens einen einfachen Namen in einer Quellcodedatei enthalten sein. Ein Beispielsystem könnte eines oder mehrere Verarbeitungsgeräte beinhalten, sowie eines oder mehrere Speichergeräte, die Anweisungen speichern, die ein Beispielverfahren umsetzen. Ein Beispielverfahren kann beinhalten: Empfangen einer Quellcodedatei mit mindestens einem einfachen Namen, für den ein zugeordneter qualifizierter Name erforderlich ist; Parsen der Quellcodedatei, um die einfachen Namen in der Datei und der qualifizierten Namen in der Datei zu ermitteln; für mindestens einen einfachen Namen, für den ein zugehöriger qualifizierter Name erforderlich ist, Suchen einer Quellcodegrafik, um potenzielle qualifizierte Namen zu finden, die mit dem mindestens einen einfachen Namen zugeordnet sind; und, nach Empfang einer Liste potenzieller Kandidaten für qualifizierte Namen aus der Quellcodegrafik, Ausgeben der Liste.
  • Diese und andere Ausführungsformen können wahlweise eine oder mehrere der folgenden Eigenschaften beinhalten: die Liste potenzieller Kandidaten qualifizierter Namen kann vor Ausgeben der Liste mit zusätzlichen Informationen gefiltert oder angereichert werden; Build-Abhängigkeiten und Build-Ziele für spezifische qualifizierte Namen können ermittelt werden, nachdem ein qualifizierter Name ausgewählt wurde; die Liste potenzieller Kandidaten von qualifizierten Namen kann vor Ausgeben der Liste basierend auf der Anzahl der Male, die ein qualifizierter Name eines bestimmten Typs von anderen Quellcodedateien benutzt wurde, gefiltert werden; die Liste kann eine Rangfolge haben, die auf der Häufigkeit basiert, mit der ein bestimmter qualifizierter Name in anderen Teilen eines Quellcode-Repositoriums verwendet wurde; falls die Liste nur einen potenziellen qualifizierten Namen enthält, kann der Name ohne Interaktion mit dem Nutzer automatisch als der qualifizierte Name gewählt werden; eine Oberfläche kann bereitgestellt werden, damit der Nutzer eine Auswahl qualifizierter Namen aus der Liste mit potenziellen Kandidaten von qualifizierten Namen empfangen kann; das Filtern kann das Ermitteln beinhalten, ob ein qualifiziertes Namenspaket von der Quellcodedatei sichtbar ist, in der auf einen einfachen, möglicherweise mit dem qualifizierten Namen übereinstimmenden, Namen aktuell Bezug genommen wird und als Reaktion auf die Ermittlung, dass der qualifizierte Name von der Quellcodedatei sichtbar ist, die Bereitstellung des Namens des qualifizierten Namenspakets als potenzieller Kandidat für den qualifizierten Namen erfolgt; und das Filtern kann das Ermitteln des Ausmaßes an Komplikationen beinhalten, die ein qualifiziertes Namenspaket zum Build-Prozess hinzufügen kann, einschließlich des Anstiegs von Zeitaufwand oder Ressourcen, um die Quellcodedatei aufzubauen und als Reaktion auf die Ermittlung, dass das Ausmaß der Komplikation, die ein qualifiziertes Namenspaket dem Build-Prozess hinzufügt, ein nachhaltiges Ausmaß ist, das Hinzufügen des qualifizierten Namenspakets zur Liste der potenziellen Kandidaten qualifizierter Namen erfolgt.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • 1 zeigt ein Beispiel eines Quellcodes, der einen qualifizierten Namen und einen einfachen Namen enthält.
  • 2 ist ein Blockdiagramm, das ein Beispielsystem zur Ermittlung qualifizierter Namen für einfache Namen in einer Quellcodedatei darstellt.
  • 3 ist ein Blockdiagramm zur Veranschaulichung eines Beispiel-Computergeräts.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Gemäß einer beispielhaften Ausführungsform, kann es eine großformatige Grafik in einem verteilten System vorhanden sein, die alle Quellcodes für ein bestimmtes Quellcode-Repositorium oder -Repositorien repräsentiert. Der Quellcode kann indiziert sein, um die Grafik zu erstellen. In einigen Ausführungsformen kann diese Grafik auf einem Rechner oder mehreren Rechnern vorhanden sein, auf die Entwickler fernzugreifen können, sodass die Grafik nicht auf dem Rechner eines einzelnen Entwicklers ausgeführt wird und mehrere Entwicklern gleichzeitig darauf zugreifen können. In ihrer einfachsten Form kann die Grafik aus zwei Tabellen bestehen, wobei die eine einfache Namen qualifizierten Namen zuweist (mappt) und eine zweite Tabelle, die qualifizierte Namen zu Build-Systemabhängigkeiten mappt. Durch Erstellen und Zugriff auf die Grafik in einem verteilten System oder einer Cloudumgebung, können Berechnungen unter Entwicklern zwischengespeichert und erneut benutzt werden. In anderen Ausführungsformen kann die Grafik auf dem eigenen Rechner des Entwicklers vorhanden sein.
  • Wie in 2 dargestellt, gibt es in einer exemplarischen Quellcodedatei zwei einfache Namen (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 bereitgestellt. Der qualifizierte Name für „Foo” wird jedoch nicht bereitgestellt.
  • In einem Beispielsystem kann eine auf dem Rechner eines Entwicklers ausgeführte integrierte Entwicklungsumgebung (IDE, an integrated development environment) einen Parser (203) haben, der möglicherweise eine Liste einfacher Namen bereitstellt, die in einer bestimmten Quellcodedatei verwendet werden. Der Parser (203) kann außerdem eine Liste qualifizierter Namen in der Quellcodedatei bereitstellen. Bei der Quellcodedatei, dargestellt in 2, kann die Liste einfacher Namen wie folgt sein: [Foo, Bar]. Die Liste qualifizierter Namen kann wie folgt sein: [com.sourcecode.Bar]. Wie dargestellt, wird ein dem einfachen Namen zugeordneter qualifizierter Name möglicherweise nicht bereitgestellt. Um den qualifizierten Namen zu finden und das Build-Systemkonstrukt, das den qualifizierten Namen für einfache Namen in dem Quellcode angibt, für den der zugeordnete qualifizierte Name nicht bereitgestellt wurde, kann die Quellcodegrafik (205) nach möglichen Erweiterungen der einfachen Namen zu qualifizierten Namen abgefragt werden. In dem dargestellten Beispiel, kann die Quellcodegrafik (205) nach dem qualifizierten Namen für „Foo” abgefragt werden und „Foo” zugehörigen Abhängigkeiten aufbauen. Falls der qualifizierte Namen als ein Import bereitgestellt wird, wie „Bar” in diesem Beispiel, kann die Build-Systemabhängigkeit vorhanden sein oder nicht vorhanden sein. Aus diesem Grund kann die Quellcodegrafik (205) auch nach Build-Systemabhängigkeiten abgefragt werden, selbst wenn der vollständig qualifizierte Namen im Quellcode bereitgestellt wird.
  • Bei der Suche nach „Foo” kann z. B. beim Durchsuchen der Quellcodegrafik (205) nach passenden Klassen und Build-Systemen gesucht werden, die den Namen „Foo” enthalten. In einigen Ausführungsformen können die Ergebnisse danach gefiltert werden, wie ein einfacher Name im Code verwendet wird. Sollte beispielsweise ein bestimmtes Verfahren von „Foo” gerufen werden, können vollqualifizierte potenzielle Kandidaten für die Fertigstellung, die das Verfahren nicht enthalten, aus der Liste der potenziellen Kandidaten herausgefiltert werden. Die Abfrage kann anschließend eine Liste mit Importen und Build-Systemabhängigkeiten zurückgeben. Wie jeder mit normalen Fähigkeiten in diesem Bereich ersehen kann, gibt es mehrere Möglichkeiten, diese Liste zu ordnen und zu filtern.
  • Die Quellcodegrafik (205) kann durchlaufen werden, um Informationen wie Build-Systemabhängigkeiten für einfache, in den Dateien gefundene, Namen zu erhalten. So kann beispielsweise die Quellcodegrafik in der Lage sein, die Ziele für die Abhängigkeiten auf den qualifizierten Namen für den einfachen Namen „Foo” bereitzustellen, sodass der Quellcode in Objektdateien zusammengestellt werden kann.
  • Die Liste potenzieller qualifizierter Namen für einen vorgegebenen einfachen Namen, die durch das Durchlaufen der Quellcodegrafik (205) erhalten wurde, kann mit anderen Daten angereichert und weiter gefiltert werden (213). Anreicherungsdaten können beinhalten: wie oft der qualifizierte Name im Repositorium verwendet wurde (um eine Rangordnung zu ermöglichen); ob der qualifizierte Name als abgelehnt gekennzeichnet wurde, und falls dies der Fall ist, ob das qualifizierte Namenpaket vom Quellcode sichtbar ist, in dem aktuell darauf Bezug genommen wird (einige Klassen können vorsätzlich für bestimmte Softwarepakete gesperrt sein); und das Maß an Komplikationen, die dieser Name zum Build-Prozess beiträgt, einschließlich eines Anstiegs von Zeitaufwand und/oder der Ressourcen, die zum Aufbau des Quellcodes benötigt werden. Die Liste kann z. B. auf Grundlage der Häufigkeit der Verwendung eines qualifizierten Namens von einem bestimmten Typ von anderen Quellcodedateien gefiltert werden. Das Filtern kann auch das Entfernen aller nicht-sichtbaren Klassen oder das Entfernen aller Klassen, die nicht in den spezifischen Kontext im Code passen, beinhalten. So kann beispielsweise „Foo” ein spezifisches Verfahren in einer Quellcodedatei verlangen, sodass alle passenden „Foo”-Bibliotheken, die dieses Verfahren nicht haben, aus der Liste potenzieller Kandidaten herausgefiltert werden. Bei der Rückgabe einer Liste potenzieller Kandidaten für die Fertigstellung und Abhängigkeiten an einen Nutzer (215) zur Begutachtung, kann ein Beispielsystem die zurückgegebenen Ergebnisse auf Grundlage der Häufigkeit, mit der ein bestimmter qualifizierter Name von anderen Entwicklern in anderen Teilen des Quellcode-Repositoriums verwendet wurde, in einer Rangordnung aufstellen.
  • In einigen Ausführungsformen sind intensiv genutzte qualifizierte Namen die Namen, die am wahrscheinlichsten von Entwicklern in ihren Quellcodedateien verwendet wurden. Neben anderen Rangordnungen können Namen auch danach angeordnet werden, ob sie für die Quellcodedatei sichtbar sind, in der sie eingesetzt werden sollen. ob die Klasse, die der Name repräsentiert, ein Verfahren hat, das in der Quellcodedatei verwendet wird. und ob Klassen abgelehnt sind. Klassen, die abgelehnt wurden, können in der Namenrangfolge zurückgestuft werden. Anschließend kann einem Nutzer (215) die angereicherte, gefilterte Liste potenzieller qualifizierter Namenskandidaten für eine spezifische einfache Namensreferenz im Code angezeigt werden und der Nutzer kann das geeignetste Paket, die Bibliothek oder eine andere externe Codequelle für das einfache Namensobjekt wählen. Sobald der Nutzer (215) den korrekten qualifizierten Namen für den einfachen Namen im Quellcode aus den Kandidaten der qualifizierten Namen ausgewählt hat, können die ausgewählten qualifizierten Namen erneut an die Quellgrafik (205) gesendet werden, um Informationen über das Build-Systemabhängigkeiten zu erhalten, um Bild-Regelabhängigkeiten zu manipulieren und Ziele für die spezifischen qualifizierten Namen aufzubauen. In einigen Ausführungsformen können die Liste potenzieller Kandidaten für die Fertigstellung und Build-Systemabhängigkeiten gefiltert werden und die Abfrage kann nur den Import und Build-Systemabhängigkeiten zurückgeben, welche die wahrscheinlichsten Übereinstimmungen sind.
  • Wie in 2 dargestellt, können die qualifizierten Namen, sobald die eindeutigen qualifizierten Namen (207, 209) in der Quellcodegrafik (205) gefunden oder von der Datei selbst (203) analysiert wurden und mit den in der Quellcodedatei (201) verwendeten Namen abgeglichen wurden, in die Datei (201) importiert bzw. ihr zugefügt werden. Die Quellgrafik kann periodisch neu erstellt werden, um zu ermitteln, welche Klasse/Build-Abhängigkeiten am häufigsten verwendet werden.
  • Ein Beispielverfahren, wie in 3 dargestellt, beginnt mit dem Empfang einer Quellcodedatei mit mindestens einem einfachen Namen für den ein entsprechender qualifizierter Name gefunden werden soll (oder erforderlich ist) (301). Die Quellcodedatei kann dann analysiert werden, um eine Liste einfacher, in der Datei verwendeter Namen zu finden und eine weitere Liste aller qualifizierter Namen in der Datei (303). Für den mindestens einen einfachen Namen, für den ein entsprechender qualifizierter Name gefunden werden soll, kann die Grafik des gesamten Quellcodes durchsucht werden, um potenzielle Kandidaten qualifizierter Namen für den einfachen Namen zu finden (305). In einigen Ausführungsformen kann die Kandidatenliste der Namen mit zusätzlichen Informationen angereichert oder gefiltert werden. Die Liste kann einem Nutzer zur Verfügung gestellt werden, damit der Nutzer den angemessenen qualifizierten Namen für einen vorgegebenen einfachen Namen auswählen kann (309). In einigen Ausführungen, falls nur ein Kandidat für den qualifizierten Namen vorhanden ist, muss ein Nutzer möglicherweise den qualifizierten Namen nicht auswählen und der qualifizierte Name kann automatisch ausgewählt werden. In einigen Ausführungen, falls nur ein Kandidat für den qualifizierten Namen vorhanden ist, muss ein Nutzer möglicherweise nur bestätigen, dass der qualifizierte Name eine passende Übereinstimmung für den einfachen Namen ist. Nachdem der qualifizierte Name gewählt wurde, kann ein Beispielverfahren Build-Abhängigkeiten und Build-Ziele für spezifische qualifizierte Namen ermitteln. Die mit den einfachen Namen übereinstimmenden qualifizierten Namen in der Quellcodedatei können der Quelldatei hinzugefügt werden. Anschließend kann die Quellcodegrafik erneut erstellt werden und Informationen zur Häufigkeit der einfachen Namen/qualifizierten Namen/Build-Abhängigkeit können bei zukünftigen Analysen verwendet werden, um qualifizierte Namen und Build-Abhängigkeiten zu finden.
  • 4 ist ein hochrangiges Blockdiagramm eines Beispiel-Computers (400), der für das Hosten und Publizieren von Softwarepaketen organisiert ist. In der Basiskonfiguration (401) besitzt das Computergerät (400) normalerweise einen oder mehrere Prozessoren (410) und einen Systemspeicher (420). Ein Speicherbus (430) kann zur Kommunikation zwischen dem Prozessor (410) und dem Systemspeicher (420) verwendet werden.
  • Je nach der gewünschten Konfiguration kann es sich bei dem Prozessor (410) um einen beliebigen Typ handeln, einschließlich unter anderem um einen Mikroprozessor (μP), einen Mikrokontroller (μC), einen digitalen Signalprozessor (DSP) oder eine Kombination dieser Prozessoren. Der Prozessor (410) kann eine oder mehrere Cache-Ebenen besitzen wie einen Cache der ersten Ebene (411) und einen Cache der zweiten Ebene (412), einen Prozessorkern (413) und Register (414). Der Prozessorkern (413) kann aus einer arithmetisch-logischen Einheit (ALU), einer Gleitkommaeinheit (FPU), einem digitalen Signalprozessorkern (DSP-Kern) oder einer beliebigen Kombination dieser Komponenten bestehen. Ein Speichercontroller (416) kann zusätzlich zum Prozessor (410) vorhanden sein oder der Speichercontroller (415) kann bei manchen Implementierungen ein interner Teil des Prozessors (410) sein.
  • Je nach der gewünschten Konfiguration kann es sich bei dem Systemspeicher (420) um einen beliebigen Typ handeln, einschließlich unter anderem um einen flüchtigen Speicher (wie RAM), einen nicht-flüchtigen Speicher (wie ROM, Flashspeicher usw.) oder eine beliebige Kombination dieser Speichermöglichkeiten. Zum Systemspeicher (420) gehört normalerweise ein Betriebssystem (421), eine oder mehrere Anwendungen (422) und Programmdaten (424). Die Anwendung (422) kann ein Verfahren zum Hosten und Publizieren von Softwarepaketen beinhalten. Die Programmdaten (424) enthalten das Speichern von Anweisungen, die, wenn sie von der einen oder mehreren Verarbeitungsvorrichtungen ausgeführt werden, ein Verfahren zum Hosten und Publizieren von Softwarepaketen implementieren. (423). Bei einigen Ausführungsformen kann die Anwendung (422) so eingerichtet werden, um mit Programmdaten (424) auf einem Betriebssystem (421) zu arbeiten.
  • Das Computergerät (400) kann zusätzliche Funktionen oder Funktionalitäten haben und zusätzliche Schnittstellen, um die Kommunikation zwischen der Grundkonfiguration (401) und jeglichen erforderlichen Geräten und Schnittstellen zu ermöglichen.
  • Der Systemspeicher (420) ist ein Beispiel eines Computerspeichermediums. Zu den Computerspeichermedien zählen unter anderem RAM, ROM, EEPROM, Flashspeicher und andere Speichertechnologie, CD-ROM, Digital Versatile Disks (DVD) sowie andere optische Speicher, Magnetkassetten, Magnetband, Magnetplattenspeicher und andere Magnetspeichergeräte oder jedes sonstige Medium, das zum Speichern der gewünschten Informationen verwendet werden und auf das durch das Computergerät 400 zugegriffen werden kann. Alle Computerspeichermedien dieser Art können ein Teil des Geräts (400) sein.
  • Das Computergerät (400) kann als ein Teil einer mobilen elektronischen Gerät eines kleinen Formfaktors, wie beispielsweise eines Mobiltelefons, eines Smartphones, eines PDA (Minicomputer), eines persönlichen Media-Player, eines Tablet-Computer (Tablet), eines drahtlosen Web-Watch-Geräts, eines persönlichen Headset-Geräts, eines anwendungsspezifischen Geräts oder eines Hybrid-Geräts implementieren werden, das eine der oben genannten Funktionen umfasst. Das Computergerät (400) kann auch als Personal Computer implementiert werden mit sowohl Laptop- als auch Nicht-Laptopkonfiguration.
  • Die vorangegangene detaillierte Beschreibung legt verschiedene Ausführungsformen der Geräte und/oder Prozesse über die Nutzung von Blockdiagrammen, Flowcharts und/oder Beispiele dar. Insofern, als solche Blockdiagramme, Flussdiagramme und/oder Beispiele eine oder mehrere Funktionen und/oder Tätigkeiten enthalten, ist es für Fachleute offensichtlich, dass jede Funktion und/oder Tätigkeit innerhalb solcher Blockdiagramme, Flussdiagramme oder Beispiele implementiert werden können, einzeln und/oder zusammen, durch eine breite Palette an Hardware, Software, Firmware oder praktisch jeder möglichen Kombination davon. In einer Ausführung können verschiedene Bestandteile des hier beschriebenen Themas über anwendungsspezifische, integrierte Schaltkreise (ASICs), feldprogrammierbare Gate-Arrays (FPGAs), digitale Signalprozessoren (DSPs), sonstige integrierte Formate oder als Web-Service enthalten. Dennoch werden die Fachkundigen feststellen, dass einige Aspekte der hier dargelegten Ausführungen, teilweise oder gänzlich, ebenso in integrierten Kreisläufen implementiert werden können, als ein oder mehrere Computerprogramme, die auf einem oder mehreren Computern ausgeführt werden, als ein oder mehrere Programme, die auf einem oder mehreren Prozessoren ausgeführt werden, als Firmware oder einer beliebigen Kombination davon; und dass ein Entwurf der Kreisläufe und/oder des Schreibens des Codes für die Software und/oder Firmware unter Berücksichtigung der vorliegenden Offenbarung eine große Leistung wäre. Außerdem werden Fachleute verstehen, dass die Mechanismen dieses hier beschriebenen Gegenstands in der Lage sind, als ein Programmprodukt in einer Vielzahl von Formen verteilt zu werden, und dass eine veranschaulichende Ausführungsform des hier beschriebenen Gegenstands unabhängig von der besonderen Art des nicht-flüchtigen signalführenden Mediums gilt, das für die tatsächliche Verteilung verwendet wird. Beispiele für ein nicht-transitorisches Signal tragenden Mediums umfassen, ohne Einschränkung darauf, Folgendes: Floppy Disk, Festplattenlaufwerk, CD (Compact Disc), DVD (Digital Video Disk), digitales Band, Computerspeicher usw.; sowie ein Medium des Übertragungstyps, wie beispielsweise ein digitales und/oder analoges Kommunikationsmedium. (z. B. ein Glasfaserkabel, ein Wellenleiter, eine kabelgebundene Kommunikationsverbindung, eine kabellose Kommunikationsverbindung usw.)
  • Was die Nutzung von im Wesentlichen allen Mehrzahl- und/oder Einzahlbegriffen hierin betrifft, können die Experten je nach Eignung für den Kontext und/oder die Anwendung die Mehrzahlform zur Einzahlform und vice versa bilden. Die verschiedenen Singular-/Plural-Permutationen können hierin ausdrücklich aus Gründen der Klarheit dargelegt.
  • Folglich wurden bestimmte Ausführungsformen des Gegenstands beschrieben. Weitere Ausführungsformen gehören zum Umfang der folgenden Ansprüche. In einigen Fällen können die in den Ansprüchen beschriebenen Handlungen in einer anderen Reihenfolge ausgeführt werden und dennoch erwünschte Ergebnisse erzielen. Zusätzlich erfordern die in den beigefügten Figuren dargestellten Prozesse nicht notwendigerweise die bestimmte gezeigte Reihenfolge oder aufeinanderfolgende Reihenfolge, um erwünschte Ergebnisse zu erzielen. Bei bestimmten Implementierungen können Multitasking und eine Parallelbearbeitung vorteilhaft sein.

Claims (9)

  1. System zum Suchen von Kandidaten qualifizierter Namen für mindestens einen einfachen Namen in einer Quellcodedatei, wobei das Verfahren Folgendes umfasst: ein oder mehrere Verarbeitungsvorrichtungen und ein oder mehrere Speichervorrichtungen, die Anweisungen speichern, die bei Ausführung durch ein oder mehrere Verarbeitungsvorrichtungen, die eine oder mehreren Verarbeitungsgeräte zu Folgendem veranlassen: empfangen einer Quellcodedatei mit mindestens einem einfachen Namen für den ein entsprechender qualifizierter Name erforderlich ist; analysieren der Quellcodedatei, um die einfachen Namen in der Datei und die qualifizierten Namen in der Datei zu ermitteln; für den mindestens einen einfachen Namen, für den ein entsprechender qualifizierter Name erforderlich ist, Durchsuchen einer Quellcodegrafik, um potenzielle qualifizierte Namen für den mindestens einfachen Namen zu finden; und nach Empfang einer Liste potenzieller Kandidaten qualifizierter Namen aus der Quellcodegrafik, Ausgeben der Liste.
  2. System nach Anspruch 1, worin die Anweisungen ferner bewirken, dass der eine oder die mehreren Prozessoren: Build-Abhängigkeiten und Build-Ziele für spezifische qualifizierte Namen ermitteln, nachdem ein qualifizierter Name ausgewählt ist.
  3. System nach Anspruch 1 oder 2, worin die Anweisungen ferner bewirken, dass der eine oder die mehreren Prozessoren: vor Ausgeben der Liste die Liste mit zusätzlichen Informationen filtern oder anreichern.
  4. System nach Anspruch 3, worin Filtern oder Anreichern der Liste beinhaltet: filtern der Liste basierend darauf, wie oft ein qualifizierter Namen eines bestimmten Typs von anderen Quellcodedateien verwendet wurde vor Ausgeben der Liste.
  5. System nach Anspruch 3 oder 4, worin Filtern oder Anreichern der Liste beinhaltet: erstellen einer Rangordnung der Liste basierend auf der Häufigkeit, mit der ein bestimmter qualifizierter Name von anderen Entwicklern in anderen Teilen des Quellcode-Repositoriums verwendet wurde.
  6. System nach einem der Ansprüche 3 bis 5, worin Filtern oder Anreichern der Liste beinhaltet: ermitteln, ob ein qualifiziertes Namenspaket von der Quellcodedatei sichtbar ist, in der auf einen einfachen Namen, der potenziell dem qualifizierten Namen entspricht, aktuell Bezug genommen wird; und als Reaktion auf die Ermittlung, dass der qualifizierte Name von der Quellcodedatei sichtbar ist, die Bereitstellung des Namens des qualifizierten Namenspakets als potenzieller Kandidat für den qualifizierten Namen.
  7. System nach einem der Ansprüche 4 bis 6, worin Filtern oder Anreichern der Liste beinhaltet: ermitteln des Ausmaßes an Komplikationen, die ein qualifiziertes Namenspaket zum Build-Prozess hinzufügen kann, einschließlich des Anstiegs von Zeitaufwand oder Ressourcen, um die Quellcodedatei aufzubauen; und als Reaktion auf die Ermittlung, dass das Ausmaß der Komplikation, die ein qualifiziertes Namenspaket dem Build-Prozess hinzufügt, ein nachhaltiges Ausmaß ist, Hinzufügen des qualifizierten Namenspakets zur Liste der potenziellen Kandidaten qualifizierter Namen.
  8. System nach einem der Ansprüche 1 bis 7, worin die Anweisungen ferner bewirken, dass der eine oder die mehreren Prozessoren: den qualifizierten Namen ohne Interaktion mit dem Nutzer automatisch auswählen, falls die Liste nur einen potenziellen qualifizierten Namen enthält.
  9. System nach einem der Ansprüche 1 bis 8, worin die Anweisungen ferner bewirken, dass der eine oder die mehreren Prozessoren: eine Oberfläche für den Empfang einer Auswahl eines qualifizierten Namens aus der Liste potenzieller Kandidaten qualifizierter Namen bereitstellen.
DE202016008044.0U 2015-07-10 2016-06-27 Automatische Importe und Abhängigkeiten in gross angelegten Quellcode-Repositorien Active DE202016008044U1 (de)

Applications Claiming Priority (2)

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

Publications (1)

Publication Number Publication Date
DE202016008044U1 true DE202016008044U1 (de) 2017-01-27

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 Before (1)

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

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
DE112016003130T5 (de) 2018-03-22
JP6568605B2 (ja) 2019-08-28
GB2556481A (en) 2018-05-30
JP2018519592A (ja) 2018-07-19

Similar Documents

Publication Publication Date Title
EP0910829B1 (de) Datenbanksystem
DE202015009258U1 (de) Effizientes Anmerkungssystem für verteilte Versionsverwaltungssysteme
DE102014103279A1 (de) Pivot-Facets für Text-Mining und Suche
DE202014010938U1 (de) Omega-Namen: Namenserzeugung und -ableitung
DE112012000280T5 (de) Organisation von Tabellen mit reduzierten Indizes
DE202015009875U1 (de) Transparente Entdeckung eines semistrukturierten Datenschemas
DE102013206281A1 (de) Optimieren von zerstreuten schemalosen Daten in relationalen Speichern
DE102005051429A1 (de) Verfahren und Software zur Analyse von Forschungsveröffentlichungen
DE102013017085A1 (de) System für eine tiefe Verknüpfung und Suchmaschinenunterstützung für Webseiten, in die eine Drittanwendung und Komponenten integriert sind
DE202011110863U1 (de) Spaltenspeicher Darstellungen von Datensätzen
DE112013000987T5 (de) Erzeugen von Visualisierungen einer Anzeigegruppe von Tags, die Inhaltsinstanzen in Suchkriterien erfüllenden Objekten darstellen
EP2188742A1 (de) Erfassung von zusammenhängen zwischen informationen repräsentierenden daten
DE112015002101T5 (de) Systeme und Verfahren für einen verbesserten Datenstrukturspeicher
DE112010004246T5 (de) Verfahren und Vorrichtung zum Managen von vielfachen Dokumentversionen in einem großen Dokumentendepotspeicher
DE202016008044U1 (de) Automatische Importe und Abhängigkeiten in gross angelegten Quellcode-Repositorien
DE112020003431T5 (de) Automatisches umwandeln eines programms, das in einer prozeduralen programmiersprache geschrieben ist, in einen datenflussgraphen, sowie zugehörige systeme und verfahren
DE202014010948U1 (de) Nicht-kollaborative Filter in einem kollaborativen Dokument
DE112017001579T5 (de) Suchnavigationselement
DE112016004967T5 (de) Automatisiertes Auffinden von Informationen
DE112013002953T5 (de) Instanziieren eines Codier-Wettbewerbs zum Entwickeln eines Programmmoduls in einer vernetztenDatenverarbeitungsumgebung
DE202015009280U1 (de) Integrierte domänenspezifische Sprachen als erstklassige Codeartefakte
DE102016015536A1 (de) Organisieren von elektronisch gespeicherten Dateien unter Verwendung einer automatisch erzeugten Speicherhierarchie
DE202016007725U1 (de) Einzeltabellen-Multischema-Datenspeicher in einem Schlüsselwertspeicher
DE102014116117A1 (de) Verfahren und System zum Mining von Mustern in einem Datensatz
WO2009030248A1 (de) Erfassung von zusammenhängen zwischen informationen repräsentierenden daten

Legal Events

Date Code Title Description
R207 Utility model specification
R081 Change of applicant/patentee

Owner name: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUN, US

Free format text: FORMER OWNER: GOOGLE INC., MOUNTAIN VIEW, CALIF., US

R082 Change of representative

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

R150 Utility model maintained after payment of first maintenance fee after three years
R151 Utility model maintained after payment of second maintenance fee after six years