DE202016008044U1 - Automatische Importe und Abhängigkeiten in gross angelegten Quellcode-Repositorien - Google Patents
Automatische Importe und Abhängigkeiten in gross angelegten Quellcode-Repositorien Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/164—File meta data generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction 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/0482—Interaction with lists of selectable items, e.g. menus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/33—Intelligent editors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/74—Reverse 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.
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 von1 , 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 in2 , 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ät400 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)
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
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)
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)
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 |
-
2015
- 2015-07-10 US US14/796,695 patent/US10120679B2/en active Active
-
2016
- 2016-06-27 DE DE112016003130.0T patent/DE112016003130T5/de active Pending
- 2016-06-27 EP EP16735808.4A patent/EP3320430B1/de active Active
- 2016-06-27 CN CN201680037594.0A patent/CN107810474B/zh active Active
- 2016-06-27 GB GB1720895.0A patent/GB2556481A/en not_active Withdrawn
- 2016-06-27 WO PCT/US2016/039561 patent/WO2017011176A1/en active Application Filing
- 2016-06-27 KR KR1020177036265A patent/KR101990603B1/ko active IP Right Grant
- 2016-06-27 DE DE202016008044.0U patent/DE202016008044U1/de active Active
- 2016-06-27 JP JP2017564873A patent/JP6568605B2/ja active Active
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 |