Broncode verkennen

Lokale informatie

KDevelop begrijpt broncode, en als consequentie daarvan is het erg goed in het geven van informatie over variabelen en functies die in uw programma beschikbaar zijn. Hier is bijvoorbeeld een schermafdruk van het bewerken van een stuk code waarbij de muis zweeft boven het symbool cell in regel 1316 (als u gewent bent om met een toetsenbord te werken, u kunt hetzelfde effect bereiken door de Alt-toets een tijdje ingedrukt te houden):

KDevelop toont aan mij een tooltip met daarin het type variabele (hier: DoFHandler<dim>active_cell_iterator), waar deze variabele is gedeclareerd (de container, omdat die hier de surrounding functie get_maximal_velocity is, daar het een lokale variabele is), wat het is (een variabele, niet een functie, klasse of namespace) en waar het is gedeclareerd (in regel 1314, een paar regels hoger in de code).

In dit voorbeeld is het symbool waarboven de muis zweeft niet gedocumenteerd. Als de muis boven het symbool get_this_mpi_process in regel 1318 had gezweefd dan was de uitkomst dit geweest:

Hier heeft KDevelop een kruisverwijzing naar een declaratie uit een compleet ander bestand (utilities.h, die zelfs uit een compleet ander project van dezelfde sessie komt) samen met de doxygen-style commentaar die hier de declaratie begeleid.

Wat deze tooltips nog meer nuttig maakt is dat ze dynamisch zijn: ik kan erop klikken zodat ik informatie krijg over de context waarin de variabele is gedeclareerd (bijv. over de namespace System, waar het is gedeclareerd, gedefinieerd, gebruikt, of over de documentatie daarvan) en ik kan op de blauwe links klikken zodat de cursor naar de locatie van de declaratie van het symbool springt (bijv. in utilities.h, regel 289) of het geeft mij een lijst van de locaties waar dit symbool is gebruikt in het huidige bestand (of in alle projecten van deze sessie. Dit laatste is vaak nuttig als u wilt bestuderen hoe, bijvoorbeeld, een bepaalde functie in een groot stuk code is gebruikt.

Opmerking

De informatie in een tooltip is veranderlijk — het is afhankelijk van of u de Alt-toets indrukt of waar u uw muis boven zweeft. Als u het op een meer permanente plaats wilt lezen, dan kunt u het subvenster Broncode Browser openen. Hier is bijvoorbeeld de cursor bij dezelfde functie als in voorbeeld hierboven en het venster links toont dezelfde soort informatie als in de eerdere tooltip:

Als u de cursor rechts beweegt dan wijzigt de informatie aan de linkerkant. Maar als u klikt op de knop Huidige weergave vergrendelen rechtsboven dan vergrendelt u deze informatie, zodat het onafhankelijk is van de muis-bewegingen en u deze informatie rustig kunt bestuderen.

Opmerking

Dit soort van contextinformatie is beschikbaar op veel andere plaatsen in KDevelop, niet alleen in de broncodebewerker. Bijvoorbeeld, het ingedrukt houden van de toets Alt in een lijst voor aanvullen(bijv. bij een snel-openen) geeft ook de contextinformatie over het huidige symbool.

Informatie op bestand-niveau

Een niveau hoger is het verkrijgen van informatie over het bronbestand waar u op dit moment aan werkt. Om deze informatie te verkrijgen plaatst u de cursor op het huidige bestand waarna u kunt de informatie kunt bekijken in de Code Browser:

Hier toont het een lijst met namespaces, klasses en functies die gedeclareerd of gedefinieerd zijn in het geselecteerde bestand, zodat u een indruk krijgt van wat er in het bestand gebeurt en u naar elk van deze declaraties of definities kunt springen zonder in het bestand omhoog of omlaag te scrollen of te moeten zoeken naar een bepaald symbool.

Opmerking

De informatie over het bestand is dezelfde als in de Overzicht modus getoond zoals hieronder in de Navigeren door broncode beschreven; het verschil is dat de overzicht modus alleen een tijdelijke tooltip is.

Informatie op project- en sessie-niveau

Er zijn zoveel manieren waarop u informatie kan verkrijgen over een heel project (of, in feite over alle projecten in een sessie). Deze soort informatie krijgt u via verschillende vensters. Bijvoorbeeld het venster Klassen laat voor alle projecten in de sessie een boomstructuur zien met alle klassen en bijbehorende namespaces, samen met de leden van de functies en de variabelen van elk van deze klassen:

Met de muis zwevend boven een entry krijgt u informatie over het symbool, waar het is gedeclareerd en gedefinieerd en waar het is gebruikt. Als u dubbelklikt op een entry in de boomstructuur dan opent op de locatie waar het symbool is gedeclareerd of gedefinieerd een bewerking-venster.

Maar er zijn ook andere manieren om algemene informatie te bestuderen. Bijvoorbeeld, het venster Documenten geeft een overzicht over een project in de vorm van de soorten bestanden of andere documenten waaruit het project is opgebouwd:

Veelkleurig oplichten uitgelegd

KDevelop gebruikt veel verschillende kleuren om verschillende objecten op te laten lichten in de broncode. Als u de betekenis van de verschillende kleuren weet dan kunt snel veel informatie uit de broncode halen door alleen maar naar de kleuren te kijken,zonder een enkele karakter te lezen. Het oplichten volgt de volgende regels:

  • Objects van het type Class / Struct, Enum (de waarde en het type), (global) functies, en leden van klasses hebben elk een eigen kleur toegewezen (klasses zijn groen, enums zijn donkerrood, en members zijn donkergeel of paars, (algemeen) functies zijn altijd paars).

  • Alle algemene variabelen hebben de kleur donkergroen.

  • Identifiers die typedefs zijn voor een ander type hebben de kleur cyaan.

  • Alle object-declaraties en definities zijn vetgedrukt.

  • Als u een member aanroept vanuit de context waar het is gedefinieerd (base of afgeleide klasse) dan verschijnt het in geel, in de andere gevallen verschijnt het in paars.

  • Als een member private of protected is dan krijgt het bij gebruik een donkerder kleur.

  • Voor lokale variabelen die bij een functie horen worden alle kleuren uit de regenboog gebruikt, waarbij de kleurkeuze gebaseerd is op de hash van de identifier. Hier horen ook de parameters van de functie bij. Een identifier zal als het niet van scope verandert altijd dezelfde kleur gebruiken (maar dezelfde identifier zal een andere kleur krijgen als het een ander object vertegenwoordigt, bijv. als het wordt geherdefinieerd in een meer geneste scope), en u krijgt meestal dezelfde kleur voor dezelfde identifier in een andere scope. Als u dus meerdere functies heeft waarbij de parameters dezelfde namen hebben dan lijken de parameters qua kleur op elkaar. U kunt deze markering-kleuren apart uitschakelen in het instellingendialoog.

  • Identifiers waar KDevelop niet de overeenkomstige declaratie van kon bepalen worden wit gekleurd. Dit kan soms veroorzaakt worden door het ontbreken van een #include directive.

  • Naast deze kleur-markering is ook de normale syntax-markering van toepassing zoals we dat kennen van Kate. Bij een conflict heeft KDevelop's semantische markering altijd de voorrang boven de markering van de editor.