From d1564e8aa44f920d0c9ddf08141417f0deb89ba6 Mon Sep 17 00:00:00 2001 From: Moritz Bunkus Date: Wed, 31 Oct 2012 15:28:00 +0100 Subject: [PATCH] =?utf8?q?Doku:=20Test-Doku=20aus=20t/README=20in=20die=20?= =?utf8?q?Haupt-Doku=20=C3=BCberf=C3=BChrt=20&=20erweitert?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- doc/dokumentation.xml | 142 +++++++++++++++++++++++++++++ doc/html/ch04s04.html | 4 +- doc/html/ch04s05.html | 151 ++++++++----------------------- doc/html/ch04s06.html | 154 ++++++++++++++++++++++++-------- doc/html/ch04s07.html | 38 ++++++++ doc/html/index.html | 8 +- doc/kivitendo-Dokumentation.pdf | Bin 568180 -> 583159 bytes t/README | 41 --------- 8 files changed, 343 insertions(+), 195 deletions(-) create mode 100644 doc/html/ch04s07.html delete mode 100644 t/README diff --git a/doc/dokumentation.xml b/doc/dokumentation.xml index 6f4041a8c..25b52d39e 100644 --- a/doc/dokumentation.xml +++ b/doc/dokumentation.xml @@ -5429,6 +5429,148 @@ filenames + + Die kivitendo-Test-Suite + + + Einführung + + kivitendo enthält eine Suite für automatisierte Tests. Sie basiert auf dem Standard-Perl-Modul Test::More. + + Die grundlegenden Fakten sind: + + + Alle Tests liegen im Unterverzeichnis t/. + + Ein Script (bzw. ein Test) in f/ enthält einen oder mehrere Testfälle. + + Alle Dateinamen von Tests enden auf .t. Es sind selbstständig ausführbare Perl-Scripte. + + Die Test-Suite besteht aus der Gesamtheit aller Tests, sprich aller Scripte in f/, deren + Dateiname auf .t endet. + + + + + Voraussetzungen + + Für die Ausführung werden neben den für kivitendo eh schon benötigten Module noch weitere Perl-Module benötigt. Diese sind: + + + Test::Deep (Debian-Paketname: libtest-deep-perl; Fedora Core: + perl-Test-Deep; openSuSE: perl-Test-Deep) + + + + + + Existierende Tests ausführen + + + Es gibt mehrere Möglichkeiten zum Ausführen der Tests: entweder, man lässt alle Tests auf einmal ausführen, oder man führt + gezielt einzelne Scripte aus. Für beide Fälle gibt es das Helferscript t/test.sh. + + Will man die komplette Test-Suite ausführen, so muss man einfach nur t/test.sh ohne weitere Parameter aus + dem kivitendo-Basisverzeichnis heraus ausführen. + + Um einzelne Test-Scripte auszuführen, übergibt man deren Namen an t/test.sh. Beispielsweise: + + t/test.sh t/form/format_amount.t t/background_job/known_jobs.t + + + + + + Bedeutung der verschiedenen Test-Scripte + + + Die Test-Suite umfasst Tests sowohl für Funktionen als auch für Programmierstil. Einige besonders zu erwähnende, weil auch + während der Entwicklung nützliche Tests sind: + + + t/001compile.t -- compiliert alle Quelldateien und bricht bei Fehlern sofort ab + t/002goodperl.t -- überprüft alle Perl-Dateien auf Anwesenheit von 'use strict'-Anweisungen + t/003safesys.t -- überprüft Aufrufe von system() und exec() auf Gültigkeit + t/005no_tabs.t -- überprüft, ob Dateien Tab-Zeichen enthalten + t/006spelling.t -- sucht nach häufigen Rechtschreibfehlern + t/011pod.t -- überprüft die Syntax von Dokumentation im POD-Format auf Gültigkeit + + + Weitere Test-Scripte überprüfen primär die Funktionsweise einzelner Funktionen und Module. + + + + + Neue Test-Scripte erstellen + + + Es wird sehr gern gesehen, wenn neue Funktionalität auch gleich mit einem Test-Script abgesichert wird. Auch bestehende + Funktion darf und soll ausdrücklich nachträglich mit Test-Scripten abgesichert werden. + + + + Ideen für neue Test-Scripte, die keine konkreten Funktionen testen + + + Ideen, die abgesehen von Funktions noch nicht umgesetzt wurden: + + + Überprüfung auf fehlende symbolische Links + Suche nach Nicht-ASCII-Zeichen in Perl-Code-Dateien (mit gewissen Einschränkungen wie das Erlauben von deutschen Umlauten) + Test auf DOS-Zeilenenden (\r\n anstelle von nur \n) + Überprüfung auf Leerzeichen am Ende von Zeilen + Test, ob alle zu übersetzenden Strings in locale/de/all vorhanden sind + Test, ob alle Webseiten-Templates in templates/webpages mit vom Perl-Modul Template compiliert werden können + + + + + + Konvention für Verzeichnis- und Dateinamen + + + Es gibt momentan eine wenige Richtlinien, wie Test-Scripte zu benennen sind. Bitte die folgenden Punkte als Richtlinie betrachten und ihnen soweit es geht folgen: + + + Die Dateiendung muss .t lauten. + + Namen sind englisch, komplett klein geschrieben und einzelne Wörter mit Unterstrichten getrennt (beispielsweise + bad_function_params.t). + + Unterverzeichnisse sollten grob nach dem Themenbereich benannt sind, mit dem sich die Scripte darin befassen + (beispielsweise background_jobs für Tests rund um Hintergrund-Jobs). + + Test-Scripte sollten einen überschaubaren Bereich von Funktionalität testen, der logisch zusammenhängend ist + (z.B. nur Tests für eine einzelne Funktion in einem Modul). Lieber mehrere Test-Scripte schreiben. + + + + + + Minimales Skelett für eigene Scripte + + + Der folgenden Programmcode enthält das kleinstmögliche Testscript und kann als Ausgangspunkt für eigene Tests verwendet werden: + + use Test::More tests => 0; + +use lib 't'; + +use Support::TestSetup; + +Support::TestSetup::login(); + + Wird eine vollständig initialisierte kivitendo-Umgebung benötigt (Stichwort: alle globalen Variablen wie + $::auth, $::form oder $::lxdebug), so muss in der Konfigurationsdatei + config/kivitendo.conf im Abschnitt testing.login ein gültiger Login-Name eingetragen + sein. Dieser wird für die Datenbankverbindung benötigt. + + Wir keine vollständig initialisierte Umgebung benötigt, so kann die letzte Zeile Support::TestSetup::login(); + weggelassen werden, was die Ausführungszeit des Scripts leicht verringert. + + + + Stil-Richtlinien diff --git a/doc/html/ch04s04.html b/doc/html/ch04s04.html index 84d9627fa..bae0cca0f 100644 --- a/doc/html/ch04s04.html +++ b/doc/html/ch04s04.html @@ -1,6 +1,6 @@ - 4.4. Translations and languages

4.4. Translations and languages

4.4.1. Introduction

[Anmerkung]Anmerkung

Dieser Abschnitt ist in Englisch geschrieben, um + 4.4. Translations and languages

4.4. Translations and languages

4.4.1. Introduction

[Anmerkung]Anmerkung

Dieser Abschnitt ist in Englisch geschrieben, um internationalen Übersetzern die Arbeit zu erleichtern.

This section describes how localization packages in kivitendo are built. Currently the only language fully supported is German, and since most of the internal messages are held in English the English @@ -78,4 +78,4 @@ filenames

The last of which is very machine dependant. Remember that case you made a typo, so that you don't have to translate everything again. If a tranlsation is missing, the lost file is checked first. If you maintain a language package, you might - want to keep this safe somewhere.

\ No newline at end of file + want to keep this safe somewhere.

\ No newline at end of file diff --git a/doc/html/ch04s05.html b/doc/html/ch04s05.html index 9d3743f07..87fee7702 100644 --- a/doc/html/ch04s05.html +++ b/doc/html/ch04s05.html @@ -1,120 +1,41 @@ - 4.5. Stil-Richtlinien

4.5. Stil-Richtlinien

Die folgenden Regeln haben das Ziel, den Code möglichst gut les- - und wartbar zu machen. Dazu gehört zum Einen, dass der Code einheitlich - eingerückt ist, aber auch, dass Mehrdeutigkeit so weit es geht vermieden - wird (Stichworte "Klammern" oder "Hash-Keys").

Diese Regeln sind keine Schikane sondern erleichtern allen das - Leben!

Jeder, der einen Patch schickt, sollte seinen Code vorher - überprüfen. Einige der Regeln lassen sich automatisch überprüfen, andere - nicht.

  1. Es werden keine echten Tabs sondern Leerzeichen - verwendet.

  2. Die Einrückung beträgt zwei Leerzeichen. Beispiel:

    foreach my $row (@data) {
    -  if ($flag) {
    -    # do something with $row
    -  }
    +   4.5. Die kivitendo-Test-Suite

    4.5. Die kivitendo-Test-Suite

    4.5.1. Einführung

    kivitendo enthält eine Suite für automatisierte Tests. Sie basiert auf dem Standard-Perl-Modul Test::More.

    Die grundlegenden Fakten sind:

    • Alle Tests liegen im Unterverzeichnis t/.

    • Ein Script (bzw. ein Test) in f/ enthält einen oder mehrere Testfälle.

    • Alle Dateinamen von Tests enden auf .t. Es sind selbstständig ausführbare Perl-Scripte.

    • Die Test-Suite besteht aus der Gesamtheit aller Tests, sprich aller Scripte in f/, deren + Dateiname auf .t endet.

    4.5.2. Voraussetzungen

    Für die Ausführung werden neben den für kivitendo eh schon benötigten Module noch weitere Perl-Module benötigt. Diese sind:

    • + Test::Deep (Debian-Paketname: libtest-deep-perl; Fedora Core: + perl-Test-Deep; openSuSE: perl-Test-Deep)

    4.5.3. + Existierende Tests ausführen +

    Es gibt mehrere Möglichkeiten zum Ausführen der Tests: entweder, man lässt alle Tests auf einmal ausführen, oder man führt + gezielt einzelne Scripte aus. Für beide Fälle gibt es das Helferscript t/test.sh.

    Will man die komplette Test-Suite ausführen, so muss man einfach nur t/test.sh ohne weitere Parameter aus + dem kivitendo-Basisverzeichnis heraus ausführen.

    Um einzelne Test-Scripte auszuführen, übergibt man deren Namen an t/test.sh. Beispielsweise:

    t/test.sh t/form/format_amount.t t/background_job/known_jobs.t

    4.5.4. + Bedeutung der verschiedenen Test-Scripte +

    Die Test-Suite umfasst Tests sowohl für Funktionen als auch für Programmierstil. Einige besonders zu erwähnende, weil auch + während der Entwicklung nützliche Tests sind:

    • + t/001compile.t -- compiliert alle Quelldateien und bricht bei Fehlern sofort ab

    • + t/002goodperl.t -- überprüft alle Perl-Dateien auf Anwesenheit von 'use strict'-Anweisungen

    • + t/003safesys.t -- überprüft Aufrufe von system() und exec() auf Gültigkeit

    • + t/005no_tabs.t -- überprüft, ob Dateien Tab-Zeichen enthalten

    • + t/006spelling.t -- sucht nach häufigen Rechtschreibfehlern

    • + t/011pod.t -- überprüft die Syntax von Dokumentation im POD-Format auf Gültigkeit

    Weitere Test-Scripte überprüfen primär die Funktionsweise einzelner Funktionen und Module.

    4.5.5. + Neue Test-Scripte erstellen +

    Es wird sehr gern gesehen, wenn neue Funktionalität auch gleich mit einem Test-Script abgesichert wird. Auch bestehende + Funktion darf und soll ausdrücklich nachträglich mit Test-Scripten abgesichert werden.

    4.5.5.1. + Ideen für neue Test-Scripte, die keine konkreten Funktionen testen +

    Ideen, die abgesehen von Funktions noch nicht umgesetzt wurden:

    • Überprüfung auf fehlende symbolische Links

    • Suche nach Nicht-ASCII-Zeichen in Perl-Code-Dateien (mit gewissen Einschränkungen wie das Erlauben von deutschen Umlauten)

    • Test auf DOS-Zeilenenden (\r\n anstelle von nur \n)

    • Überprüfung auf Leerzeichen am Ende von Zeilen

    • Test, ob alle zu übersetzenden Strings in locale/de/all vorhanden sind

    • Test, ob alle Webseiten-Templates in templates/webpages mit vom Perl-Modul Template compiliert werden können

    4.5.5.2. + Konvention für Verzeichnis- und Dateinamen +

    Es gibt momentan eine wenige Richtlinien, wie Test-Scripte zu benennen sind. Bitte die folgenden Punkte als Richtlinie betrachten und ihnen soweit es geht folgen:

    • Die Dateiendung muss .t lauten.

    • Namen sind englisch, komplett klein geschrieben und einzelne Wörter mit Unterstrichten getrennt (beispielsweise + bad_function_params.t).

    • Unterverzeichnisse sollten grob nach dem Themenbereich benannt sind, mit dem sich die Scripte darin befassen + (beispielsweise background_jobs für Tests rund um Hintergrund-Jobs).

    • Test-Scripte sollten einen überschaubaren Bereich von Funktionalität testen, der logisch zusammenhängend ist + (z.B. nur Tests für eine einzelne Funktion in einem Modul). Lieber mehrere Test-Scripte schreiben.

    4.5.5.3. + Minimales Skelett für eigene Scripte +

    Der folgenden Programmcode enthält das kleinstmögliche Testscript und kann als Ausgangspunkt für eigene Tests verwendet werden:

    use Test::More tests => 0;
     
    -  if ($use_modules) {
    -    $row->{modules} = MODULE->retrieve(
    -      id   => $row->{id},
    -      date => $use_now ? localtime() : $row->{time},
    -    );
    -  }
    +use lib 't';
     
    -  $report->add($row);
    -}
  3. Öffnende geschweifte Klammern befinden sich auf der gleichen - Zeile wie der letzte Befehl. Beispiele:

    sub debug {
    -  ...
    -}

    oder

    if ($form->{item_rows} > 0) {
    -  ...
    -}
  4. Schließende geschweifte Klammern sind so weit eingerückt wie - der Befehl / die öffnende schließende Klammer, die den Block - gestartet hat, und nicht auf der Ebene des Inhalts. Die gleichen - Beispiele wie bei 3. gelten.

  5. Die Wörter "else", - "elsif", "while" befinden - sich auf der gleichen Zeile wie schließende geschweifte Klammern. - Beispiele:

    if ($form->{sum} > 1000) {
    -  ...
    -} elsif ($form->{sum} > 0) {
    -  ...
    -} else {
    -  ...
    -}
    +use Support::TestSetup;
     
    -do {
    -  ...
    -} until ($a > 0);
  6. Parameter von Funktionsaufrufen müssen mit runden Klammern - versehen werden. Davon nicht betroffen sind interne Perl-Funktionen, - und grep-ähnliche Operatoren. Beispiel:

    $main::lxdebug->message("Could not find file.");
    -%options = map { $_ => 1 } grep { !/^#/ } @config_file;
  7. Verschiedene Klammern, Ihre Ausdrücke und Leerzeichen:

    Generell gilt: Hashkeys und Arrayindices sollten nicht durch - Leerzeichen abgesetzt werden. Logische Klammerungen ebensowenig, - Blöcke schon. Beispiel:

    if (($form->{debug} == 1) && ($form->{sum} - 100 < 0)) {
    -  ...
    -}
    -
    -$array[$i + 1]             = 4;
    -$form->{sum}              += $form->{"row_$i"};
    -$form->{ $form->{index} } += 1;
    -
    -map { $form->{sum} += $form->{"row_$_"} } 1..$rowcount;
  8. Mehrzeilige Befehle

    1. Werden die Parameter eines Funktionsaufrufes auf mehrere - Zeilen aufgeteilt, so sollten diese bis zu der Spalte eingerückt - werden, in der die ersten Funktionsparameter in der ersten Zeile - stehen. Beispiel:

      $sth = $dbh->prepare("SELECT * FROM some_table WHERE col = ?",
      -                    $form->{some_col_value});
    2. Ein Spezialfall ist der ternäre Oprator "?:", der am - besten in einer übersichtlichen Tabellenstruktur organisiert - wird. Beispiel:

      my $rowcount = $form->{"row_$i"} ? $i
      -             : $form->{oldcount} ? $form->{oldcount} + 1
      -             :                     $form->{rowcount} - $form->{rowbase};
  9. Kommentare

    1. Kommentare, die alleine in einer Zeile stehen, sollten - soweit wie der Code eingerückt sein.

    2. Seitliche hängende Kommentare sollten einheitlich - formatiert werden.

    3. Sämtliche Kommentare und Sonstiges im Quellcode ist bitte - auf Englisch zu verfassen. So wie ich keine Lust habe, - französischen Quelltext zu lesen, sollte auch der kivitendo - Quelltext für nicht-Deutschsprachige lesbar sein. - Beispiel:

      my $found = 0;
      -while (1) {
      -  last if $found;
      -
      -  # complicated check
      -  $found = 1 if //
      -}
      -
      -$i  = 0        # initialize $i
      -$n  = $i;      # save $i
      -$i *= $const;  # do something crazy
      -$i  = $n;      # recover $i
  10. Hashkeys sollten nur in Anführungszeichen stehen, wenn die - Interpolation gewünscht ist. Beispiel:

    $form->{sum}      = 0;
    -$form->{"row_$i"} = $form->{"row_$i"} - 5;
    -$some_hash{42}    = 54;
  11. Die maximale Zeilenlänge ist nicht beschränkt. Zeilenlängen - unterhalb von 79 Zeichen helfen unter bestimmten Bedingungen, aber - wenn die Lesbarkeit unter kurzen Zeilen leidet (wie zum Biespiel in - grossen Tabellen), dann ist Lesbarkeit vorzuziehen.

    Als Beispiel sei die Funktion - print_options aus - bin/mozilla/io.pl angeführt.

  12. Trailing Whitespace, d.h. Leerzeichen am Ende von Zeilen sind - unerwünscht. Sie führen zu unnötigen Whitespaceänderungen, die diffs - verfälschen.

    Emacs und vim haben beide recht einfache Methoden zur - Entfernung von trailing whitespace. Emacs kennt das Kommande - nuke-trailing-whitespace, vim macht das gleiche - manuell über :%s/\s\+$//e Mit :au - BufWritePre * :%s/\s\+$//e wird das an Speichern - gebunden.

  13. Es wird kein perltidy verwendet.

    In der Vergangenheit wurde versucht, - perltidy zu verwenden, um einen einheitlichen - Stil zu erlangen. Es hat sich aber gezeigt, dass - perltidys sehr eigenwilliges Verhalten, was - Zeilenumbrüche angeht, oftmals gut formatierten Code zerstört. Für - den Interessierten sind hier die - perltidy-Optionen, die grob den beschriebenen - Richtlinien entsprechen:

    -syn -i=2 -nt -pt=2 -sbt=2 -ci=2 -ibc -hsc -noll -nsts -nsfs -asc -dsm
    --aws -bbc -bbs -bbb -mbl=1 -nsob -ce -nbl -nsbl -cti=0 -bbt=0 -bar -l=79
    --lp -vt=1 -vtc=1
  14. - STDERR ist tabu. Unkonditionale - Debugmeldungen auch.

    kivitendo bietet mit dem Modul LXDebug - einen brauchbaren Trace-/Debug-Mechanismus. Es gibt also keinen - Grund, nach STDERR zu schreiben.

    Die LXDebug-Methode - "message" nimmt als ersten Paramter außerdem - eine Flagmaske, für die die Meldung angezeigt wird, wobei "0" immer - angezeigt wird. Solche Meldungen sollten nicht eingecheckt werden - und werden in den meisten Fällen auch vom Repository - zurückgewiesen.

  15. Alle neuen Module müssen use strict verwenden.

    - $form, $auth, - $locale, $lxdebug und - %myconfig werden derzeit aus dem main package - importiert (siehe Globale Variablen. Alle anderen - Konstrukte sollten lexikalisch lokal gehalten werden.

\ No newline at end of file +Support::TestSetup::login();

Wird eine vollständig initialisierte kivitendo-Umgebung benötigt (Stichwort: alle globalen Variablen wie + $::auth, $::form oder $::lxdebug), so muss in der Konfigurationsdatei + config/kivitendo.conf im Abschnitt testing.login ein gültiger Login-Name eingetragen + sein. Dieser wird für die Datenbankverbindung benötigt.

Wir keine vollständig initialisierte Umgebung benötigt, so kann die letzte Zeile Support::TestSetup::login(); + weggelassen werden, was die Ausführungszeit des Scripts leicht verringert.

\ No newline at end of file diff --git a/doc/html/ch04s06.html b/doc/html/ch04s06.html index e99f3e0d1..a5580b2ea 100644 --- a/doc/html/ch04s06.html +++ b/doc/html/ch04s06.html @@ -1,38 +1,120 @@ - 4.6. Dokumentation erstellen

4.6. Dokumentation erstellen

4.6.1. Einführung

Diese Dokumentation ist in DocBook™ - XML geschrieben. Zum Bearbeiten reicht grundsätzlich ein Text-Editor. - Mehr Komfort bekommt man, wenn man einen dedizierten XML-fähigen - Editor nutzt, der spezielle Unterstützung für - DocBook™ mitbringt. Wir empfehlen dafür den - XMLmind XML - Editor, der bei nicht kommerzieller Nutzung kostenlos - ist.

4.6.2. Benötigte Software

Bei DocBook™ ist Prinzip, dass - ausschließlich die XML-Quelldatei bearbeitet wird. Aus dieser werden - dann mit entsprechenden Stylesheets andere Formate wie PDF oder HTML - erzeugt. Bei kivitendo übernimmt diese Aufgabe das Shell-Script - scripts/build_doc.sh.

Das Script benötigt zur Konvertierung verschiedene - Softwarekomponenten, die im normalen kivitendo-Betrieb nicht benötigt - werden:

  • - Java - in einer halbwegs aktuellen Version

  • Das Java-Build-System Apache Ant -

  • Das Dokumentations-System Dobudish für - DocBook™ 4.5, eine Zusammenstellung - diverser Stylesheets und Grafiken zur Konvertierung von - DocBook™ XML in andere Formate. Das - Paket, das benötigt wird, ist zum Zeitpunkt der - Dokumentationserstellung - dobudish-nojre-1.1.4.zip, aus auf code.google.com - bereitsteht.

Apache Ant sowie ein dazu passendes Java Runtime Environment - sind auf allen gängigen Plattformen verfügbar. Beispiel für - Debian/Ubuntu:

apt-get install ant openjdk-7-jre

Nach dem Download von Dobudish muss Dobudish im Unterverzeichnis - doc/build entpackt werden. Beispiel unter der - Annahme, das Dobudish™ in - $HOME/Downloads heruntergeladen wurde:

cd doc/build
-unzip $HOME/Downloads/dobudish-nojre-1.1.4.zip

4.6.3. PDFs und HTML-Seiten erstellen

Die eigentliche Konvertierung erfolgt nach Installation der - benötigten Software mit einem einfachen Aufruf direkt aus dem - kivitendo-Installationsverzeichnis heraus:

./scripts/build_doc.sh

4.6.4. Einchecken in das Git-Repository

Sowohl die XML-Datei als auch die erzeugten PDF- und - HTML-Dateien sind Bestandteil des Git-Repositories. Daraus folgt, dass - nach Änderungen am XML die PDF- und HTML-Dokumente ebenfalls gebaut - und alles zusammen in einem Commit eingecheckt werden sollten.

Die "dobudish"-Verzeichnisse bzw. - symbolischen Links gehören hingegen nicht in das Repository.

\ No newline at end of file + 4.6. Stil-Richtlinien

4.6. Stil-Richtlinien

Die folgenden Regeln haben das Ziel, den Code möglichst gut les- + und wartbar zu machen. Dazu gehört zum Einen, dass der Code einheitlich + eingerückt ist, aber auch, dass Mehrdeutigkeit so weit es geht vermieden + wird (Stichworte "Klammern" oder "Hash-Keys").

Diese Regeln sind keine Schikane sondern erleichtern allen das + Leben!

Jeder, der einen Patch schickt, sollte seinen Code vorher + überprüfen. Einige der Regeln lassen sich automatisch überprüfen, andere + nicht.

  1. Es werden keine echten Tabs sondern Leerzeichen + verwendet.

  2. Die Einrückung beträgt zwei Leerzeichen. Beispiel:

    foreach my $row (@data) {
    +  if ($flag) {
    +    # do something with $row
    +  }
    +
    +  if ($use_modules) {
    +    $row->{modules} = MODULE->retrieve(
    +      id   => $row->{id},
    +      date => $use_now ? localtime() : $row->{time},
    +    );
    +  }
    +
    +  $report->add($row);
    +}
  3. Öffnende geschweifte Klammern befinden sich auf der gleichen + Zeile wie der letzte Befehl. Beispiele:

    sub debug {
    +  ...
    +}

    oder

    if ($form->{item_rows} > 0) {
    +  ...
    +}
  4. Schließende geschweifte Klammern sind so weit eingerückt wie + der Befehl / die öffnende schließende Klammer, die den Block + gestartet hat, und nicht auf der Ebene des Inhalts. Die gleichen + Beispiele wie bei 3. gelten.

  5. Die Wörter "else", + "elsif", "while" befinden + sich auf der gleichen Zeile wie schließende geschweifte Klammern. + Beispiele:

    if ($form->{sum} > 1000) {
    +  ...
    +} elsif ($form->{sum} > 0) {
    +  ...
    +} else {
    +  ...
    +}
    +
    +do {
    +  ...
    +} until ($a > 0);
  6. Parameter von Funktionsaufrufen müssen mit runden Klammern + versehen werden. Davon nicht betroffen sind interne Perl-Funktionen, + und grep-ähnliche Operatoren. Beispiel:

    $main::lxdebug->message("Could not find file.");
    +%options = map { $_ => 1 } grep { !/^#/ } @config_file;
  7. Verschiedene Klammern, Ihre Ausdrücke und Leerzeichen:

    Generell gilt: Hashkeys und Arrayindices sollten nicht durch + Leerzeichen abgesetzt werden. Logische Klammerungen ebensowenig, + Blöcke schon. Beispiel:

    if (($form->{debug} == 1) && ($form->{sum} - 100 < 0)) {
    +  ...
    +}
    +
    +$array[$i + 1]             = 4;
    +$form->{sum}              += $form->{"row_$i"};
    +$form->{ $form->{index} } += 1;
    +
    +map { $form->{sum} += $form->{"row_$_"} } 1..$rowcount;
  8. Mehrzeilige Befehle

    1. Werden die Parameter eines Funktionsaufrufes auf mehrere + Zeilen aufgeteilt, so sollten diese bis zu der Spalte eingerückt + werden, in der die ersten Funktionsparameter in der ersten Zeile + stehen. Beispiel:

      $sth = $dbh->prepare("SELECT * FROM some_table WHERE col = ?",
      +                    $form->{some_col_value});
    2. Ein Spezialfall ist der ternäre Oprator "?:", der am + besten in einer übersichtlichen Tabellenstruktur organisiert + wird. Beispiel:

      my $rowcount = $form->{"row_$i"} ? $i
      +             : $form->{oldcount} ? $form->{oldcount} + 1
      +             :                     $form->{rowcount} - $form->{rowbase};
  9. Kommentare

    1. Kommentare, die alleine in einer Zeile stehen, sollten + soweit wie der Code eingerückt sein.

    2. Seitliche hängende Kommentare sollten einheitlich + formatiert werden.

    3. Sämtliche Kommentare und Sonstiges im Quellcode ist bitte + auf Englisch zu verfassen. So wie ich keine Lust habe, + französischen Quelltext zu lesen, sollte auch der kivitendo + Quelltext für nicht-Deutschsprachige lesbar sein. + Beispiel:

      my $found = 0;
      +while (1) {
      +  last if $found;
      +
      +  # complicated check
      +  $found = 1 if //
      +}
      +
      +$i  = 0        # initialize $i
      +$n  = $i;      # save $i
      +$i *= $const;  # do something crazy
      +$i  = $n;      # recover $i
  10. Hashkeys sollten nur in Anführungszeichen stehen, wenn die + Interpolation gewünscht ist. Beispiel:

    $form->{sum}      = 0;
    +$form->{"row_$i"} = $form->{"row_$i"} - 5;
    +$some_hash{42}    = 54;
  11. Die maximale Zeilenlänge ist nicht beschränkt. Zeilenlängen + unterhalb von 79 Zeichen helfen unter bestimmten Bedingungen, aber + wenn die Lesbarkeit unter kurzen Zeilen leidet (wie zum Biespiel in + grossen Tabellen), dann ist Lesbarkeit vorzuziehen.

    Als Beispiel sei die Funktion + print_options aus + bin/mozilla/io.pl angeführt.

  12. Trailing Whitespace, d.h. Leerzeichen am Ende von Zeilen sind + unerwünscht. Sie führen zu unnötigen Whitespaceänderungen, die diffs + verfälschen.

    Emacs und vim haben beide recht einfache Methoden zur + Entfernung von trailing whitespace. Emacs kennt das Kommande + nuke-trailing-whitespace, vim macht das gleiche + manuell über :%s/\s\+$//e Mit :au + BufWritePre * :%s/\s\+$//e wird das an Speichern + gebunden.

  13. Es wird kein perltidy verwendet.

    In der Vergangenheit wurde versucht, + perltidy zu verwenden, um einen einheitlichen + Stil zu erlangen. Es hat sich aber gezeigt, dass + perltidys sehr eigenwilliges Verhalten, was + Zeilenumbrüche angeht, oftmals gut formatierten Code zerstört. Für + den Interessierten sind hier die + perltidy-Optionen, die grob den beschriebenen + Richtlinien entsprechen:

    -syn -i=2 -nt -pt=2 -sbt=2 -ci=2 -ibc -hsc -noll -nsts -nsfs -asc -dsm
    +-aws -bbc -bbs -bbb -mbl=1 -nsob -ce -nbl -nsbl -cti=0 -bbt=0 -bar -l=79
    +-lp -vt=1 -vtc=1
  14. + STDERR ist tabu. Unkonditionale + Debugmeldungen auch.

    kivitendo bietet mit dem Modul LXDebug + einen brauchbaren Trace-/Debug-Mechanismus. Es gibt also keinen + Grund, nach STDERR zu schreiben.

    Die LXDebug-Methode + "message" nimmt als ersten Paramter außerdem + eine Flagmaske, für die die Meldung angezeigt wird, wobei "0" immer + angezeigt wird. Solche Meldungen sollten nicht eingecheckt werden + und werden in den meisten Fällen auch vom Repository + zurückgewiesen.

  15. Alle neuen Module müssen use strict verwenden.

    + $form, $auth, + $locale, $lxdebug und + %myconfig werden derzeit aus dem main package + importiert (siehe Globale Variablen. Alle anderen + Konstrukte sollten lexikalisch lokal gehalten werden.

\ No newline at end of file diff --git a/doc/html/ch04s07.html b/doc/html/ch04s07.html new file mode 100644 index 000000000..0727e304c --- /dev/null +++ b/doc/html/ch04s07.html @@ -0,0 +1,38 @@ + + + 4.7. Dokumentation erstellen

4.7. Dokumentation erstellen

4.7.1. Einführung

Diese Dokumentation ist in DocBook™ + XML geschrieben. Zum Bearbeiten reicht grundsätzlich ein Text-Editor. + Mehr Komfort bekommt man, wenn man einen dedizierten XML-fähigen + Editor nutzt, der spezielle Unterstützung für + DocBook™ mitbringt. Wir empfehlen dafür den + XMLmind XML + Editor, der bei nicht kommerzieller Nutzung kostenlos + ist.

4.7.2. Benötigte Software

Bei DocBook™ ist Prinzip, dass + ausschließlich die XML-Quelldatei bearbeitet wird. Aus dieser werden + dann mit entsprechenden Stylesheets andere Formate wie PDF oder HTML + erzeugt. Bei kivitendo übernimmt diese Aufgabe das Shell-Script + scripts/build_doc.sh.

Das Script benötigt zur Konvertierung verschiedene + Softwarekomponenten, die im normalen kivitendo-Betrieb nicht benötigt + werden:

  • + Java + in einer halbwegs aktuellen Version

  • Das Java-Build-System Apache Ant +

  • Das Dokumentations-System Dobudish für + DocBook™ 4.5, eine Zusammenstellung + diverser Stylesheets und Grafiken zur Konvertierung von + DocBook™ XML in andere Formate. Das + Paket, das benötigt wird, ist zum Zeitpunkt der + Dokumentationserstellung + dobudish-nojre-1.1.4.zip, aus auf code.google.com + bereitsteht.

Apache Ant sowie ein dazu passendes Java Runtime Environment + sind auf allen gängigen Plattformen verfügbar. Beispiel für + Debian/Ubuntu:

apt-get install ant openjdk-7-jre

Nach dem Download von Dobudish muss Dobudish im Unterverzeichnis + doc/build entpackt werden. Beispiel unter der + Annahme, das Dobudish™ in + $HOME/Downloads heruntergeladen wurde:

cd doc/build
+unzip $HOME/Downloads/dobudish-nojre-1.1.4.zip

4.7.3. PDFs und HTML-Seiten erstellen

Die eigentliche Konvertierung erfolgt nach Installation der + benötigten Software mit einem einfachen Aufruf direkt aus dem + kivitendo-Installationsverzeichnis heraus:

./scripts/build_doc.sh

4.7.4. Einchecken in das Git-Repository

Sowohl die XML-Datei als auch die erzeugten PDF- und + HTML-Dateien sind Bestandteil des Git-Repositories. Daraus folgt, dass + nach Änderungen am XML die PDF- und HTML-Dokumente ebenfalls gebaut + und alles zusammen in einem Commit eingecheckt werden sollten.

Die "dobudish"-Verzeichnisse bzw. + symbolischen Links gehören hingegen nicht in das Repository.

\ No newline at end of file diff --git a/doc/html/index.html b/doc/html/index.html index 83d2b300c..b30a65dfd 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -3,4 +3,10 @@ kivitendo: Installation, Konfiguration, Entwicklung

kivitendo: Installation, Konfiguration, Entwicklung


Inhaltsverzeichnis

1. Aktuelle Hinweise
2. Installation und Grundkonfiguration
2.1. Benötigte Software und Pakete
2.1.1. Betriebssystem
2.1.2. Pakete
2.2. Manuelle Installation des Programmpaketes
2.3. kivitendo-Konfigurationsdatei
2.3.1. Einführung
2.3.2. Abschnitte und Parameter
2.3.3. Versionen vor 2.6.3
2.4. Anpassung der PostgreSQL-Konfiguration
2.4.1. Zeichensätze/die Verwendung von UTF-8
2.4.2. Änderungen an Konfigurationsdateien
2.4.3. Erweiterung für servergespeicherte Prozeduren
2.4.4. Datenbankbenutzer anlegen
2.5. Webserver-Konfiguration
2.5.1. Grundkonfiguration mittels CGI
2.5.2. Konfiguration für FastCGI/FCGI
2.6. Der Task-Server
2.6.1. Verfügbare und notwendige Konfigurationsoptionen
2.6.2. Automatisches Starten des Task-Servers beim Booten
2.6.3. Wie der Task-Server gestartet und beendet wird
2.6.4. Task-Server mit mehreren Mandanten
2.7. Benutzerauthentifizierung und Administratorpasswort
2.7.1. Grundlagen zur Benutzerauthentifizierung
2.7.2. Administratorpasswort
2.7.3. Authentifizierungsdatenbank
2.7.4. Passwortüberprüfung
2.7.5. Name des Session-Cookies
2.7.6. Anlegen der Authentifizierungsdatenbank
2.8. Benutzer- und Gruppenverwaltung
2.8.1. Zusammenhänge
2.8.2. Datenbanken anlegen
2.8.3. Gruppen anlegen
2.8.4. Benutzer anlegen
2.8.5. Gruppenmitgliedschaften verwalten
2.8.6. Migration alter Installationen
2.9. Drucken mit kivitendo
2.10. OpenDocument-Vorlagen
2.11. Konfiguration zur Einnahmenüberschussrechnung/Bilanzierung: EUR
2.11.1. Einführung
2.11.2. Konfigurationsparameter
2.11.3. Festlegen der Parameter
2.11.4. Bemerkungen zu Bestandsmethode
2.11.5. Bekannte Probleme
2.12. SKR04 19% Umstellung für innergemeinschaftlichen Erwerb
2.12.1. Einführung
2.12.2. Konto 3804 manuell anlegen
2.13. kivitendo ERP verwenden
3. Features und Funktionen
3.1. Wiederkehrende Rechnungen
3.1.1. Einführung
3.1.2. Konfiguration
3.1.3. Auflisten
3.1.4. Erzeugung der eigentlichen Rechnungen
3.1.5. Erste Rechnung für aktuellen Monat erstellen
3.2. Dokumentenvorlagen und verfügbare Variablen
3.2.1. Einführung
3.2.2. Variablen ausgeben
3.2.3. Verwendung in Druckbefehlen
3.2.4. Anfang und Ende der Tags verändern
3.2.5. Zuordnung von den Dateinamen zu den Funktionen
3.2.6. Sprache, Drucker und E-Mail
3.2.7. Allgemeine Variablen, die in allen Vorlagen vorhanden sind
3.2.8. Variablen in Rechnungen
3.2.9. Variablen in Mahnungen und Rechnungen über Mahngebühren
3.2.10. Variablen in anderen Vorlagen
3.2.11. Blöcke, bedingte Anweisungen und Schleifen
3.2.12. Markup-Code zur Textformatierung innerhalb von - Formularen
3.3. Excel-Vorlagen
3.3.1. Zusammenfassung
3.3.2. Bedienung
3.3.3. Variablensyntax
3.3.4. Einschränkungen
4. Entwicklerdokumentation
4.1. Globale Variablen
4.1.1. Wie sehen globale Variablen in Perl aus?
4.1.2. Warum sind globale Variablen ein Problem?
4.1.3. Kanonische globale Variablen
4.1.4. Ehemalige globale Variablen
4.2. Entwicklung unter FastCGI
4.2.1. Allgemeines
4.2.2. Programmende und Ausnahmen
4.2.3. Globale Variablen
4.2.4. Performance und Statistiken
4.2.5. Bekannte Probleme
4.3. SQL-Upgradedateien
4.3.1. Einführung
4.3.2. Format der Kontrollinformationen
4.3.3. Hilfsscript dbupgrade2_tool.pl
4.4. Translations and languages
4.4.1. Introduction
4.4.2. File structure
4.5. Stil-Richtlinien
4.6. Dokumentation erstellen
4.6.1. Einführung
4.6.2. Benötigte Software
4.6.3. PDFs und HTML-Seiten erstellen
4.6.4. Einchecken in das Git-Repository
\ No newline at end of file + Formularen
3.3. Excel-Vorlagen
3.3.1. Zusammenfassung
3.3.2. Bedienung
3.3.3. Variablensyntax
3.3.4. Einschränkungen
4. Entwicklerdokumentation
4.1. Globale Variablen
4.1.1. Wie sehen globale Variablen in Perl aus?
4.1.2. Warum sind globale Variablen ein Problem?
4.1.3. Kanonische globale Variablen
4.1.4. Ehemalige globale Variablen
4.2. Entwicklung unter FastCGI
4.2.1. Allgemeines
4.2.2. Programmende und Ausnahmen
4.2.3. Globale Variablen
4.2.4. Performance und Statistiken
4.2.5. Bekannte Probleme
4.3. SQL-Upgradedateien
4.3.1. Einführung
4.3.2. Format der Kontrollinformationen
4.3.3. Hilfsscript dbupgrade2_tool.pl
4.4. Translations and languages
4.4.1. Introduction
4.4.2. File structure
4.5. Die kivitendo-Test-Suite
4.5.1. Einführung
4.5.2. Voraussetzungen
4.5.3. + Existierende Tests ausführen +
4.5.4. + Bedeutung der verschiedenen Test-Scripte +
4.5.5. + Neue Test-Scripte erstellen +
4.6. Stil-Richtlinien
4.7. Dokumentation erstellen
4.7.1. Einführung
4.7.2. Benötigte Software
4.7.3. PDFs und HTML-Seiten erstellen
4.7.4. Einchecken in das Git-Repository
\ No newline at end of file diff --git a/doc/kivitendo-Dokumentation.pdf b/doc/kivitendo-Dokumentation.pdf index 9840d8358dddce50c6ffe84e7ee526b9022bef2b..881218ef3905cca81ab1a3e86d1edae57bc0645c 100644 GIT binary patch delta 69543 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 D{rsCq delta 57682 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 VnmnZvRY2_5E8DlP9@ek&{{UOFFvb7? diff --git a/t/README b/t/README deleted file mode 100644 index 07276f3f5..000000000 --- a/t/README +++ /dev/null @@ -1,41 +0,0 @@ -Testsuite for Lx-Office. - -These tests are a means to ensure basic sanity among the lx-office source -files. The test framework was originally written by the guys of Bugzilla, and -has been modified to cope with the Lx-Office structure. - -To run a full test use the shell script t/test.sh. -You can also run every test with the perl interpreter like this: - -$ perl t/001compile.t - -A makefile for an automated make test would be highly appreciated. - - - -The Tests: - -001compile.t: Tries to compile every source file. Bails out if any errors occur. -002goodperl.t: Checks every perl source file for taint, warnings and strict. - While taint is not seen mandatory, warnings and strict are. -003safesys: Checks is system() and exec() calls are fully qualified. -004template.t defunct! -005no_tabs.t checks every file for the \t Tab char. don't use tabs please. -006spelling.t checks for common spelling errors. -011pod.t checks if POD syntax is correct. - - -Wanted Tests: - -- module check -- check if symlinks are missing. -- check for anything outside lower ascii in pl/pm files (only place for complex - coding is locale) -- check for msdos line endings -- check for trailing whitespace -- Devise a test to check if there are modifications to locales without a - locales.pl run. -- Test if parse_template can compile all html templates. - -and later: -- spec tests for pure backend modules like Form.pm and Common.pm -- 2.20.1