KDevelop5/Manual/Kodegenering med skabeloner

From KDE Wiki Sandbox
Revision as of 08:03, 16 September 2017 by Claus chr (talk | contribs) (Importing a new version from external source)
Other languages:
Under Construction
This is a new page, currently under construction!


Kodegenering med skabeloner

KDevelop bruger skabeloner til at generere kildekodefiler og for at undgå at skrive kode som gentages.

Opret en ny klasse

Den mest almindelige anvendelse af kodegenerering er formentlig at skrive en ny klasse. For at oprettet en ny klasse i et eksisterende projekt skal du højreklikke på projektmappen og vælge Opret fra skabelon. Den samme dialog kan startes fra menuen ved at vælge Fil -> Ny fra skabelon, men at bruge en projektmappe har den fordel, at basis-URL'en bliver sat for outputfilen. Vælg Klasse i afsnittet kategori og det sprog og den skabelon der ønskes i de andre to felter. Efter at du har valgt en klasseskabelon skal du angive detaljer om den nye klasse.

Først skal du angive en identifikator for klassen. Dette kan være en simpelt navn (som Bus) eller en komplet identifikator men navnerum (som Transportation::Bus). I det sidste tilfælde vil KDevelop fortolke identifikatoren og separere navnerummet fra det egentlige navn. I det samme vindue kan du tilføje den nye klasses basisklasser. Du bemærker måske, at nogle skabeloner selv vælger en basisklasse, men du kan frit fjerne den og du kan tilføje andre basisklasser. Du bør skrive hele nedarvningserklæringen her, hvilket afhænger af sproget, fx public QObject for C++, extends SomeClass for PHP og blot klassens navn for Python.

I det næste vindue kan du vælge bland de virtuelle metoder fra alle nedarvede klasser samt nogle standard konstruktorer, destruktorer og operatorer. Markér afkrydsningsfeltet vedsiden af en metodesignatur for at implementere denne metode i den nye klasse.

Når du klikker på Næste kommer du til et vindue, hvor du kan tilføje medlemmer til klassen. Afhængigt af den valgte skabelon vil de optræde som medlemsvariable i den nye klasse eller skabelonen vil oprette settere og gettere for dem. I sprog som C++, hvor variable skal erklæres skal du angive både type og navn for medlemmet som fx int number eller QString name. I andre sprog behøver du ikke at angive typen, men det er god praksis at have den med alligevel, for den valgte skabelon kan stadig drage nytte af det.

I de følgende vinduer kan du vælge licensen for din nye klasse, angive særlige oplysninger, som den valgte skabelon skal bruge og angive, hvor de genererede filer skal placeres. Du afslutter guiden ved at klikke Afslut, hvorefter den nye klasse genereres. De genererede filer vil blive åbnet i editoren, sådan at du kan begynde at arbejde med dem med det samme.

Efter at have oprettet en ny C++-klasse vil du få mulighed for at føje den til et projektmål. Vælg et mål i dialogvinduet eller annulér vinduet og føj filen til et mål manuelt.

Hvis du valgte skabelonen Qt Objekt, markerede nogle standardmetoder og tilføjede et par medlemsvariable, så skulle outputtet ligne det på billedet herunder.

Du kan se, at datamedlemmerne er blevet lavet om til Qt egenskaber med tilgangsfunktioner og Q_PROPERTY-makroer. Argumenter til setterfunktioner overgives endda ved const-reference, hvor det er passende. Desuden er en privat klasse blevet erklæret og en privat pointer oprettet med Q_DECLARE_PRIVATE. Alt dette gøres af skabelonen. Havde du valgt en anden skabelon, så havde resultatet nok set helt anderledes ud.

Opret en ny unittest

Selv om de fleste testsystemer kræver, at hver test også er en klasse, så har KDevelop en metode til at forenkle oprettelsen af enhedstest. For at oprette en ny test skal du højreklikke på en projektmappe og vælge Opret fra skabelon. I skabelonvalgsvinduet vælger du Test som kategori og derefter dit programmeringssprog og din skabelon og klikker så Næste.

Du bliver nu spurgt om testens navn og en liste af testtilfælde. For testilfældene skal du blot angive el liste med navne. Nogle enhedstestsystemer så som PyUnit og PHPUnit kræver, at testtilfældene starter med et specielt præfiks. I KDevelop er skabelonen ansvarlig for at tilføje præfikset, så du skal ikke føje det til testtilfældene her. Efter at have klikket på Næste skal du angive licens og outputplacering for de genererede filer; så bliver testen oprettet.

Enhedstest oprettet på denne måde vil ikke automatisk blive føjet til noget mål. Hvis du bruger CTest eller et andet testsystem, så sørg for at føje de nye filer til et mål. KDevelop giver dig en værktøjsvisning til enhedstests, som integrerer med CTest.

Other files

While classes and unit tests receive special attention when generating code from templates, the same method can be used for any kind of source code files. For example, one could use a template for a CMake Find module or a .desktop file. This can be done by choosing Create from Template, and selecting the wanted category and template. If the selected category is neither Class nor Test, you will only have the option of choosing the license, any custom options specified by the template, and the output file locations. As with classes and tests, finishing the assistant will generate the files and open them in the editor.

Managing templates

From the File -> New from Template assistant, you can also download additional file templates by clicking the Get more Templates... button. This opens a Get Hot New Stuff dialog, where you can install additional templates, as well as update or remove them. There is also a configuration module for template, which can be reached by clicking Settings -> Configure KDevelop -> Templates. From there, you can manage both file templates (explained above) and project templates (used for creating new projects).

Of course, if none of the available template suit your project, you can always create new ones. The easiest way is probably to copy and modify an existing template, while a short tutorial and a longer specification document are there to help you. To copy an installed template, open the template manager by clicking Settings -> Configure KDevelop... -> Templates, select the template you wish to copy, then click the Extract Template button. Select a destination folder, then click OK, and the contents of the template will be extracted into the selected folder. Now you can edit the template by opening the extracted files and modifying them. After you are done, you can import your new template into KDevelop by opening the template manager, activating the appropriate tab (either Project Templates or File Templates) and clicking Load Template. Open the template description file, which is the one with the suffix either .kdevtemplate or .desktop. KDevelop will compress the files into a template archive and import the template.

Note
When copying an existing template, make sure you rename it before importing it again. Otherwise, you will either overwrite the old template, or will end up with two templates with identical names. To rename a template, rename the description file to something unique (but keep the suffix), and change the Name entry in the description file.


If you want to write a template from scratch, you can start with a sample C++ class template by creating a new project and selecting the C++ Class Template project in category KDevelop.