summaryrefslogtreecommitdiff
path: root/30-qualitaetsheft
diff options
context:
space:
mode:
authorOrangerot <purple@orangerot.dev>2024-05-24 17:42:08 +0200
committerOrangerot <purple@orangerot.dev>2024-05-24 17:47:22 +0200
commit7fcdc1c788725f866de71fc9dfd8c4d1cb132b57 (patch)
tree89931c85ae3f149884ba02c69862558e93f01531 /30-qualitaetsheft
Initial commitHEADmain
Diffstat (limited to '30-qualitaetsheft')
-rw-r--r--30-qualitaetsheft/.gitignore305
-rw-r--r--30-qualitaetsheft/.gitlab-ci.yml36
-rw-r--r--30-qualitaetsheft/.latexmkrc7
-rw-r--r--30-qualitaetsheft/Makefile18
-rw-r--r--30-qualitaetsheft/README.md31
-rw-r--r--30-qualitaetsheft/assets/.gitignore3
-rw-r--r--30-qualitaetsheft/assets/ChangedPassword.PNGbin0 -> 2976 bytes
-rw-r--r--30-qualitaetsheft/assets/KIT_Deckblatt.pdfbin0 -> 11836 bytes
-rw-r--r--30-qualitaetsheft/assets/WrongUser.PNGbin0 -> 2847 bytes
-rw-r--r--30-qualitaetsheft/assets/coverage/authenticationService.pngbin0 -> 26274 bytes
-rw-r--r--30-qualitaetsheft/assets/coverage/episodeActionService.pngbin0 -> 14649 bytes
-rw-r--r--30-qualitaetsheft/assets/coverage/server.pngbin0 -> 42666 bytes
-rw-r--r--30-qualitaetsheft/assets/coverage/subscriptionsService.pngbin0 -> 14334 bytes
-rw-r--r--30-qualitaetsheft/assets/coverage/util.pngbin0 -> 17510 bytes
-rw-r--r--30-qualitaetsheft/assets/lasttest/goodSpecsApdex.pngbin0 -> 20917 bytes
-rw-r--r--30-qualitaetsheft/assets/lasttest/goodSpecsResponse.pngbin0 -> 22682 bytes
-rw-r--r--30-qualitaetsheft/assets/lasttest/goodSpecsTable.pngbin0 -> 46496 bytes
-rw-r--r--30-qualitaetsheft/assets/lasttest/minimumSpecsApdex.pngbin0 -> 22565 bytes
-rw-r--r--30-qualitaetsheft/assets/lasttest/minimumSpecsResponse.pngbin0 -> 21284 bytes
-rw-r--r--30-qualitaetsheft/assets/lasttest/minimumSpecsTable.pngbin0 -> 46556 bytes
-rw-r--r--30-qualitaetsheft/assets/logo.pdfbin0 -> 11797 bytes
-rw-r--r--30-qualitaetsheft/assets/logo.svg211
-rw-r--r--30-qualitaetsheft/assets/notifications.pngbin0 -> 34492 bytes
-rw-r--r--30-qualitaetsheft/assets/select-subscriptions.pngbin0 -> 67845 bytes
-rw-r--r--30-qualitaetsheft/assets/sources/checkstyle-after-processed.txt1
-rw-r--r--30-qualitaetsheft/assets/sources/checkstyle-after.txt22
-rw-r--r--30-qualitaetsheft/assets/sources/checkstyle-before-processed.txt23
-rw-r--r--30-qualitaetsheft/assets/sources/checkstyle-before.txt820
-rw-r--r--30-qualitaetsheft/assets/sources/linter-dashboard-after-processed.txt1
-rw-r--r--30-qualitaetsheft/assets/sources/linter-dashboard-after.txt10
-rw-r--r--30-qualitaetsheft/assets/sources/linter-dashboard-before-processed.txt22
-rw-r--r--30-qualitaetsheft/assets/sources/linter-dashboard-before.txt358
-rw-r--r--30-qualitaetsheft/assets/unsubscribe-podcasts.pngbin0 -> 80156 bytes
-rw-r--r--30-qualitaetsheft/qualitaetsheft.tex106
-rw-r--r--30-qualitaetsheft/sections/backend.tex28
-rw-r--r--30-qualitaetsheft/sections/changes.tex67
-rw-r--r--30-qualitaetsheft/sections/codestyle.tex224
-rw-r--r--30-qualitaetsheft/sections/coverage.tex59
-rw-r--r--30-qualitaetsheft/sections/einleitung.tex13
-rw-r--r--30-qualitaetsheft/sections/frontend.tex196
-rw-r--r--30-qualitaetsheft/sections/glossar.tex391
-rw-r--r--30-qualitaetsheft/sections/lasttest.tex105
-rw-r--r--30-qualitaetsheft/sections/problems.tex65
-rw-r--r--30-qualitaetsheft/sections/testfaelle.tex182
-rw-r--r--30-qualitaetsheft/sections/tests.tex21
-rw-r--r--30-qualitaetsheft/titlepage.tex75
46 files changed, 3400 insertions, 0 deletions
diff --git a/30-qualitaetsheft/.gitignore b/30-qualitaetsheft/.gitignore
new file mode 100644
index 0000000..b1b3dda
--- /dev/null
+++ b/30-qualitaetsheft/.gitignore
@@ -0,0 +1,305 @@
+## Core latex/pdflatex auxiliary files:
+*.aux
+*.lof
+*.log
+*.lot
+*.fls
+*.out
+*.toc
+*.fmt
+*.fot
+*.cb
+*.cb2
+.*.lb
+
+## Intermediate documents:
+*.dvi
+*.xdv
+*-converted-to.*
+# these rules might exclude image files for figures etc.
+# *.ps
+# *.eps
+*.pdf
+!assets/*.pdf
+
+## Generated if empty string is given at "Please type another file name for output:"
+.pdf
+
+## Bibliography auxiliary files (bibtex/biblatex/biber):
+*.bbl
+*.bcf
+*.blg
+*-blx.aux
+*-blx.bib
+*.run.xml
+
+## Build tool auxiliary files:
+*.fdb_latexmk
+*.synctex
+*.synctex(busy)
+*.synctex.gz
+*.synctex.gz(busy)
+*.pdfsync
+
+## Build tool directories for auxiliary files
+# latexrun
+latex.out/
+
+## Auxiliary and intermediate files from other packages:
+# algorithms
+*.alg
+*.loa
+
+# achemso
+acs-*.bib
+
+# amsthm
+*.thm
+
+# beamer
+*.nav
+*.pre
+*.snm
+*.vrb
+
+# changes
+*.soc
+
+# comment
+*.cut
+
+# cprotect
+*.cpt
+
+# elsarticle (documentclass of Elsevier journals)
+*.spl
+
+# endnotes
+*.ent
+
+# fixme
+*.lox
+
+# feynmf/feynmp
+*.mf
+*.mp
+*.t[1-9]
+*.t[1-9][0-9]
+*.tfm
+
+#(r)(e)ledmac/(r)(e)ledpar
+*.end
+*.?end
+*.[1-9]
+*.[1-9][0-9]
+*.[1-9][0-9][0-9]
+*.[1-9]R
+*.[1-9][0-9]R
+*.[1-9][0-9][0-9]R
+*.eledsec[1-9]
+*.eledsec[1-9]R
+*.eledsec[1-9][0-9]
+*.eledsec[1-9][0-9]R
+*.eledsec[1-9][0-9][0-9]
+*.eledsec[1-9][0-9][0-9]R
+
+# glossaries
+*.acn
+*.acr
+*.glg
+*.glo
+*.gls
+*.glsdefs
+*.lzo
+*.lzs
+*.slg
+*.slo
+*.sls
+
+# uncomment this for glossaries-extra (will ignore makeindex's style files!)
+*.ist
+
+# gnuplot
+*.gnuplot
+*.table
+
+# gnuplottex
+*-gnuplottex-*
+
+# gregoriotex
+*.gaux
+*.glog
+*.gtex
+
+# htlatex
+*.4ct
+*.4tc
+*.idv
+*.lg
+*.trc
+*.xref
+
+# hyperref
+*.brf
+
+# knitr
+*-concordance.tex
+# TODO Uncomment the next line if you use knitr and want to ignore its generated tikz files
+# *.tikz
+*-tikzDictionary
+
+# listings
+*.lol
+
+# luatexja-ruby
+*.ltjruby
+
+# makeidx
+*.idx
+*.ilg
+*.ind
+
+# minitoc
+*.maf
+*.mlf
+*.mlt
+*.mtc[0-9]*
+*.slf[0-9]*
+*.slt[0-9]*
+*.stc[0-9]*
+
+# minted
+_minted*
+*.pyg
+
+# morewrites
+*.mw
+
+# newpax
+*.newpax
+
+# nomencl
+*.nlg
+*.nlo
+*.nls
+
+# pax
+*.pax
+
+# pdfpcnotes
+*.pdfpc
+
+# sagetex
+*.sagetex.sage
+*.sagetex.py
+*.sagetex.scmd
+
+# scrwfile
+*.wrt
+
+# svg
+svg-inkscape/
+
+# sympy
+*.sout
+*.sympy
+sympy-plots-for-*.tex/
+
+# pdfcomment
+*.upa
+*.upb
+
+# pythontex
+*.pytxcode
+pythontex-files-*/
+
+# tcolorbox
+*.listing
+
+# thmtools
+*.loe
+
+# TikZ & PGF
+*.dpth
+*.md5
+*.auxlock
+
+# titletoc
+*.ptc
+
+# todonotes
+*.tdo
+
+# vhistory
+*.hst
+*.ver
+
+# easy-todo
+*.lod
+
+# xcolor
+*.xcp
+
+# xmpincl
+*.xmpi
+
+# xindy
+*.xdy
+
+# xypic precompiled matrices and outlines
+*.xyc
+*.xyd
+
+# endfloat
+*.ttt
+*.fff
+
+# Latexian
+TSWLatexianTemp*
+
+## Editors:
+# WinEdt
+*.bak
+*.sav
+
+# Texpad
+.texpadtmp
+
+# LyX
+*.lyx~
+
+# Kile
+*.backup
+
+# gummi
+.*.swp
+
+# KBibTeX
+*~[0-9]*
+
+# TeXnicCenter
+*.tps
+
+# auto folder when using emacs and auctex
+./auto/*
+*.el
+
+# expex forward references with \gathertags
+*-tags.tex
+
+# standalone packages
+*.sta
+
+# Makeindex log files
+*.lpz
+
+# xwatermark package
+*.xwm
+
+# REVTeX puts footnotes in the bibliography by default, unless the nofootinbib
+# option is specified. Footnotes are the stored in a file with suffix Notes.bib.
+# Uncomment the next line to have this generated file ignored.
+#*Notes.bib
+
+# Gannt Diagramm als EPS ignorieren
+assets/gantt.eps \ No newline at end of file
diff --git a/30-qualitaetsheft/.gitlab-ci.yml b/30-qualitaetsheft/.gitlab-ci.yml
new file mode 100644
index 0000000..27d0617
--- /dev/null
+++ b/30-qualitaetsheft/.gitlab-ci.yml
@@ -0,0 +1,36 @@
+plantuml:
+ stage: .pre
+ image:
+ name: plantuml/plantuml
+ entrypoint: [""]
+ script:
+ - java -jar plantuml.jar -tpdf assets/diagrams/*.puml
+ artifacts:
+ paths:
+ - assets
+
+tex:
+ stage: build
+ image: texlive/texlive
+ script:
+ - mkdir public
+ - make tex
+ - mv *.pdf public
+ artifacts:
+ paths:
+ - public
+ dependencies:
+ - plantuml
+
+pages:
+ stage: deploy
+ script:
+ - echo Hello, World!
+ artifacts:
+ paths:
+ - public
+ rules:
+ - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
+ dependencies:
+ - tex
+
diff --git a/30-qualitaetsheft/.latexmkrc b/30-qualitaetsheft/.latexmkrc
new file mode 100644
index 0000000..bec2b38
--- /dev/null
+++ b/30-qualitaetsheft/.latexmkrc
@@ -0,0 +1,7 @@
+# https://tex.stackexchange.com/questions/1226/how-to-make-latexmk-use-makeglossaries
+add_cus_dep('glo', 'gls', 0, 'makeglo2gls');
+add_cus_dep('acn', 'acr', 0, 'makeglo2gls');
+sub makeglo2gls {
+ system("makeglossaries $_[0]");
+}
+
diff --git a/30-qualitaetsheft/Makefile b/30-qualitaetsheft/Makefile
new file mode 100644
index 0000000..292ac93
--- /dev/null
+++ b/30-qualitaetsheft/Makefile
@@ -0,0 +1,18 @@
+MAIN = qualitaetsheft
+FLAGS = -pdf
+
+all: clean compile
+compile: diagram tex
+clean: clean-diagram clean-tex
+
+dev:
+ latexmk $(FLAGS) -pvc $(MAIN)
+tex:
+ latexmk $(FLAGS) $(MAIN)
+diagram:
+ java -jar plantuml.jar -tpdf assets/diagrams/*.puml
+clean-tex:
+ latexmk -C
+clean-diagram:
+ find assets/diagrams -type f -not -name '*.puml' -delete
+
diff --git a/30-qualitaetsheft/README.md b/30-qualitaetsheft/README.md
new file mode 100644
index 0000000..2c08f29
--- /dev/null
+++ b/30-qualitaetsheft/README.md
@@ -0,0 +1,31 @@
+# Entwurfsheft
+
+> Systemdesign und -spezifikation
+
+## Diagramme
+
+Installiere [PlantUML](https://plantuml.com/starting) (oder über einen Paketmanager).
+
+Arbeiten an Diagrammen mit Echtzeit-Vorschau (Anzeige wird beim Speichern der
+puml-Datei aktualisiert):
+```sh
+java -jar plantuml.jar -gui assets/classdiagram.puml
+
+# bzw (wenn zu PATH hinzugefügt oder Linux)
+plantuml -gui assets/classdiagram.puml
+```
+
+Bauen der Diagramme:
+```sh
+java -jar plantuml.jar -teps assets/*.puml
+
+# bzw (wenn zu PATH hinzugefügt oder Linux)
+plantuml -teps assets/*.puml
+
+# bzw über Makefile (Linux)
+make diagram
+
+# oder zum Erstellen von Diagrammen und LaTeX:
+make
+```
+
diff --git a/30-qualitaetsheft/assets/.gitignore b/30-qualitaetsheft/assets/.gitignore
new file mode 100644
index 0000000..16252a4
--- /dev/null
+++ b/30-qualitaetsheft/assets/.gitignore
@@ -0,0 +1,3 @@
+diagrams/*
+!diagrams/*.puml
+
diff --git a/30-qualitaetsheft/assets/ChangedPassword.PNG b/30-qualitaetsheft/assets/ChangedPassword.PNG
new file mode 100644
index 0000000..254bf66
--- /dev/null
+++ b/30-qualitaetsheft/assets/ChangedPassword.PNG
Binary files differ
diff --git a/30-qualitaetsheft/assets/KIT_Deckblatt.pdf b/30-qualitaetsheft/assets/KIT_Deckblatt.pdf
new file mode 100644
index 0000000..7de8ed4
--- /dev/null
+++ b/30-qualitaetsheft/assets/KIT_Deckblatt.pdf
Binary files differ
diff --git a/30-qualitaetsheft/assets/WrongUser.PNG b/30-qualitaetsheft/assets/WrongUser.PNG
new file mode 100644
index 0000000..16614d4
--- /dev/null
+++ b/30-qualitaetsheft/assets/WrongUser.PNG
Binary files differ
diff --git a/30-qualitaetsheft/assets/coverage/authenticationService.png b/30-qualitaetsheft/assets/coverage/authenticationService.png
new file mode 100644
index 0000000..4ad91e1
--- /dev/null
+++ b/30-qualitaetsheft/assets/coverage/authenticationService.png
Binary files differ
diff --git a/30-qualitaetsheft/assets/coverage/episodeActionService.png b/30-qualitaetsheft/assets/coverage/episodeActionService.png
new file mode 100644
index 0000000..c81f26f
--- /dev/null
+++ b/30-qualitaetsheft/assets/coverage/episodeActionService.png
Binary files differ
diff --git a/30-qualitaetsheft/assets/coverage/server.png b/30-qualitaetsheft/assets/coverage/server.png
new file mode 100644
index 0000000..d28917a
--- /dev/null
+++ b/30-qualitaetsheft/assets/coverage/server.png
Binary files differ
diff --git a/30-qualitaetsheft/assets/coverage/subscriptionsService.png b/30-qualitaetsheft/assets/coverage/subscriptionsService.png
new file mode 100644
index 0000000..fdb7c9b
--- /dev/null
+++ b/30-qualitaetsheft/assets/coverage/subscriptionsService.png
Binary files differ
diff --git a/30-qualitaetsheft/assets/coverage/util.png b/30-qualitaetsheft/assets/coverage/util.png
new file mode 100644
index 0000000..823cd9e
--- /dev/null
+++ b/30-qualitaetsheft/assets/coverage/util.png
Binary files differ
diff --git a/30-qualitaetsheft/assets/lasttest/goodSpecsApdex.png b/30-qualitaetsheft/assets/lasttest/goodSpecsApdex.png
new file mode 100644
index 0000000..17a7031
--- /dev/null
+++ b/30-qualitaetsheft/assets/lasttest/goodSpecsApdex.png
Binary files differ
diff --git a/30-qualitaetsheft/assets/lasttest/goodSpecsResponse.png b/30-qualitaetsheft/assets/lasttest/goodSpecsResponse.png
new file mode 100644
index 0000000..ca737f4
--- /dev/null
+++ b/30-qualitaetsheft/assets/lasttest/goodSpecsResponse.png
Binary files differ
diff --git a/30-qualitaetsheft/assets/lasttest/goodSpecsTable.png b/30-qualitaetsheft/assets/lasttest/goodSpecsTable.png
new file mode 100644
index 0000000..c247933
--- /dev/null
+++ b/30-qualitaetsheft/assets/lasttest/goodSpecsTable.png
Binary files differ
diff --git a/30-qualitaetsheft/assets/lasttest/minimumSpecsApdex.png b/30-qualitaetsheft/assets/lasttest/minimumSpecsApdex.png
new file mode 100644
index 0000000..f326e01
--- /dev/null
+++ b/30-qualitaetsheft/assets/lasttest/minimumSpecsApdex.png
Binary files differ
diff --git a/30-qualitaetsheft/assets/lasttest/minimumSpecsResponse.png b/30-qualitaetsheft/assets/lasttest/minimumSpecsResponse.png
new file mode 100644
index 0000000..c6d27ff
--- /dev/null
+++ b/30-qualitaetsheft/assets/lasttest/minimumSpecsResponse.png
Binary files differ
diff --git a/30-qualitaetsheft/assets/lasttest/minimumSpecsTable.png b/30-qualitaetsheft/assets/lasttest/minimumSpecsTable.png
new file mode 100644
index 0000000..db077cd
--- /dev/null
+++ b/30-qualitaetsheft/assets/lasttest/minimumSpecsTable.png
Binary files differ
diff --git a/30-qualitaetsheft/assets/logo.pdf b/30-qualitaetsheft/assets/logo.pdf
new file mode 100644
index 0000000..91fd334
--- /dev/null
+++ b/30-qualitaetsheft/assets/logo.pdf
Binary files differ
diff --git a/30-qualitaetsheft/assets/logo.svg b/30-qualitaetsheft/assets/logo.svg
new file mode 100644
index 0000000..1609066
--- /dev/null
+++ b/30-qualitaetsheft/assets/logo.svg
@@ -0,0 +1,211 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ version="1.2"
+ width="87.589989mm"
+ height="52.16547mm"
+ viewBox="0 0 8758.9989 5216.547"
+ preserveAspectRatio="xMidYMid"
+ fill-rule="evenodd"
+ stroke-width="28.222"
+ stroke-linejoin="round"
+ xml:space="preserve"
+ id="svg206"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <defs
+ class="ClipPathGroup"
+ id="defs8" />
+ <defs
+ id="defs51"><font
+ id="EmbeddedFont_1"
+ horiz-adv-x="2048"
+ horiz-origin-x="0"
+ horiz-origin-y="0"
+ vert-origin-x="512"
+ vert-origin-y="768"
+ vert-adv-y="1024">
+ <font-face
+ font-family="Noto Sans Display Light embedded"
+ units-per-em="2048"
+ font-weight="normal"
+ font-style="normal"
+ ascent="2170"
+ descent="609"
+ id="font-face10" />
+ <missing-glyph
+ horiz-adv-x="2048"
+ d="M 0,0 L 2047,0 2047,2047 0,2047 0,0 Z"
+ id="missing-glyph12" />
+ <glyph
+ unicode="y"
+ horiz-adv-x="927"
+ d="M 2,1089 L 127,1089 367,413 C 388,352 407,298 422,250 437,203 449,161 457,124 L 463,124 C 471,156 483,196 498,246 513,296 530,350 551,409 L 786,1089 913,1089 453,-193 C 418,-290 377,-364 328,-416 279,-468 213,-494 131,-494 107,-494 84,-493 63,-490 43,-487 25,-482 8,-476 L 8,-377 C 23,-383 40,-387 57,-391 75,-394 95,-396 117,-396 170,-396 214,-378 249,-342 284,-307 314,-252 340,-179 L 403,4 2,1089 Z"
+ id="glyph14" />
+ <glyph
+ unicode="t"
+ horiz-adv-x="610"
+ d="M 465,80 C 494,80 521,82 547,87 573,91 595,97 614,105 L 614,11 C 594,3 569,-5 541,-11 512,-17 481,-20 449,-20 363,-20 296,5 249,56 202,106 178,189 178,304 L 178,996 27,996 27,1061 178,1100 219,1350 295,1350 295,1090 608,1090 608,996 295,996 295,310 C 295,157 352,80 465,80 Z"
+ id="glyph16" />
+ <glyph
+ unicode="s"
+ horiz-adv-x="742"
+ d="M 817,289 C 817,191 782,115 713,61 643,7 545,-20 418,-20 347,-20 284,-14 228,-1 173,12 126,29 88,50 L 88,162 C 134,138 186,118 244,102 301,86 360,78 420,78 520,78 592,96 636,133 680,169 702,218 702,281 702,341 679,387 632,419 585,451 515,484 422,519 359,542 303,565 255,589 207,613 169,643 142,680 116,717 102,768 102,832 102,919 136,987 204,1037 271,1086 361,1110 473,1110 535,1110 592,1104 646,1092 700,1080 750,1063 795,1043 L 754,946 C 713,964 667,980 617,993 568,1006 518,1012 469,1012 388,1012 326,997 283,967 239,937 217,893 217,836 217,792 228,758 249,733 270,707 301,686 342,668 383,650 433,630 492,609 553,585 608,562 657,537 707,512 745,481 774,443 803,405 817,353 817,289 Z"
+ id="glyph18" />
+ <glyph
+ unicode="r"
+ horiz-adv-x="583"
+ d="M 596,1108 C 646,1108 692,1102 733,1091 L 717,983 C 674,995 632,1001 590,1001 497,1001 423,964 368,890 312,817 285,719 285,598 L 285,-1 168,-1 168,1089 266,1089 279,886 285,886 C 311,948 350,1000 402,1043 455,1086 520,1108 596,1108 Z"
+ id="glyph20" />
+ <glyph
+ unicode="o"
+ horiz-adv-x="927"
+ d="M 1030,547 C 1030,433 1012,333 976,248 940,164 887,98 818,51 749,4 665,-20 565,-20 471,-20 390,3 322,50 253,96 201,162 164,247 127,333 109,433 109,547 109,723 150,861 232,961 315,1061 429,1110 575,1110 672,1110 755,1087 822,1040 890,993 941,927 977,842 1012,757 1030,659 1030,547 Z M 229,547 C 229,407 257,294 312,208 368,123 453,80 567,80 685,80 771,123 826,209 882,295 909,408 909,547 909,637 898,717 875,787 851,856 815,911 766,951 717,990 653,1010 573,1010 459,1010 373,969 315,887 258,805 229,692 229,547 Z"
+ id="glyph22" />
+ <glyph
+ unicode="n"
+ horiz-adv-x="847"
+ d="M 633,1110 C 749,1110 838,1078 900,1014 962,950 993,850 993,713 L 993,1 877,1 877,705 C 877,809 854,885 810,935 766,985 701,1010 616,1010 395,1010 285,871 285,594 L 285,1 168,1 168,1090 262,1090 279,901 287,901 C 314,962 357,1011 416,1051 474,1091 547,1110 633,1110 Z"
+ id="glyph24" />
+ <glyph
+ unicode="m"
+ horiz-adv-x="1430"
+ d="M 1245,1110 C 1348,1110 1427,1080 1485,1018 1542,957 1571,860 1571,727 L 1571,1 1454,1 1454,723 C 1454,820 1434,892 1393,939 1352,986 1296,1010 1227,1010 1130,1010 1056,980 1005,919 953,858 928,764 928,637 L 928,1 811,1 811,723 C 811,820 791,892 750,939 709,986 653,1010 584,1010 487,1010 413,978 361,914 310,850 285,751 285,619 L 285,1 168,1 168,1090 262,1090 279,918 287,918 C 313,971 352,1016 403,1054 455,1092 521,1110 600,1110 675,1110 739,1093 791,1059 842,1025 879,975 899,908 L 907,908 C 936,972 980,1022 1038,1057 1097,1093 1166,1110 1245,1110 Z"
+ id="glyph26" />
+ <glyph
+ unicode="i"
+ horiz-adv-x="187"
+ d="M 227,1493 C 279,1493 305,1464 305,1405 305,1345 279,1315 227,1315 175,1315 150,1345 150,1405 150,1464 175,1493 227,1493 Z M 285,1090 L 285,0 168,0 168,1090 285,1090 Z"
+ id="glyph28" />
+ <glyph
+ unicode="h"
+ horiz-adv-x="847"
+ d="M 285,1059 C 285,1031 284,1003 283,977 281,951 279,926 276,901 L 285,901 C 312,962 355,1011 413,1051 471,1091 543,1110 629,1110 746,1110 836,1078 899,1014 962,950 993,850 993,713 L 993,1 877,1 877,705 C 877,809 854,885 810,935 766,985 701,1010 616,1010 395,1010 285,871 285,594 L 285,1 168,1 168,1557 285,1557 285,1059 Z"
+ id="glyph30" />
+ <glyph
+ unicode="f"
+ horiz-adv-x="689"
+ d="M 575,995 L 332,995 332,-1 213,-1 213,995 27,995 27,1058 213,1093 213,1202 C 213,1445 316,1566 522,1566 559,1566 593,1563 623,1557 653,1551 680,1544 705,1536 L 678,1439 C 655,1448 630,1454 603,1460 577,1465 550,1468 524,1468 456,1468 407,1447 377,1405 347,1362 332,1295 332,1202 L 332,1089 575,1089 575,995 Z"
+ id="glyph32" />
+ <glyph
+ unicode="e"
+ horiz-adv-x="874"
+ d="M 559,1110 C 646,1110 720,1089 779,1046 839,1003 883,944 913,869 943,794 958,708 958,611 L 958,531 229,531 C 231,386 262,275 325,198 387,121 476,82 592,82 656,82 712,88 759,100 806,111 858,130 915,156 L 915,50 C 865,25 814,7 764,-4 713,-15 655,-20 588,-20 434,-20 315,30 232,129 150,229 109,365 109,537 109,648 126,746 162,832 197,918 249,986 315,1036 382,1085 464,1110 559,1110 Z M 559,1012 C 465,1012 389,979 333,912 276,845 243,750 233,627 L 838,627 C 838,742 815,835 769,906 723,977 653,1012 559,1012 Z"
+ id="glyph34" />
+ <glyph
+ unicode="d"
+ horiz-adv-x="900"
+ d="M 535,-20 C 398,-20 293,27 219,120 145,214 109,352 109,535 109,722 147,865 224,963 301,1061 408,1110 545,1110 629,1110 698,1090 752,1050 805,1010 845,961 872,904 L 881,904 C 879,935 878,970 876,1009 873,1048 872,1084 872,1117 L 872,1557 989,1557 989,0 895,0 879,191 872,191 C 845,132 805,82 751,41 697,0 625,-20 535,-20 Z M 553,80 C 669,80 752,119 801,195 850,271 875,382 875,527 L 875,545 C 875,695 850,810 801,890 752,970 671,1010 559,1010 451,1010 369,969 313,886 257,804 229,686 229,533 229,385 256,273 309,196 363,119 444,80 553,80 Z"
+ id="glyph36" />
+ <glyph
+ unicode="c"
+ horiz-adv-x="768"
+ d="M 580,-20 C 429,-20 313,29 231,127 150,226 109,363 109,539 109,662 129,766 170,850 211,935 269,1000 343,1044 417,1088 504,1110 602,1110 651,1110 698,1106 742,1096 787,1087 825,1074 858,1057 L 825,957 C 791,972 754,984 714,993 673,1002 636,1006 600,1006 481,1006 390,964 326,881 261,798 229,685 229,541 229,405 258,294 314,210 371,126 459,84 580,84 630,84 678,90 723,101 768,112 809,125 846,142 L 846,37 C 812,20 773,6 729,-5 685,-15 636,-20 580,-20 Z"
+ id="glyph38" />
+ <glyph
+ unicode="a"
+ horiz-adv-x="822"
+ d="M 535,1108 C 651,1108 737,1078 795,1018 852,958 881,863 881,734 L 881,0 793,0 772,185 766,185 C 729,123 684,74 631,36 578,-1 503,-20 408,-20 311,-20 233,6 176,59 119,111 90,187 90,285 90,394 132,477 215,533 298,589 420,621 580,629 L 764,639 764,715 C 764,822 744,897 705,942 665,987 606,1010 528,1010 477,1010 426,1002 378,987 329,972 281,953 231,928 L 195,1022 C 242,1047 295,1067 352,1084 410,1100 470,1108 535,1108 Z M 594,543 C 466,536 370,512 307,470 244,429 213,367 213,285 213,217 232,165 271,131 310,96 363,78 430,78 535,78 617,111 676,176 735,240 764,330 764,445 L 764,551 594,543 Z"
+ id="glyph40" />
+ <glyph
+ unicode="S"
+ horiz-adv-x="875"
+ d="M 956,381 C 956,294 936,220 894,160 852,100 796,55 724,25 652,-5 571,-20 479,-20 396,-20 324,-14 262,-2 201,11 147,26 102,46 L 102,162 C 152,142 209,124 273,109 338,94 409,87 485,87 589,87 673,110 738,158 803,206 836,278 836,373 836,431 823,478 798,515 772,553 734,586 682,614 630,642 565,670 485,699 410,726 345,757 291,791 236,825 194,868 164,919 134,970 119,1035 119,1112 119,1192 138,1259 176,1314 214,1369 267,1411 333,1440 399,1469 474,1483 559,1483 626,1483 689,1476 750,1463 810,1449 868,1430 924,1405 L 883,1303 C 772,1352 663,1377 555,1377 462,1377 386,1354 328,1310 269,1266 240,1200 240,1114 240,1052 252,1001 278,964 303,926 340,895 389,869 438,843 498,817 567,791 648,762 717,731 775,698 833,664 878,623 909,573 941,523 956,459 956,381 Z"
+ id="glyph42" />
+ <glyph
+ unicode="P"
+ horiz-adv-x="848"
+ d="M 539,1462 C 869,1462 1034,1325 1034,1049 1034,908 992,798 907,718 823,638 690,598 510,598 L 311,598 311,0 193,0 193,1462 539,1462 Z M 528,1358 L 311,1358 311,702 498,702 C 629,702 730,727 803,776 875,825 911,914 911,1043 911,1152 880,1232 818,1282 756,1333 659,1358 528,1358 Z"
+ id="glyph44" />
+ <glyph
+ unicode="E"
+ horiz-adv-x="769"
+ d="M 950,0 L 193,0 193,1462 950,1462 950,1356 311,1356 311,821 913,821 913,715 311,715 311,107 950,107 950,0 Z"
+ id="glyph46" />
+ <glyph
+ unicode=" "
+ horiz-adv-x="503"
+ id="glyph48" />
+ </font></defs>
+ <defs
+ class="TextShapeIndex"
+ id="defs55" />
+ <defs
+ class="EmbeddedBulletChars"
+ id="defs87" />
+
+ <g
+ id="id10"
+ clip-path="none"
+ transform="translate(-700.00001,-2550)">
+
+ <text
+ class="SVGTextShape"
+ id="text151"
+ x="217.60002"
+ y="-56.506969"
+ style="letter-spacing:4.7625px;word-spacing:104.775px"><tspan
+ class="TextParagraph"
+ font-family="'Noto Sans Display Light', sans-serif"
+ font-size="494px"
+ font-weight="400"
+ id="tspan149"><tspan
+ class="TextPosition"
+ x="650.59998"
+ y="7647.4932"
+ id="tspan147"><tspan
+ fill="#808080"
+ stroke="none"
+ style="white-space:pre"
+ id="tspan145"
+ dx="2.1199999">Podcast Synchronisation made Efficient</tspan></tspan></tspan></text>
+ </g><g
+ id="g1277"
+ transform="translate(-700.00001,-2550)"><path
+ id="path131-3"
+ d="m 6694.0006,4763 c -559.5515,4.407 -980.3924,428.0893 -986.038,985.9863 18.2894,552.8957 454.3127,974.1166 989.0352,986.0379 v -235.0244 c -406.8751,-27.3888 -715.1078,-362.1649 -719.0259,-748.0163 12.7874,-421.0793 236.9242,-746.3999 750.0318,-749.98 895.0688,1.4728 1915.5158,0 2730.9957,0 V 4763 Z"
+ style="fill:#0084d1;fill-opacity:1"
+ clip-path="none" /><path
+ id="path131"
+ d="m 6685.0183,2562.996 c -559.5515,4.407 -980.3924,428.0893 -986.038,985.9863 18.2894,552.8957 454.3127,974.1167 989.0352,986.038 v -235.0244 c -406.8751,-27.3888 -715.1078,-362.165 -719.0259,-748.0164 12.7874,-421.0792 236.9242,-746.3998 750.0318,-749.98 895.0688,1.4728 1915.5158,0 2730.996,0 V 2562.996 Z"
+ style="fill:#0084d1;fill-opacity:1"
+ clip-path="none" /></g><g
+ id="g1263"
+ transform="translate(-700.00001,-2550)"><path
+ fill="none"
+ stroke="#069a2e"
+ stroke-width="265"
+ stroke-linejoin="round"
+ d="m 2793,5962 c 1283,0 429,-2762 1712,-2762"
+ id="path124" /><path
+ id="path110-6"
+ d="M 3198.0212,6550 V 6300.0411 H 2448.0411 V 6050.0305 5550.0094 H 2198.0305 V 6300.0411 6550 H 2448.0411 2698 Z"
+ style="fill:#069a2e;fill-opacity:1" /><path
+ id="path110"
+ d="m 4111.997,2550.0252 v 249.9589 h 749.9801 v 250.0106 500.0211 h 250.0106 v -750.0317 -249.9589 h -250.0106 -249.9589 z"
+ style="fill:#069a2e;fill-opacity:1" /></g>
+ <g
+ id="g1249"
+ transform="translate(-700.00001,-2550)"><path
+ fill="#ff8000"
+ stroke="none"
+ d="M 2215,4164 C 2412.6918,3832.6035 2379.3124,3383.7591 2135.4189,3084.8193 1956.8564,2857.4026 1671.3097,2718.8851 1382,2721 c 0,-52.6667 0,-105.3333 0,-158 -60.1303,-1.0792 190.6585,-1.2724 121.9814,2.7933 434.6311,30.3756 832.6257,336.7309 974.9655,748.2365 148.7336,402.6249 41.0263,883.7477 -266.0719,1183.8452 C 1996.6852,4716.1853 1689.0048,4838.6187 1382,4830 c 0,-61.6667 0,-123.3333 0,-185 338.199,2.9253 666.226,-186.816 833,-481 z"
+ id="path193" /><path
+ fill="#ff8000"
+ stroke="none"
+ d="m 1936,3979 c 175.8129,-283.3241 59.7943,-700.6319 -239.8255,-849.407 -94.2713,-50.9942 -201.887,-77.9344 -309.1745,-74.593 0,-57 0,-114 0,-171 396.3865,-24.0968 777.5367,297.6517 818.5878,693.1841 44.0348,337.5467 -149.4277,694.9971 -466.4953,826.9493 -110.1027,49.0687 -231.5272,73.543 -352.0925,67.8666 0,-61.6667 0,-123.3333 0,-185 220.6353,7.5804 440.8554,-115.3286 549,-308 z"
+ id="path186" /><path
+ fill="#ff8000"
+ stroke="none"
+ d="m 1659,3822 c 86.3933,-138.0398 18.2474,-344.669 -134.6962,-402.3205 C 1483.44,3402.2177 1438.3524,3394.2432 1394,3398 c 0,-56.6667 0,-113.3333 0,-170 223.1964,-19.6143 444.7886,153.3254 478.4886,375.1817 32.646,181.6951 -54.6854,381.4331 -217.3127,472.2205 -78.2316,46.131 -170.3991,69.3119 -261.1759,62.5978 0,-58.3333 0,-116.6667 0,-175 105.6736,9.5509 212.8962,-49.2218 265,-141 z"
+ id="path179" /><rect
+ class="BoundingBox"
+ stroke="none"
+ fill="none"
+ x="700"
+ y="2550"
+ width="501"
+ height="4001"
+ id="rect136"
+ style="fill:#ff8000;fill-opacity:1" /></g>
+
+</svg>
diff --git a/30-qualitaetsheft/assets/notifications.png b/30-qualitaetsheft/assets/notifications.png
new file mode 100644
index 0000000..1a5b81d
--- /dev/null
+++ b/30-qualitaetsheft/assets/notifications.png
Binary files differ
diff --git a/30-qualitaetsheft/assets/select-subscriptions.png b/30-qualitaetsheft/assets/select-subscriptions.png
new file mode 100644
index 0000000..0595397
--- /dev/null
+++ b/30-qualitaetsheft/assets/select-subscriptions.png
Binary files differ
diff --git a/30-qualitaetsheft/assets/sources/checkstyle-after-processed.txt b/30-qualitaetsheft/assets/sources/checkstyle-after-processed.txt
new file mode 100644
index 0000000..8bb59fa
--- /dev/null
+++ b/30-qualitaetsheft/assets/sources/checkstyle-after-processed.txt
@@ -0,0 +1 @@
+1 (design) HideUtilityClassConstructor
diff --git a/30-qualitaetsheft/assets/sources/checkstyle-after.txt b/30-qualitaetsheft/assets/sources/checkstyle-after.txt
new file mode 100644
index 0000000..cec00d5
--- /dev/null
+++ b/30-qualitaetsheft/assets/sources/checkstyle-after.txt
@@ -0,0 +1,22 @@
+[INFO] Scanning for projects...
+[INFO]
+[INFO] -----------------------< org.pse-squared:server >-----------------------
+[INFO] Building server 0.0.1-SNAPSHOT
+[INFO] --------------------------------[ jar ]---------------------------------
+[INFO]
+[INFO] --- maven-checkstyle-plugin:3.2.1:check (default-cli) @ server ---
+[INFO] There is 1 error reported by Checkstyle 9.3 with sun_checks.xml ruleset.
+[ERROR] src/main/java/org/psesquared/server/ServerApplication.java:[12,1] (design) HideUtilityClassConstructor: Hilfsklassen sollten keinen Standard-Konstruktur und keinen als public deklarierten Konstruktor haben.
+[INFO] ------------------------------------------------------------------------
+[INFO] BUILD FAILURE
+[INFO] ------------------------------------------------------------------------
+[INFO] Total time: 14.432 s
+[INFO] Finished at: 2023-03-18T08:30:11+01:00
+[INFO] ------------------------------------------------------------------------
+[ERROR] Failed to execute goal org.apache.maven.plugins:maven-checkstyle-plugin:3.2.1:check (default-cli) on project server: You have 1 Checkstyle violation. -> [Help 1]
+[ERROR]
+[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
+[ERROR] Re-run Maven using the -X switch to enable full debug logging.
+[ERROR]
+[ERROR] For more information about the errors and possible solutions, please read the following articles:
+[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
diff --git a/30-qualitaetsheft/assets/sources/checkstyle-before-processed.txt b/30-qualitaetsheft/assets/sources/checkstyle-before-processed.txt
new file mode 100644
index 0000000..3a5af1a
--- /dev/null
+++ b/30-qualitaetsheft/assets/sources/checkstyle-before-processed.txt
@@ -0,0 +1,23 @@
+285 (sizes) LineLength
+143 (misc) FinalParameters
+101 (javadoc) JavadocVariable
+83 (javadoc) JavadocStyle
+43 (design) DesignForExtension
+39 (javadoc) MissingJavadocMethod
+26 (regexp) RegexpSingleline
+15 (whitespace) WhitespaceAround
+13 (javadoc) JavadocPackage
+10 (whitespace) OperatorWrap
+10 (javadoc) JavadocType
+7 (imports) AvoidStarImport
+6 (coding) MagicNumber
+4 (javadoc) JavadocMethod
+3 (coding) HiddenField
+2 (javadoc) InvalidJavadocPosition
+2 (design) HideUtilityClassConstructor
+2 (blocks) RightCurly
+1 (whitespace) WhitespaceAfter
+1 (whitespace) FileTabCharacter
+1 (misc) NewlineAtEndOfFile
+1 (misc) ArrayTypeStyle
+1 (imports) UnusedImports
diff --git a/30-qualitaetsheft/assets/sources/checkstyle-before.txt b/30-qualitaetsheft/assets/sources/checkstyle-before.txt
new file mode 100644
index 0000000..abc9f4f
--- /dev/null
+++ b/30-qualitaetsheft/assets/sources/checkstyle-before.txt
@@ -0,0 +1,820 @@
+[INFO] Scanning for projects...
+[INFO]
+[INFO] -----------------------< org.pse-squared:server >-----------------------
+[INFO] Building server 0.0.1-SNAPSHOT
+[INFO] --------------------------------[ jar ]---------------------------------
+[INFO]
+[INFO] --- maven-checkstyle-plugin:3.2.1:check (default-cli) @ server ---
+[INFO] There are 799 errors reported by Checkstyle 9.3 with sun_checks.xml ruleset.
+[ERROR] src/main/java/org/psesquared/server/config/AuthenticationValidatorInterceptor.java:[1] (javadoc) JavadocPackage: Es fehlt eine package-info.java.
+[ERROR] src/main/java/org/psesquared/server/config/AuthenticationValidatorInterceptor.java:[15,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/config/AuthenticationValidatorInterceptor.java:[16,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/config/AuthenticationValidatorInterceptor.java:[17,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/config/AuthenticationValidatorInterceptor.java:[18,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/config/AuthenticationValidatorInterceptor.java:[20,5] (design) DesignForExtension: Klasse 'AuthenticationValidatorInterceptor' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'preHandle' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'AuthenticationValidatorInterceptor' final oder die Methode 'preHandle' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen.
+[ERROR] src/main/java/org/psesquared/server/config/AuthenticationValidatorInterceptor.java:[21,30] (misc) FinalParameters: Der Parameter request sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/config/AuthenticationValidatorInterceptor.java:[22,13] (misc) FinalParameters: Der Parameter response sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/config/AuthenticationValidatorInterceptor.java:[23,13] (misc) FinalParameters: Der Parameter handler sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/config/AuthenticationValidatorInterceptor.java:[25] (sizes) LineLength: Zeile ist 81 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/config/AuthenticationValidatorInterceptor.java:[26] (sizes) LineLength: Zeile ist 113 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/config/AuthenticationValidatorInterceptor.java:[44,48] (misc) FinalParameters: Der Parameter request sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/config/AuthenticationValidatorInterceptor.java:[45] (sizes) LineLength: Zeile ist 117 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/config/AuthenticationValidatorInterceptor.java:[46] (sizes) LineLength: Zeile ist 101 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/config/AuthenticationValidatorInterceptor.java:[49] (sizes) LineLength: Zeile ist 90 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/config/SecurityConfigProperties.java:[6] (sizes) LineLength: Zeile ist 87 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/config/SecurityConfigProperties.java:[6,86] (whitespace) WhitespaceAround: Nach '{' fehlt ein Leerzeichen.
+[ERROR] src/main/java/org/psesquared/server/config/SecurityConfigProperties.java:[6,87] (whitespace) WhitespaceAround: Vor '}' fehlt ein Leerzeichen.
+[ERROR] src/main/java/org/psesquared/server/config/EMailConfigProperties.java:[6] (sizes) LineLength: Zeile ist 108 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/config/EMailConfigProperties.java:[6,107] (whitespace) WhitespaceAround: Nach '{' fehlt ein Leerzeichen.
+[ERROR] src/main/java/org/psesquared/server/config/EMailConfigProperties.java:[6,108] (whitespace) WhitespaceAround: Vor '}' fehlt ein Leerzeichen.
+[ERROR] src/main/java/org/psesquared/server/config/SecurityConfig.java:[22,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/config/SecurityConfig.java:[23,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/config/SecurityConfig.java:[24] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/config/SecurityConfig.java:[24,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/config/SecurityConfig.java:[25] (sizes) LineLength: Zeile ist 97 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/config/SecurityConfig.java:[25,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/config/SecurityConfig.java:[27,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/config/SecurityConfig.java:[28,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/config/SecurityConfig.java:[30,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/config/SecurityConfig.java:[30,5] (design) DesignForExtension: Klasse 'SecurityConfig' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'securityFilterChain' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'SecurityConfig' final oder die Methode 'securityFilterChain' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen.
+[ERROR] src/main/java/org/psesquared/server/config/SecurityConfig.java:[31] (sizes) LineLength: Zeile ist 88 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/config/SecurityConfig.java:[31,52] (misc) FinalParameters: Der Parameter http sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/config/SecurityConfig.java:[48] (sizes) LineLength: Zeile ist 91 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/config/SecurityConfig.java:[56,5] (design) DesignForExtension: Klasse 'SecurityConfig' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'corsConfigurationSource' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'SecurityConfig' final oder die Methode 'corsConfigurationSource' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen.
+[ERROR] src/main/java/org/psesquared/server/config/SecurityConfig.java:[63] (sizes) LineLength: Zeile ist 87 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[3,23] (imports) AvoidStarImport: Stern-Importe der Form '.*' sollten vermieden werden - io.jsonwebtoken.*.
+[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[21,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[22] (sizes) LineLength: Zeile ist 92 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[22,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[24,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[26,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[26,5] (design) DesignForExtension: Klasse 'JwtService' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'extractUsername' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'JwtService' final oder die Methode 'extractUsername' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen.
+[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[26,35] (misc) FinalParameters: Der Parameter token sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[30,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[30,5] (design) DesignForExtension: Klasse 'JwtService' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'extractClaim' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'JwtService' final oder die Methode 'extractClaim' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen.
+[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[30,31] (misc) FinalParameters: Der Parameter token sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[30,45] (misc) FinalParameters: Der Parameter claimsResolver sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[36] (regexp) RegexpSingleline: Line has trailing spaces.
+[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[41] (sizes) LineLength: Zeile ist 122 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[41,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[41,5] (design) DesignForExtension: Klasse 'JwtService' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'generateTokenString' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'JwtService' final oder die Methode 'generateTokenString' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen.
+[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[41,39] (misc) FinalParameters: Der Parameter additionalClaims sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[41,77] (misc) FinalParameters: Der Parameter userDetails sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[41,102] (misc) FinalParameters: Der Parameter tokenLifespan sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[46] (sizes) LineLength: Zeile ist 84 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[51,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[51,5] (design) DesignForExtension: Klasse 'JwtService' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'generateAccessTokenString' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'JwtService' final oder die Methode 'generateAccessTokenString' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen.
+[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[53] (sizes) LineLength: Zeile ist 95 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[56,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[56,5] (design) DesignForExtension: Klasse 'JwtService' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'generateUrlTokenString' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'JwtService' final oder die Methode 'generateUrlTokenString' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen.
+[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[57] (sizes) LineLength: Zeile ist 92 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[60,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[60,5] (design) DesignForExtension: Klasse 'JwtService' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'isTokenValid' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'JwtService' final oder die Methode 'isTokenValid' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen.
+[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[60,33] (misc) FinalParameters: Der Parameter token sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[60,47] (misc) FinalParameters: Der Parameter userDetails sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[62] (sizes) LineLength: Zeile ist 84 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[65,36] (misc) FinalParameters: Der Parameter token sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[69,36] (misc) FinalParameters: Der Parameter token sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[73,37] (misc) FinalParameters: Der Parameter token sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[88] (sizes) LineLength: Zeile ist 91 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/config/JwtAuthenticationFilter.java:[26,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/config/JwtAuthenticationFilter.java:[27,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/config/JwtAuthenticationFilter.java:[28] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/config/JwtAuthenticationFilter.java:[28,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/config/JwtAuthenticationFilter.java:[29] (sizes) LineLength: Zeile ist 97 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/config/JwtAuthenticationFilter.java:[29,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/config/JwtAuthenticationFilter.java:[30,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/config/JwtAuthenticationFilter.java:[32,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/config/JwtAuthenticationFilter.java:[33,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/config/JwtAuthenticationFilter.java:[35,5] (design) DesignForExtension: Klasse 'JwtAuthenticationFilter' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'doFilterInternal' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'JwtAuthenticationFilter' final oder die Methode 'doFilterInternal' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen.
+[ERROR] src/main/java/org/psesquared/server/config/JwtAuthenticationFilter.java:[36,37] (misc) FinalParameters: Der Parameter request sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/config/JwtAuthenticationFilter.java:[37,37] (misc) FinalParameters: Der Parameter response sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/config/JwtAuthenticationFilter.java:[38,37] (misc) FinalParameters: Der Parameter filterChain sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/config/JwtAuthenticationFilter.java:[45] (sizes) LineLength: Zeile ist 96 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/config/JwtAuthenticationFilter.java:[54] (sizes) LineLength: Zeile ist 81 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/config/JwtAuthenticationFilter.java:[54,38] (misc) FinalParameters: Der Parameter cookie sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/config/JwtAuthenticationFilter.java:[54,53] (misc) FinalParameters: Der Parameter request sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/config/JwtAuthenticationFilter.java:[68] (sizes) LineLength: Zeile ist 95 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/config/JwtAuthenticationFilter.java:[69,13] (whitespace) WhitespaceAfter: Nach 'if' fehlt ein Leerzeichen.
+[ERROR] src/main/java/org/psesquared/server/config/JwtAuthenticationFilter.java:[70] (sizes) LineLength: Zeile ist 104 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/config/JwtAuthenticationFilter.java:[76] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/config/ApplicationConfig.java:[32] (sizes) LineLength: Zeile ist 98 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/config/ApplicationConfig.java:[32,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/config/ApplicationConfig.java:[34,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/config/ApplicationConfig.java:[36,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/config/ApplicationConfig.java:[36,5] (design) DesignForExtension: Klasse 'ApplicationConfig' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'userDetailsService' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'ApplicationConfig' final oder die Methode 'userDetailsService' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen.
+[ERROR] src/main/java/org/psesquared/server/config/ApplicationConfig.java:[39] (sizes) LineLength: Zeile ist 94 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/config/ApplicationConfig.java:[42,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/config/ApplicationConfig.java:[42,5] (design) DesignForExtension: Klasse 'ApplicationConfig' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'authenticationProvider' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'ApplicationConfig' final oder die Methode 'authenticationProvider' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen.
+[ERROR] src/main/java/org/psesquared/server/config/ApplicationConfig.java:[44] (sizes) LineLength: Zeile ist 81 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/config/ApplicationConfig.java:[50,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/config/ApplicationConfig.java:[50,5] (design) DesignForExtension: Klasse 'ApplicationConfig' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'passwordEncoder' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'ApplicationConfig' final oder die Methode 'passwordEncoder' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen.
+[ERROR] src/main/java/org/psesquared/server/config/ApplicationConfig.java:[55,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/config/ApplicationConfig.java:[55,5] (design) DesignForExtension: Klasse 'ApplicationConfig' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'authenticationManager' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'ApplicationConfig' final oder die Methode 'authenticationManager' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen.
+[ERROR] src/main/java/org/psesquared/server/config/ApplicationConfig.java:[56] (sizes) LineLength: Zeile ist 109 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/config/ApplicationConfig.java:[56,56] (misc) FinalParameters: Der Parameter config sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/config/ApplicationConfig.java:[60,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/config/ApplicationConfig.java:[60,5] (design) DesignForExtension: Klasse 'ApplicationConfig' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'corsConfigurer' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'ApplicationConfig' final oder die Methode 'corsConfigurer' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen.
+[ERROR] src/main/java/org/psesquared/server/config/ApplicationConfig.java:[64,41] (misc) FinalParameters: Der Parameter registry sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/config/ApplicationConfig.java:[73,5] (design) DesignForExtension: Klasse 'ApplicationConfig' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'addInterceptors' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'ApplicationConfig' final oder die Methode 'addInterceptors' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen.
+[ERROR] src/main/java/org/psesquared/server/config/ApplicationConfig.java:[74,33] (misc) FinalParameters: Der Parameter registry sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/model/Subscription.java:[1] (javadoc) JavadocPackage: Es fehlt eine package-info.java.
+[ERROR] src/main/java/org/psesquared/server/model/Subscription.java:[24] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/model/Subscription.java:[33] (sizes) LineLength: Zeile ist 105 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/model/Subscription.java:[36] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/model/Subscription.java:[45] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/model/Subscription.java:[51] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/model/Subscription.java:[57] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/model/Subscription.java:[63,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/model/Subscription.java:[68] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/model/Subscription.java:[75,9] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/model/Subscription.java:[75,9] (design) DesignForExtension: Klasse 'Subscription' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'addEpisode' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'Subscription' final oder die Methode 'addEpisode' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen.
+[ERROR] src/main/java/org/psesquared/server/model/Subscription.java:[75,32] (misc) FinalParameters: Der Parameter episode sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/model/Role.java:[3] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/model/Role.java:[8] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/model/Role.java:[12] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/model/Role.java:[17,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/model/EpisodeAction.java:[22] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/model/EpisodeAction.java:[33] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/model/EpisodeAction.java:[42] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/model/EpisodeAction.java:[49] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/model/EpisodeAction.java:[56] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/model/EpisodeAction.java:[64] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/model/EpisodeAction.java:[73] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/model/EpisodeAction.java:[80] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/model/EpisodeAction.java:[88] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/model/EpisodeAction.java:[92] (javadoc) JavadocMethod: @return-Tag sollte vorhanden sein und eine Beschreibung haben.
+[ERROR] src/main/java/org/psesquared/server/model/EpisodeAction.java:[93] (sizes) LineLength: Zeile ist 81 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/model/EpisodeAction.java:[98] (sizes) LineLength: Zeile ist 95 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/model/SubscriptionAction.java:[16] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/model/SubscriptionAction.java:[27] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/model/SubscriptionAction.java:[36] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/model/SubscriptionAction.java:[42] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/model/SubscriptionAction.java:[50] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/model/SubscriptionAction.java:[56] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/model/User.java:[6,27] (imports) AvoidStarImport: Stern-Importe der Form '.*' sollten vermieden werden - jakarta.persistence.*.
+[ERROR] src/main/java/org/psesquared/server/model/User.java:[15] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/model/User.java:[26] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/model/User.java:[35] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/model/User.java:[44] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/model/User.java:[52] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/model/User.java:[59] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/model/User.java:[66] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/model/User.java:[74] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/model/User.java:[81] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/model/User.java:[88] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/model/User.java:[95,5] (design) DesignForExtension: Klasse 'User' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'getAuthorities' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'User' final oder die Methode 'getAuthorities' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen.
+[ERROR] src/main/java/org/psesquared/server/model/User.java:[100,5] (design) DesignForExtension: Klasse 'User' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'isAccountNonExpired' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'User' final oder die Methode 'isAccountNonExpired' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen.
+[ERROR] src/main/java/org/psesquared/server/model/User.java:[105,5] (design) DesignForExtension: Klasse 'User' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'isAccountNonLocked' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'User' final oder die Methode 'isAccountNonLocked' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen.
+[ERROR] src/main/java/org/psesquared/server/model/User.java:[110,5] (design) DesignForExtension: Klasse 'User' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'isCredentialsNonExpired' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'User' final oder die Methode 'isCredentialsNonExpired' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen.
+[ERROR] src/main/java/org/psesquared/server/model/Action.java:[5] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/model/Action.java:[7] (regexp) RegexpSingleline: Line has trailing spaces.
+[ERROR] src/main/java/org/psesquared/server/model/Action.java:[10] (regexp) RegexpSingleline: Line has trailing spaces.
+[ERROR] src/main/java/org/psesquared/server/model/Action.java:[11,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/model/Action.java:[12,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/model/Action.java:[13,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/model/Action.java:[14,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/model/Action.java:[15,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/model/Action.java:[17,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/model/Episode.java:[19] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/model/Episode.java:[30] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/model/Episode.java:[38] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/model/Episode.java:[44] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/model/Episode.java:[50] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/model/Episode.java:[56] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/model/Episode.java:[62] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/model/Episode.java:[68] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/util/UpdateURLsWrapper.java:[1] (javadoc) JavadocPackage: Es fehlt eine package-info.java.
+[ERROR] src/main/java/org/psesquared/server/util/UpdateURLsWrapper.java:[10] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/util/UpdateURLsWrapper.java:[15,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/util/UpdateURLsWrapper.java:[16,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/util/UpdateURLsWrapper.java:[18] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/util/UpdateURLsWrapper.java:[26,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/util/UpdateURLsWrapper.java:[26,5] (design) DesignForExtension: Klasse 'UpdateURLsWrapper' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'getTimestamp' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'UpdateURLsWrapper' final oder die Methode 'getTimestamp' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen.
+[ERROR] src/main/java/org/psesquared/server/util/UpdateURLsWrapper.java:[30,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/util/UpdateURLsWrapper.java:[30,5] (design) DesignForExtension: Klasse 'UpdateURLsWrapper' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'getUpdateURLs' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'UpdateURLsWrapper' final oder die Methode 'getUpdateURLs' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen.
+[ERROR] src/main/java/org/psesquared/server/util/Scheduler.java:[10] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/util/Scheduler.java:[16,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/util/Scheduler.java:[19] (sizes) LineLength: Zeile ist 137 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/util/Scheduler.java:[24] (sizes) LineLength: Zeile ist 126 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/util/Scheduler.java:[24,112] (coding) MagicNumber: Die magische Zahl '24' sollte als Konstante definiert werden.
+[ERROR] src/main/java/org/psesquared/server/util/Scheduler.java:[24,117] (coding) MagicNumber: Die magische Zahl '60' sollte als Konstante definiert werden.
+[ERROR] src/main/java/org/psesquared/server/util/Scheduler.java:[24,122] (coding) MagicNumber: Die magische Zahl '60' sollte als Konstante definiert werden.
+[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[38,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[40,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[41,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[43,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[43,5] (design) DesignForExtension: Klasse 'RSSParser' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'validate' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'RSSParser' final oder die Methode 'validate' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen.
+[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[44,5] (javadoc) InvalidJavadocPosition: Javadoc-Kommentar ist an der falschen Stelle platziert.
+[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[48] (sizes) LineLength: Zeile ist 84 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[51] (regexp) RegexpSingleline: Line has trailing spaces.
+[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[54,26] (misc) FinalParameters: Der Parameter subscription sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[66] (sizes) LineLength: Zeile ist 101 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[73] (sizes) LineLength: Zeile ist 89 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[87] (sizes) LineLength: Zeile ist 83 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[87,56] (misc) FinalParameters: Der Parameter subscription sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[126] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[126,34] (misc) FinalParameters: Der Parameter syndEntry sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[126,55] (misc) FinalParameters: Der Parameter subscription sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[158] (sizes) LineLength: Zeile ist 114 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[161] (sizes) LineLength: Zeile ist 95 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[161,45] (misc) FinalParameters: Der Parameter episodeURL sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[161,64] (misc) FinalParameters: Der Parameter episodes sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[168,5] (design) DesignForExtension: Klasse 'RSSParser' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'saveEpisodes' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'RSSParser' final oder die Methode 'saveEpisodes' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen.
+[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[169,33] (misc) FinalParameters: Der Parameter episodes sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[173,5] (design) DesignForExtension: Klasse 'RSSParser' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'deleteEpisodes' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'RSSParser' final oder die Methode 'deleteEpisodes' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen.
+[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[174,35] (misc) FinalParameters: Der Parameter episodes sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[179,5] (design) DesignForExtension: Klasse 'RSSParser' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'saveSubscription' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'RSSParser' final oder die Methode 'saveSubscription' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen.
+[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[180,37] (misc) FinalParameters: Der Parameter subscription sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[184,5] (design) DesignForExtension: Klasse 'RSSParser' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'deleteSubscription' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'RSSParser' final oder die Methode 'deleteSubscription' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen.
+[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[185,39] (misc) FinalParameters: Der Parameter subscription sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[190,43] (misc) FinalParameters: Der Parameter time sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[208,31] (misc) ArrayTypeStyle: Array-Klammern an ungültiger Position.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationResponse.java:[1] (javadoc) JavadocPackage: Es fehlt eine package-info.java.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationResponse.java:[7,1] (javadoc) JavadocType: Im Javadoc des Typs fehlt das Tag @param token.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationResponse.java:[7,52] (whitespace) WhitespaceAround: Nach '{' fehlt ein Leerzeichen.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationResponse.java:[7,53] (whitespace) WhitespaceAround: Vor '}' fehlt ein Leerzeichen.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[9,47] (imports) AvoidStarImport: Stern-Importe der Form '.*' sollten vermieden werden - org.springframework.web.bind.annotation.*.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[15] (sizes) LineLength: Zeile ist 98 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[23,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[25,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[26,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[29] (sizes) LineLength: Zeile ist 117 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[30] (sizes) LineLength: Zeile ist 109 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[31] (sizes) LineLength: Zeile ist 99 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[34] (sizes) LineLength: Zeile ist 91 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[41,36] (misc) FinalParameters: Der Parameter userInfo sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[46] (sizes) LineLength: Zeile ist 118 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[47] (sizes) LineLength: Zeile ist 101 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[51] (sizes) LineLength: Zeile ist 99 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[56] (regexp) RegexpSingleline: Line has trailing spaces.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[60,42] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[61,42] (misc) FinalParameters: Der Parameter token sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[62] (sizes) LineLength: Zeile ist 81 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[62,42] (misc) FinalParameters: Der Parameter response sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[63] (sizes) LineLength: Zeile ist 86 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[69] (sizes) LineLength: Zeile ist 112 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[71] (sizes) LineLength: Zeile ist 85 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[74] (sizes) LineLength: Zeile ist 89 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[81,29] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[82,29] (misc) FinalParameters: Der Parameter response sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[87] (sizes) LineLength: Zeile ist 120 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[89] (sizes) LineLength: Zeile ist 85 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[92] (sizes) LineLength: Zeile ist 90 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[99,30] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[100,30] (misc) FinalParameters: Der Parameter response sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[100,68] (whitespace) WhitespaceAround: Vor '{' fehlt ein Leerzeichen.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[105] (sizes) LineLength: Zeile ist 119 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[108] (sizes) LineLength: Zeile ist 83 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[115,38] (misc) FinalParameters: Der Parameter email sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[119,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[119,5] (design) DesignForExtension: Klasse 'AuthenticationController' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'resetPassword' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'AuthenticationController' final oder die Methode 'resetPassword' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[120,37] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[121,37] (misc) FinalParameters: Der Parameter token sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[122,37] (misc) FinalParameters: Der Parameter requestBody sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[123] (sizes) LineLength: Zeile ist 81 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[126,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[126,5] (design) DesignForExtension: Klasse 'AuthenticationController' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'changePassword' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'AuthenticationController' final oder die Methode 'changePassword' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[127,38] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[128] (sizes) LineLength: Zeile ist 86 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[128,38] (misc) FinalParameters: Der Parameter requestBody sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[132,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[132,5] (design) DesignForExtension: Klasse 'AuthenticationController' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'deleteUser' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'AuthenticationController' final oder die Methode 'deleteUser' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[133,34] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[134,34] (misc) FinalParameters: Der Parameter requestBody sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[138,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[138,5] (design) DesignForExtension: Klasse 'AuthenticationController' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'getDeviceList' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'AuthenticationController' final oder die Methode 'getDeviceList' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[139] (sizes) LineLength: Zeile ist 91 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[139,62] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[140] (sizes) LineLength: Zeile ist 101 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[140,62] (misc) FinalParameters: Der Parameter response sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[142] (sizes) LineLength: Zeile ist 107 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/ForgotPasswordRequest.java:[5] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/ForgotPasswordRequest.java:[8] (sizes) LineLength: Zeile ist 83 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/ForgotPasswordRequest.java:[8,1] (javadoc) JavadocType: Im Javadoc des Typs fehlt das Tag @param email.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/ForgotPasswordRequest.java:[8,82] (whitespace) WhitespaceAround: Nach '{' fehlt ein Leerzeichen.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/ForgotPasswordRequest.java:[8,83] (whitespace) WhitespaceAround: Vor '}' fehlt ein Leerzeichen.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/DeviceWrapper.java:[3,8] (imports) UnusedImports: Nicht verwendeter Import - jakarta.servlet.http.HttpServletResponse.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/DeviceWrapper.java:[14] (sizes) LineLength: Zeile ist 88 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/DeviceWrapper.java:[16,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/DeviceWrapper.java:[17,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/DeviceWrapper.java:[18,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/DeviceWrapper.java:[19,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/DeviceWrapper.java:[21,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/ChangePasswordRequest.java:[5] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/ChangePasswordRequest.java:[9] (sizes) LineLength: Zeile ist 106 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/ChangePasswordRequest.java:[9,1] (javadoc) JavadocType: Im Javadoc des Typs fehlt das Tag @param newPassword.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/ChangePasswordRequest.java:[9,1] (javadoc) JavadocType: Im Javadoc des Typs fehlt das Tag @param oldPassword.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/ChangePasswordRequest.java:[10] (sizes) LineLength: Zeile ist 84 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/UserInfoRequest.java:[9,1] (javadoc) JavadocType: Im Javadoc des Typs fehlt das Tag @param email.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/UserInfoRequest.java:[9,1] (javadoc) JavadocType: Im Javadoc des Typs fehlt das Tag @param password.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/UserInfoRequest.java:[9,1] (javadoc) JavadocType: Im Javadoc des Typs fehlt das Tag @param username.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/UserInfoRequest.java:[11,79] (whitespace) WhitespaceAround: Nach '{' fehlt ein Leerzeichen.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/UserInfoRequest.java:[11,80] (whitespace) WhitespaceAround: Vor '}' fehlt ein Leerzeichen.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/PasswordRequest.java:[9,1] (javadoc) JavadocType: Im Javadoc des Typs fehlt das Tag @param password.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/PasswordRequest.java:[9,79] (whitespace) WhitespaceAround: Nach '{' fehlt ein Leerzeichen.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/PasswordRequest.java:[9,80] (whitespace) WhitespaceAround: Vor '}' fehlt ein Leerzeichen.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[1] (javadoc) JavadocPackage: Es fehlt eine package-info.java.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[6,59] (imports) AvoidStarImport: Stern-Importe der Form '.*' sollten vermieden werden - org.psesquared.server.authentication_api.controller.*.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[25,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[26,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[27,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[28,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[29,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[30,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[32,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[33,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[34,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[35,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[36,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[37,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[39,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[39,5] (design) DesignForExtension: Klasse 'AuthenticationService' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'registerUser' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'AuthenticationService' final oder die Methode 'registerUser' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[39,36] (misc) FinalParameters: Der Parameter userInfo sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[55] (sizes) LineLength: Zeile ist 91 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[56] (sizes) LineLength: Zeile ist 85 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[66] (sizes) LineLength: Zeile ist 81 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[75,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[75,5] (design) DesignForExtension: Klasse 'AuthenticationService' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'verifyRegistration' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'AuthenticationService' final oder die Methode 'verifyRegistration' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[75,42] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[75,59] (misc) FinalParameters: Der Parameter token sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[95,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[95,5] (design) DesignForExtension: Klasse 'AuthenticationService' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'login' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'AuthenticationService' final oder die Methode 'login' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[95,29] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[96,36] (misc) FinalParameters: Der Parameter response sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[110,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[110,5] (design) DesignForExtension: Klasse 'AuthenticationService' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'logout' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'AuthenticationService' final oder die Methode 'logout' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[110,30] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[111,30] (misc) FinalParameters: Der Parameter response sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[112,58] (whitespace) WhitespaceAround: Vor '{' fehlt ein Leerzeichen.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[122,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[122,5] (design) DesignForExtension: Klasse 'AuthenticationService' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'forgotPassword' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'AuthenticationService' final oder die Methode 'forgotPassword' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[122,38] (misc) FinalParameters: Der Parameter email sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[124] (sizes) LineLength: Zeile ist 95 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[128,11] (whitespace) WhitespaceAround: Nach 'catch' fehlt ein Leerzeichen.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[133,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[133,5] (design) DesignForExtension: Klasse 'AuthenticationService' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'resetPassword' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'AuthenticationService' final oder die Methode 'resetPassword' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[133,37] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[134,31] (misc) FinalParameters: Der Parameter token sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[135,31] (misc) FinalParameters: Der Parameter requestBody sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[144] (sizes) LineLength: Zeile ist 81 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[153,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[153,5] (design) DesignForExtension: Klasse 'AuthenticationService' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'changePassword' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'AuthenticationService' final oder die Methode 'changePassword' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[153,38] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[154,38] (misc) FinalParameters: Der Parameter requestBody sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[158] (sizes) LineLength: Zeile ist 89 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[168,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[168,5] (design) DesignForExtension: Klasse 'AuthenticationService' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'deleteUser' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'AuthenticationService' final oder die Methode 'deleteUser' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[168,34] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[169,34] (misc) FinalParameters: Der Parameter requestBody sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[173] (sizes) LineLength: Zeile ist 86 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[183,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[183,5] (design) DesignForExtension: Klasse 'AuthenticationService' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'deleteInvalidUsersOlderThan' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'AuthenticationService' final oder die Methode 'deleteInvalidUsersOlderThan' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[183,45] (misc) FinalParameters: Der Parameter timestamp sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[184] (sizes) LineLength: Zeile ist 81 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/ResourceReader.java:[8,1] (design) HideUtilityClassConstructor: Hilfsklassen sollten keinen Standard-Konstruktur und keinen als public deklarierten Konstruktor haben.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/ResourceReader.java:[9] (sizes) LineLength: Zeile ist 83 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/ResourceReader.java:[9,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/ResourceReader.java:[9,43] (misc) FinalParameters: Der Parameter path sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/ResourceReader.java:[10] (sizes) LineLength: Zeile ist 95 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[16,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[17,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[18,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[20,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[23,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[24] (sizes) LineLength: Zeile ist 110 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[25,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[26] (sizes) LineLength: Zeile ist 102 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[28,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[29] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[29,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[30] (sizes) LineLength: Zeile ist 85 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[30,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[32,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[33,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[34,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[35,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[37] (sizes) LineLength: Zeile ist 83 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[37,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[37,83] (whitespace) OperatorWrap: '+' sollte in einer neuen Zeile stehen.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[41] (sizes) LineLength: Zeile ist 83 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[41,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[41,83] (whitespace) OperatorWrap: '+' sollte in einer neuen Zeile stehen.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[46] (sizes) LineLength: Zeile ist 119 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[47] (sizes) LineLength: Zeile ist 134 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[52,27] (misc) FinalParameters: Der Parameter to sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[52,38] (misc) FinalParameters: Der Parameter mailSubject sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[52,58] (misc) FinalParameters: Der Parameter body sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[52,65] (javadoc) JavadocMethod: Erwartetes Tag @param für 'body'.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[53] (sizes) LineLength: Zeile ist 87 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[62] (sizes) LineLength: Zeile ist 90 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[62,43] (misc) FinalParameters: Der Parameter template sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[62,60] (misc) FinalParameters: Der Parameter user sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[62,78] (misc) FinalParameters: Der Parameter url sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[69] (sizes) LineLength: Zeile ist 81 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[71] (sizes) LineLength: Zeile ist 115 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[76] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[79,58] (whitespace) OperatorWrap: '+' sollte in einer neuen Zeile stehen.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[80,54] (whitespace) OperatorWrap: '+' sollte in einer neuen Zeile stehen.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[81,33] (whitespace) OperatorWrap: '+' sollte in einer neuen Zeile stehen.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[82,32] (whitespace) OperatorWrap: '+' sollte in einer neuen Zeile stehen.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[83,43] (whitespace) OperatorWrap: '+' sollte in einer neuen Zeile stehen.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[84,33] (whitespace) OperatorWrap: '+' sollte in einer neuen Zeile stehen.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[85,29] (whitespace) OperatorWrap: '+' sollte in einer neuen Zeile stehen.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[91] (sizes) LineLength: Zeile ist 89 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[92] (sizes) LineLength: Zeile ist 112 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[95,34] (misc) FinalParameters: Der Parameter to sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[95,41] (javadoc) JavadocMethod: Erwartetes Tag @param für 'to'.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[95,45] (misc) FinalParameters: Der Parameter userDetails sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[97] (sizes) LineLength: Zeile ist 89 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[103] (sizes) LineLength: Zeile ist 102 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[104] (sizes) LineLength: Zeile ist 118 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[107,35] (misc) FinalParameters: Der Parameter to sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[107,42] (javadoc) JavadocMethod: Erwartetes Tag @param für 'to'.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[107,46] (misc) FinalParameters: Der Parameter userDetails sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[109] (sizes) LineLength: Zeile ist 90 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EncryptionService.java:[16,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EncryptionService.java:[18,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EncryptionService.java:[21] (sizes) LineLength: Zeile ist 96 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EncryptionService.java:[26,36] (misc) FinalParameters: Der Parameter email sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EncryptionService.java:[29] (sizes) LineLength: Zeile ist 81 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EncryptionService.java:[34] (sizes) LineLength: Zeile ist 85 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EncryptionService.java:[34,53] (coding) MagicNumber: Die magische Zahl '0xff' sollte als Konstante definiert werden.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EncryptionService.java:[34,61] (coding) MagicNumber: Die magische Zahl '0x100' sollte als Konstante definiert werden.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EncryptionService.java:[34,68] (coding) MagicNumber: Die magische Zahl '16' sollte als Konstante definiert werden.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EncryptionService.java:[44] (sizes) LineLength: Zeile ist 118 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EncryptionService.java:[49] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[14,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[15,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[16,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[24] (sizes) LineLength: Zeile ist 101 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[44] (sizes) LineLength: Zeile ist 124 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[49] (sizes) LineLength: Zeile ist 174 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[59] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[60] (sizes) LineLength: Zeile ist 93 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[63] (sizes) LineLength: Zeile ist 96 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[65] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[66] (sizes) LineLength: Zeile ist 93 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[67] (sizes) LineLength: Zeile ist 177 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[69] (sizes) LineLength: Zeile ist 157 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[71] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[72] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[73] (sizes) LineLength: Zeile ist 94 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[77] (sizes) LineLength: Zeile ist 91 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[79,37] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[87] (sizes) LineLength: Zeile ist 114 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[89] (sizes) LineLength: Zeile ist 91 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[91,34] (misc) FinalParameters: Der Parameter email sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[93] (sizes) LineLength: Zeile ist 81 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[101] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[102] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[106] (sizes) LineLength: Zeile ist 104 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[107] (sizes) LineLength: Zeile ist 106 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[109] (sizes) LineLength: Zeile ist 91 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[111,37] (misc) FinalParameters: Der Parameter password sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/data_access/AuthenticationDao.java:[1] (javadoc) JavadocPackage: Es fehlt eine package-info.java.
+[ERROR] src/main/java/org/psesquared/server/authentication_api/data_access/AuthenticationDao.java:[18] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/data_access/AuthenticationDao.java:[27] (sizes) LineLength: Zeile ist 81 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/data_access/AuthenticationDao.java:[40] (sizes) LineLength: Zeile ist 96 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/authentication_api/data_access/AuthenticationDao.java:[42] (sizes) LineLength: Zeile ist 97 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[1] (javadoc) JavadocPackage: Es fehlt eine package-info.java.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[7,47] (imports) AvoidStarImport: Stern-Importe der Form '.*' sollten vermieden werden - org.springframework.web.bind.annotation.*.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[12] (sizes) LineLength: Zeile ist 98 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[21,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[24] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[25] (regexp) RegexpSingleline: Line has trailing spaces.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[31] (sizes) LineLength: Zeile ist 93 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[31,64] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[32] (sizes) LineLength: Zeile ist 121 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[32,64] (misc) FinalParameters: Der Parameter episodeActionPosts sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[37] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[38] (sizes) LineLength: Zeile ist 113 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[39] (regexp) RegexpSingleline: Line has trailing spaces.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[40] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[41] (sizes) LineLength: Zeile ist 91 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[44] (sizes) LineLength: Zeile ist 102 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[44,71] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[45] (sizes) LineLength: Zeile ist 127 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[49] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[50] (sizes) LineLength: Zeile ist 112 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[51] (regexp) RegexpSingleline: Line has trailing spaces.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[52] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[54] (sizes) LineLength: Zeile ist 91 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[57] (sizes) LineLength: Zeile ist 109 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[57,80] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[58] (sizes) LineLength: Zeile ist 103 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[58,59] (misc) FinalParameters: Der Parameter podcastURL sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[59] (sizes) LineLength: Zeile ist 148 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[63] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[64] (sizes) LineLength: Zeile ist 116 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[65] (regexp) RegexpSingleline: Line has trailing spaces.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[66] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[67] (sizes) LineLength: Zeile ist 89 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[68] (sizes) LineLength: Zeile ist 91 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[71] (sizes) LineLength: Zeile ist 105 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[71,76] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[72] (sizes) LineLength: Zeile ist 95 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[72,60] (misc) FinalParameters: Der Parameter since sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[73] (sizes) LineLength: Zeile ist 139 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[77] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[78] (sizes) LineLength: Zeile ist 132 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[79] (regexp) RegexpSingleline: Line has trailing spaces.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[80] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[82] (sizes) LineLength: Zeile ist 89 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[83] (sizes) LineLength: Zeile ist 91 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[86] (sizes) LineLength: Zeile ist 114 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[86,85] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[87] (sizes) LineLength: Zeile ist 106 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[87,64] (misc) FinalParameters: Der Parameter podcastURL sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[88] (sizes) LineLength: Zeile ist 99 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[88,64] (misc) FinalParameters: Der Parameter since sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[89] (sizes) LineLength: Zeile ist 160 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionGetResponse.java:[13,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionGetResponse.java:[14,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionGetResponse.java:[19,37] (misc) FinalParameters: Der Parameter actions sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionGetResponse.java:[19,61] (coding) HiddenField: Die Variable 'actions' verbirgt ein Feld.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionGetResponse.java:[24,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionGetResponse.java:[24,5] (design) DesignForExtension: Klasse 'EpisodeActionGetResponse' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'getActions' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'EpisodeActionGetResponse' final oder die Methode 'getActions' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionGetResponse.java:[28,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionGetResponse.java:[28,5] (design) DesignForExtension: Klasse 'EpisodeActionGetResponse' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'getTimestamp' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'EpisodeActionGetResponse' final oder die Methode 'getTimestamp' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionPost.java:[14] (sizes) LineLength: Zeile ist 94 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionPost.java:[22,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionPost.java:[26,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionPost.java:[30,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionPost.java:[32,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionPost.java:[34,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionPost.java:[36,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[1] (javadoc) JavadocPackage: Es fehlt eine package-info.java.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[30,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[32,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[34,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[36,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[38,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[40,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[42,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[44] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[45] (sizes) LineLength: Zeile ist 84 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[50] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[53] (sizes) LineLength: Zeile ist 96 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[53,35] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[53,52] (misc) FinalParameters: Der Parameter episodeActionPosts sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[55] (sizes) LineLength: Zeile ist 106 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[59,68] (misc) FinalParameters: Der Parameter user sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[60,13] (misc) FinalParameters: Der Parameter episodeActionPosts sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[63] (sizes) LineLength: Zeile ist 90 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[68] (sizes) LineLength: Zeile ist 108 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[68,60] (misc) FinalParameters: Der Parameter user sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[68,71] (misc) FinalParameters: Der Parameter episodeActionPost sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[75] (sizes) LineLength: Zeile ist 89 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[82] (sizes) LineLength: Zeile ist 109 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[83] (sizes) LineLength: Zeile ist 81 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[87] (sizes) LineLength: Zeile ist 102 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[96] (sizes) LineLength: Zeile ist 81 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[96,44] (misc) FinalParameters: Der Parameter episodeActionPost sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[103,9] (blocks) RightCurly: '}' an Position 9 sollte in der gleichen Zeile stehen wie der nächste Teil der Multi-Block-Anweisung (eine Anweisung, die mehrere Blöcke enthält: if/else-if/else, do/while oder try/catch/finally).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[112,9] (blocks) RightCurly: '}' an Position 9 sollte in der gleichen Zeile stehen wie der nächste Teil der Multi-Block-Anweisung (eine Anweisung, die mehrere Blöcke enthält: if/else-if/else, do/while oder try/catch/finally).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[120,35] (misc) FinalParameters: Der Parameter episodeActionPost sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[125] (sizes) LineLength: Zeile ist 105 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[134] (sizes) LineLength: Zeile ist 93 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[134,46] (misc) FinalParameters: Der Parameter user sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[134,57] (misc) FinalParameters: Der Parameter episodeActions sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[140] (sizes) LineLength: Zeile ist 85 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[140,45] (misc) FinalParameters: Der Parameter user sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[140,56] (misc) FinalParameters: Der Parameter episodeAction sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[141] (sizes) LineLength: Zeile ist 106 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[149] (sizes) LineLength: Zeile ist 91 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[149,51] (misc) FinalParameters: Der Parameter user sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[149,62] (misc) FinalParameters: Der Parameter episodeAction sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[150] (sizes) LineLength: Zeile ist 96 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[153] (sizes) LineLength: Zeile ist 84 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[159] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[163] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[164] (sizes) LineLength: Zeile ist 83 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[166,54] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[167] (sizes) LineLength: Zeile ist 91 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[175] (sizes) LineLength: Zeile ist 84 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[177] (sizes) LineLength: Zeile ist 83 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[179] (sizes) LineLength: Zeile ist 99 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[179,63] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[179,80] (misc) FinalParameters: Der Parameter podcastURL sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[180] (sizes) LineLength: Zeile ist 115 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[185] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[186] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[189] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[192] (sizes) LineLength: Zeile ist 83 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[194] (sizes) LineLength: Zeile ist 88 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[194,59] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[194,76] (misc) FinalParameters: Der Parameter since sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[195] (sizes) LineLength: Zeile ist 114 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[196] (sizes) LineLength: Zeile ist 118 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[201] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[202] (sizes) LineLength: Zeile ist 83 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[206] (sizes) LineLength: Zeile ist 84 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[210] (sizes) LineLength: Zeile ist 83 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[212] (sizes) LineLength: Zeile ist 116 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[212,68] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[212,85] (misc) FinalParameters: Der Parameter podcastURL sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[212,104] (misc) FinalParameters: Der Parameter since sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[213] (sizes) LineLength: Zeile ist 114 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[215] (sizes) LineLength: Zeile ist 114 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[220] (sizes) LineLength: Zeile ist 108 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[220,72] (misc) FinalParameters: Der Parameter episodeActions sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeActionDao.java:[1] (javadoc) JavadocPackage: Es fehlt eine package-info.java.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeActionDao.java:[16] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeActionDao.java:[22] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeActionDao.java:[30] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeActionDao.java:[31] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeActionDao.java:[36] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeActionDao.java:[38] (sizes) LineLength: Zeile ist 97 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeActionDao.java:[40] (sizes) LineLength: Zeile ist 84 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeActionDao.java:[40,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeActionDao.java:[42] (sizes) LineLength: Zeile ist 85 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeActionDao.java:[42,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeActionDao.java:[44] (sizes) LineLength: Zeile ist 99 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeActionDao.java:[44,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeActionDao.java:[46] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeActionDao.java:[50] (sizes) LineLength: Zeile ist 84 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeActionDao.java:[54] (sizes) LineLength: Zeile ist 113 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeActionDao.java:[56] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeActionDao.java:[57] (sizes) LineLength: Zeile ist 83 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeActionDao.java:[60] (sizes) LineLength: Zeile ist 84 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeActionDao.java:[64] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeActionDao.java:[67] (sizes) LineLength: Zeile ist 112 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeActionDao.java:[72,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeDao.java:[9] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeDao.java:[15] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeDao.java:[23] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeDao.java:[31] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeDao.java:[39] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionTitles.java:[1] (javadoc) JavadocPackage: Es fehlt eine package-info.java.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionTitles.java:[9] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionTitles.java:[12] (sizes) LineLength: Zeile ist 110 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionTitles.java:[12,1] (javadoc) JavadocType: Im Javadoc des Typs fehlt das Tag @param episodes.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionTitles.java:[12,1] (javadoc) JavadocType: Im Javadoc des Typs fehlt das Tag @param subscription.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[7,47] (imports) AvoidStarImport: Stern-Importe der Form '.*' sollten vermieden werden - org.springframework.web.bind.annotation.*.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[12] (sizes) LineLength: Zeile ist 96 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[13] (sizes) LineLength: Zeile ist 97 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[20,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[22,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[25] (sizes) LineLength: Zeile ist 81 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[27] (regexp) RegexpSingleline: Line has trailing spaces.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[29] (sizes) LineLength: Zeile ist 127 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[30] (sizes) LineLength: Zeile ist 111 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[34] (sizes) LineLength: Zeile ist 84 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[34,55] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[35,48] (misc) FinalParameters: Der Parameter deviceID sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[36] (sizes) LineLength: Zeile ist 89 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[36,48] (misc) FinalParameters: Der Parameter subscriptions sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[43] (regexp) RegexpSingleline: Line has trailing spaces.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[44] (sizes) LineLength: Zeile ist 88 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[45] (sizes) LineLength: Zeile ist 113 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[47] (sizes) LineLength: Zeile ist 102 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[48] (sizes) LineLength: Zeile ist 88 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[50] (sizes) LineLength: Zeile ist 103 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[51] (sizes) LineLength: Zeile ist 87 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[51,58] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[52] (sizes) LineLength: Zeile ist 98 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[52,51] (misc) FinalParameters: Der Parameter deviceID sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[53] (sizes) LineLength: Zeile ist 122 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[53,51] (misc) FinalParameters: Der Parameter functionJSONP sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[54] (sizes) LineLength: Zeile ist 84 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[59] (sizes) LineLength: Zeile ist 128 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[61] (regexp) RegexpSingleline: Line has trailing spaces.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[62] (sizes) LineLength: Zeile ist 92 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[63] (sizes) LineLength: Zeile ist 121 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[64] (sizes) LineLength: Zeile ist 92 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[65] (regexp) RegexpSingleline: Line has trailing spaces.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[65] (sizes) LineLength: Zeile ist 100 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[68] (sizes) LineLength: Zeile ist 98 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[68,69] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[69] (sizes) LineLength: Zeile ist 98 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[69,69] (misc) FinalParameters: Der Parameter deviceID sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[70] (sizes) LineLength: Zeile ist 107 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[70,69] (misc) FinalParameters: Der Parameter delta sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[76] (sizes) LineLength: Zeile ist 94 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[77] (regexp) RegexpSingleline: Line has trailing spaces.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[78] (sizes) LineLength: Zeile ist 92 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[79] (sizes) LineLength: Zeile ist 120 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[80] (sizes) LineLength: Zeile ist 81 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[81] (sizes) LineLength: Zeile ist 105 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[84] (sizes) LineLength: Zeile ist 96 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[84,67] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[85] (sizes) LineLength: Zeile ist 96 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[85,67] (misc) FinalParameters: Der Parameter deviceID sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[86] (sizes) LineLength: Zeile ist 102 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[86,67] (misc) FinalParameters: Der Parameter since sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[87] (sizes) LineLength: Zeile ist 92 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[93] (sizes) LineLength: Zeile ist 97 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[94] (regexp) RegexpSingleline: Line has trailing spaces.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[95] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[96] (sizes) LineLength: Zeile ist 100 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[99] (sizes) LineLength: Zeile ist 94 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[99,63] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[100] (sizes) LineLength: Zeile ist 88 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionDelta.java:[10] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionDelta.java:[11] (sizes) LineLength: Zeile ist 114 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionDelta.java:[16,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionDelta.java:[20,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionDelta.java:[24,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionDelta.java:[28] (sizes) LineLength: Zeile ist 84 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionDelta.java:[29] (sizes) LineLength: Zeile ist 89 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionDelta.java:[31,30] (misc) FinalParameters: Der Parameter add sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionDelta.java:[31,43] (coding) HiddenField: Die Variable 'add' verbirgt ein Feld.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionDelta.java:[31,48] (misc) FinalParameters: Der Parameter remove sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionDelta.java:[31,61] (coding) HiddenField: Die Variable 'remove' verbirgt ein Feld.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionDelta.java:[37] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionDelta.java:[39] (regexp) RegexpSingleline: Line has trailing spaces.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionDelta.java:[46] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionDelta.java:[48] (regexp) RegexpSingleline: Line has trailing spaces.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionDelta.java:[55] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionDelta.java:[57] (regexp) RegexpSingleline: Line has trailing spaces.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[1] (javadoc) JavadocPackage: Es fehlt eine package-info.java.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[12,35] (imports) AvoidStarImport: Stern-Importe der Form '.*' sollten vermieden werden - org.psesquared.server.model.*.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[28,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[29,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[31,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[33,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[35,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[37,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[47] (regexp) RegexpSingleline: Line has trailing spaces.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[49] (sizes) LineLength: Zeile ist 84 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[52] (sizes) LineLength: Zeile ist 87 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[52,36] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[52,53] (misc) FinalParameters: Der Parameter subscriptionStrings sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[60] (sizes) LineLength: Zeile ist 85 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[65] (sizes) LineLength: Zeile ist 118 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[67] (sizes) LineLength: Zeile ist 84 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[70] (sizes) LineLength: Zeile ist 98 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[71] (sizes) LineLength: Zeile ist 85 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[76] (sizes) LineLength: Zeile ist 102 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[80] (sizes) LineLength: Zeile ist 99 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[89] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[90] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[92] (regexp) RegexpSingleline: Line has trailing spaces.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[97,42] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[98] (sizes) LineLength: Zeile ist 118 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[106] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[108] (regexp) RegexpSingleline: Line has trailing spaces.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[109] (sizes) LineLength: Zeile ist 84 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[110] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[114] (sizes) LineLength: Zeile ist 81 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[114,39] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[114,56] (misc) FinalParameters: Der Parameter delta sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[121,56] (whitespace) OperatorWrap: '&&' sollte in einer neuen Zeile stehen.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[122] (sizes) LineLength: Zeile ist 112 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[125] (sizes) LineLength: Zeile ist 93 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[132] (sizes) LineLength: Zeile ist 100 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[139] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[142] (regexp) RegexpSingleline: Line has trailing spaces.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[143] (sizes) LineLength: Zeile ist 84 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[145] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[147] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[149,51] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[149,68] (misc) FinalParameters: Der Parameter since sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[154] (sizes) LineLength: Zeile ist 81 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[167] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[169] (regexp) RegexpSingleline: Line has trailing spaces.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[172] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[175,47] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[176] (sizes) LineLength: Zeile ist 118 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[189] (sizes) LineLength: Zeile ist 109 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/data_access/SubscriptionActionDao.java:[1] (javadoc) JavadocPackage: Es fehlt eine package-info.java.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/data_access/SubscriptionActionDao.java:[12] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/data_access/SubscriptionActionDao.java:[16] (sizes) LineLength: Zeile ist 88 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/data_access/SubscriptionActionDao.java:[34] (sizes) LineLength: Zeile ist 83 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/data_access/SubscriptionActionDao.java:[37] (sizes) LineLength: Zeile ist 97 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/data_access/SubscriptionActionDao.java:[45] (sizes) LineLength: Zeile ist 84 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/data_access/SubscriptionActionDao.java:[49] (sizes) LineLength: Zeile ist 109 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/data_access/SubscriptionActionDao.java:[54] (sizes) LineLength: Zeile ist 81 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/data_access/SubscriptionActionDao.java:[60] (sizes) LineLength: Zeile ist 83 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/data_access/SubscriptionActionDao.java:[63] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/data_access/SubscriptionActionDao.java:[64] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/data_access/SubscriptionActionDao.java:[68] (sizes) LineLength: Zeile ist 104 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/data_access/SubscriptionActionDao.java:[70] (regexp) RegexpSingleline: Line has trailing spaces.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/data_access/SubscriptionDao.java:[10] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/data_access/SubscriptionDao.java:[16,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/data_access/SubscriptionDao.java:[17,5] (javadoc) InvalidJavadocPosition: Javadoc-Kommentar ist an der falschen Stelle platziert.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/data_access/SubscriptionDao.java:[25] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/subscriptions_api/data_access/SubscriptionDao.java:[26] (sizes) LineLength: Zeile ist 81 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/ServerApplication.java:[1] (javadoc) JavadocPackage: Es fehlt eine package-info.java.
+[ERROR] src/main/java/org/psesquared/server/ServerApplication.java:[9] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/ServerApplication.java:[12,1] (design) HideUtilityClassConstructor: Hilfsklassen sollten keinen Standard-Konstruktur und keinen als public deklarierten Konstruktor haben.
+[ERROR] src/main/java/org/psesquared/server/ServerApplication.java:[13] (sizes) LineLength: Zeile ist 95 Zeichen lang (Obergrenze ist 80).
+[ERROR] src/main/java/org/psesquared/server/ServerApplication.java:[16] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden.
+[ERROR] src/main/java/org/psesquared/server/ServerApplication.java:[16,1] (whitespace) FileTabCharacter: Die Datei enthält Tabulatorzeichen (dies ist das erste Vorkommen).
+[ERROR] src/main/java/org/psesquared/server/ServerApplication.java:[18] (regexp) RegexpSingleline: Line has trailing spaces.
+[ERROR] src/main/java/org/psesquared/server/ServerApplication.java:[21,33] (misc) FinalParameters: Der Parameter args sollte als 'final' deklariert sein.
+[ERROR] src/main/resources/security.properties:[1] (misc) NewlineAtEndOfFile: Datei endet nicht mit einem Zeilenumbruch.
+[INFO] ------------------------------------------------------------------------
+[INFO] BUILD FAILURE
+[INFO] ------------------------------------------------------------------------
+[INFO] Total time: 13.946 s
+[INFO] Finished at: 2023-03-18T08:10:57+01:00
+[INFO] ------------------------------------------------------------------------
+[ERROR] Failed to execute goal org.apache.maven.plugins:maven-checkstyle-plugin:3.2.1:check (default-cli) on project server: You have 799 Checkstyle violations. -> [Help 1]
+[ERROR]
+[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
+[ERROR] Re-run Maven using the -X switch to enable full debug logging.
+[ERROR]
+[ERROR] For more information about the errors and possible solutions, please read the following articles:
+[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
diff --git a/30-qualitaetsheft/assets/sources/linter-dashboard-after-processed.txt b/30-qualitaetsheft/assets/sources/linter-dashboard-after-processed.txt
new file mode 100644
index 0000000..cab82f3
--- /dev/null
+++ b/30-qualitaetsheft/assets/sources/linter-dashboard-after-processed.txt
@@ -0,0 +1 @@
+1 warning vue/no-v-html
diff --git a/30-qualitaetsheft/assets/sources/linter-dashboard-after.txt b/30-qualitaetsheft/assets/sources/linter-dashboard-after.txt
new file mode 100644
index 0000000..f9bda3b
--- /dev/null
+++ b/30-qualitaetsheft/assets/sources/linter-dashboard-after.txt
@@ -0,0 +1,10 @@
+
+> pse-dashboard@0.0.0 lint
+> eslint 'src/**/*.{js,vue}'
+
+
+/home/gero/documents/uni/pse/pse-dashboard/src/components/HelpModal.vue
+ 25:21 warning 'v-html' directive can lead to XSS attack vue/no-v-html
+
+✖ 1 problem (0 errors, 1 warning)
+
diff --git a/30-qualitaetsheft/assets/sources/linter-dashboard-before-processed.txt b/30-qualitaetsheft/assets/sources/linter-dashboard-before-processed.txt
new file mode 100644
index 0000000..150ea46
--- /dev/null
+++ b/30-qualitaetsheft/assets/sources/linter-dashboard-before-processed.txt
@@ -0,0 +1,22 @@
+26 error vue/html-indent
+17 error vue/script-indent
+6 error vue/require-v-for-key
+5 error vue/multi-word-component-names
+1 error vue/valid-v-for
+1 error vue/valid-template-root
+125 warning vue/max-attributes-per-line
+34 warning vue/attributes-order
+26 warning vue/singleline-html-element-content-newline
+12 warning vue/require-default-prop
+12 warning vue/html-self-closing
+11 warning vue/first-attribute-linebreak
+10 warning vue/html-closing-bracket-newline
+8 warning vue/multiline-html-element-content-newline
+5 warning vue/html-closing-bracket-spacing
+3 warning vue/require-prop-types
+3 warning vue/attribute-hyphenation
+2 warning vue/html-self-closing
+1 warning vue/v-on-event-hyphenation
+1 warning vue/no-v-html
+1 warning vue/mustache-interpolation-spacing
+
diff --git a/30-qualitaetsheft/assets/sources/linter-dashboard-before.txt b/30-qualitaetsheft/assets/sources/linter-dashboard-before.txt
new file mode 100644
index 0000000..04a8317
--- /dev/null
+++ b/30-qualitaetsheft/assets/sources/linter-dashboard-before.txt
@@ -0,0 +1,358 @@
+
+> pse-dashboard@0.0.0 lint
+> eslint 'src/**/*.{js,vue}'
+
+
+/home/gero/documents/uni/pse/pse-dashboard/src/components/Episode.vue
+ 1:1 error Component name "Episode" should always be multi-word vue/multi-word-component-names
+ 5:5 warning Prop 'action' requires default value to be set vue/require-default-prop
+ 5:5 warning Prop "action" should define at least its type vue/require-prop-types
+ 20:17 warning 'class' should be on a new line vue/max-attributes-per-line
+ 20:69 warning 'aria-current' should be on a new line vue/max-attributes-per-line
+ 23:67 warning 'style' should be on a new line vue/max-attributes-per-line
+ 38:51 warning 'style' should be on a new line vue/max-attributes-per-line
+ 39:17 warning Require self-closing on HTML elements (<div>) vue/html-self-closing
+ 39:43 warning ':style' should be on a new line vue/max-attributes-per-line
+
+/home/gero/documents/uni/pse/pse-dashboard/src/components/ErrorLog.vue
+ 14:1 error Expected indentation of 8 spaces but found 4 spaces vue/html-indent
+ 15:1 error Expected indentation of 12 spaces but found 8 spaces vue/html-indent
+ 15:9 error Elements in iteration expect to have 'v-bind:key' directives vue/require-v-for-key
+ 15:14 warning Expected a linebreak before this attribute vue/first-attribute-linebreak
+ 15:43 warning 'class' should be on a new line vue/max-attributes-per-line
+ 16:29 warning ':class' should be on a new line vue/max-attributes-per-line
+ 16:58 warning Expected 1 line break before closing bracket, but no line breaks found vue/html-closing-bracket-newline
+ 17:1 error Expected indentation of 16 spaces but found 12 spaces vue/html-indent
+ 17:13 warning Require self-closing on HTML elements (<button>) vue/html-self-closing
+ 17:35 warning 'class' should be on a new line vue/max-attributes-per-line
+ 17:53 warning '@click' should be on a new line vue/max-attributes-per-line
+ 18:1 error Expected indentation of 16 spaces but found 12 spaces vue/html-indent
+ 18:13 warning Require self-closing on HTML elements (<i>) vue/html-self-closing
+ 18:37 warning ':class' should be on a new line vue/max-attributes-per-line
+ 19:1 error Expected indentation of 12 spaces but found 8 spaces vue/html-indent
+ 20:1 error Expected indentation of 8 spaces but found 4 spaces vue/html-indent
+
+/home/gero/documents/uni/pse/pse-dashboard/src/components/FloatingLabelInput.vue
+ 7:5 warning Prop 'label' requires default value to be set vue/require-default-prop
+ 8:5 warning Prop 'modelValue' requires default value to be set vue/require-default-prop
+ 15:16 warning Expected a linebreak before this attribute vue/first-attribute-linebreak
+ 15:29 warning 'class' should be on a new line vue/max-attributes-per-line
+ 15:50 warning Attribute ":id" should go before "class" vue/attributes-order
+ 15:50 warning ':id' should be on a new line vue/max-attributes-per-line
+ 15:62 warning ':value' should be on a new line vue/max-attributes-per-line
+ 16:1 error Expected indentation of 15 spaces but found 12 spaces vue/html-indent
+ 17:1 error Expected indentation of 15 spaces but found 12 spaces vue/html-indent
+ 17:13 warning Attribute ":placeholder" should go before "@input" vue/attributes-order
+ 17:34 warning Attribute "required" should go before "@input" vue/attributes-order
+ 17:34 warning 'required' should be on a new line vue/max-attributes-per-line
+ 17:42 warning Expected 1 line break before closing bracket, but no line breaks found vue/html-closing-bracket-newline
+
+/home/gero/documents/uni/pse/pse-dashboard/src/components/FormLayout.vue
+ 9:35 warning 'src' should be on a new line vue/max-attributes-per-line
+ 9:60 warning 'alt' should be on a new line vue/max-attributes-per-line
+ 9:67 warning 'width' should be on a new line vue/max-attributes-per-line
+ 9:79 warning 'height' should be on a new line vue/max-attributes-per-line
+
+/home/gero/documents/uni/pse/pse-dashboard/src/components/Help.vue
+ 1:1 error Component name "Help" should always be multi-word vue/multi-word-component-names
+ 4:29 warning Attribute "id" should go before "class" vue/attributes-order
+ 4:29 warning 'id' should be on a new line vue/max-attributes-per-line
+ 9:45 warning Expected 1 line break after opening tag (`<h5>`), but no line breaks found vue/singleline-html-element-content-newline
+ 9:69 warning Expected 1 line break before closing tag (`</h5>`), but no line breaks found vue/singleline-html-element-content-newline
+ 10:21 warning Require self-closing on HTML elements (<button>) vue/html-self-closing
+ 10:43 warning 'class' should be on a new line vue/max-attributes-per-line
+ 10:61 warning 'data-bs-dismiss' should be on a new line vue/max-attributes-per-line
+ 14:41 warning 'v-html' should be on a new line vue/max-attributes-per-line
+ 14:41 warning 'v-html' directive can lead to XSS attack vue/no-v-html
+ 18:43 warning 'class' should be on a new line vue/max-attributes-per-line
+ 18:69 warning 'data-bs-dismiss' should be on a new line vue/max-attributes-per-line
+ 18:93 warning Expected 1 line break after opening tag (`<button>`), but no line breaks found vue/singleline-html-element-content-newline
+ 18:118 warning Expected 1 line break before closing tag (`</button>`), but no line breaks found vue/singleline-html-element-content-newline
+
+/home/gero/documents/uni/pse/pse-dashboard/src/components/LastUpdate.vue
+ 12:5 warning Prop 'iso' requires default value to be set vue/require-default-prop
+ 13:5 warning Prop 'unix' requires default value to be set vue/require-default-prop
+ 36:1 error Expected indentation of 4 spaces but found 0 spaces vue/html-indent
+
+/home/gero/documents/uni/pse/pse-dashboard/src/components/Loading.vue
+ 1:1 error Component name "Loading" should always be multi-word vue/multi-word-component-names
+ 9:30 warning Attribute "v-else" should go before "class" vue/attributes-order
+ 9:30 warning 'v-else' should be on a new line vue/max-attributes-per-line
+
+/home/gero/documents/uni/pse/pse-dashboard/src/components/LogEntry.vue
+ 3:1 error The template requires child element vue/valid-template-root
+ 3:1 warning Require self-closing on HTML elements (<template>) vue/html-self-closing
+
+/home/gero/documents/uni/pse/pse-dashboard/src/components/Navbar.vue
+ 1:1 error Component name "Navbar" should always be multi-word vue/multi-word-component-names
+ 6:32 warning Expected 1 line break after opening tag (`<div>`), but 2 line breaks found vue/multiline-html-element-content-newline
+ 9:47 warning 'to' should be on a new line vue/max-attributes-per-line
+ 10:1 error Expected indentation of 16 spaces but found 20 spaces vue/html-indent
+ 10:50 warning 'alt' should be on a new line vue/max-attributes-per-line
+ 10:57 warning 'width' should be on a new line vue/max-attributes-per-line
+ 10:69 warning 'height' should be on a new line vue/max-attributes-per-line
+ 14:44 warning 'type' should be on a new line vue/max-attributes-per-line
+ 14:58 warning 'data-bs-toggle' should be on a new line vue/max-attributes-per-line
+ 14:84 warning 'data-bs-target' should be on a new line vue/max-attributes-per-line
+ 15:17 warning Require self-closing on HTML elements (<span>) vue/html-self-closing
+ 17:51 warning Attribute "id" should go before "class" vue/attributes-order
+ 17:51 warning 'id' should be on a new line vue/max-attributes-per-line
+ 17:65 warning Expected 1 line break after opening tag (`<div>`), but 2 line breaks found vue/multiline-html-element-content-newline
+ 21:49 warning 'class' should be on a new line vue/max-attributes-per-line
+ 23:62 warning 'class' should be on a new line vue/max-attributes-per-line
+ 28:57 warning 'class' should be on a new line vue/max-attributes-per-line
+ 40:61 warning 'href' should be on a new line vue/max-attributes-per-line
+ 40:70 warning 'role' should be on a new line vue/max-attributes-per-line
+ 40:84 warning 'data-bs-toggle' should be on a new line vue/max-attributes-per-line
+ 41:29 warning Require self-closing on HTML elements (<i>) vue/html-self-closing
+ 44:29 error Elements in iteration expect to have 'v-bind:key' directives vue/require-v-for-key
+ 45:58 warning ':class' should be on a new line vue/max-attributes-per-line
+ 45:100 warning '@click' should be on a new line vue/max-attributes-per-line
+ 51:24 warning Expected a linebreak before this attribute vue/first-attribute-linebreak
+ 51:33 warning 'class' should be on a new line vue/max-attributes-per-line
+ 52:1 error Expected indentation of 23 spaces but found 24 spaces vue/html-indent
+ 52:48 warning 'data-bs-target' should be on a new line vue/max-attributes-per-line
+ 52:70 warning Expected 1 line break before closing bracket, but no line breaks found vue/html-closing-bracket-newline
+ 55:50 warning 'class' should be on a new line vue/max-attributes-per-line
+ 56:37 warning 'class' should be on a new line vue/max-attributes-per-line
+ 56:70 warning 'role' should be on a new line vue/max-attributes-per-line
+ 56:84 warning 'data-bs-toggle' should be on a new line vue/max-attributes-per-line
+ 57:64 warning Require self-closing on HTML elements (<i>) vue/html-self-closing
+ 60:61 warning 'class' should be on a new line vue/max-attributes-per-line
+ 60:83 warning Expected 1 line break after opening tag (`<router-link>`), but no line breaks found vue/singleline-html-element-content-newline
+ 60:111 warning Expected 1 line break before closing tag (`</router-link>`), but no line breaks found vue/singleline-html-element-content-newline
+ 62:58 warning '@click' should be on a new line vue/max-attributes-per-line
+ 62:82 warning Attribute "class" should go before "@click" vue/attributes-order
+ 62:82 warning 'class' should be on a new line vue/max-attributes-per-line
+ 62:104 warning Expected 1 line break after opening tag (`<router-link>`), but no line breaks found vue/singleline-html-element-content-newline
+ 62:130 warning Expected 1 line break before closing tag (`</router-link>`), but no line breaks found vue/singleline-html-element-content-newline
+
+/home/gero/documents/uni/pse/pse-dashboard/src/components/PasswordInput.vue
+ 6:5 warning Prop 'modelValue' requires default value to be set vue/require-default-prop
+ 7:5 warning Prop 'label' requires default value to be set vue/require-default-prop
+ 14:29 warning Expected a linebreak before this attribute vue/first-attribute-linebreak
+ 15:1 error Expected indentation of 28 spaces but found 8 spaces vue/html-indent
+ 15:24 warning ':modelValue' should be on a new line vue/max-attributes-per-line
+ 15:24 warning Attribute ':modelValue' must be hyphenated vue/attribute-hyphenation
+ 15:49 warning '@update:modelValue' should be on a new line vue/max-attributes-per-line
+ 15:49 warning v-on event '@update:modelValue' must be hyphenated vue/v-on-event-hyphenation
+ 16:1 error Expected indentation of 32 spaces but found 8 spaces vue/html-indent
+ 16:46 warning Expected 1 line break before closing bracket, but no line breaks found vue/html-closing-bracket-newline
+ 19:13 warning Disallow self-closing on HTML void elements (<input/>) vue/html-self-closing
+ 19:36 warning 'class' should be on a new line vue/max-attributes-per-line
+ 19:54 warning 'autocomplete' should be on a new line vue/max-attributes-per-line
+ 19:73 warning Attribute "v-model" should go before "autocomplete" vue/attributes-order
+ 19:73 warning 'v-model' should be on a new line vue/max-attributes-per-line
+ 19:100 warning Expected a space before '/>', but not found vue/html-closing-bracket-spacing
+ 20:27 warning ':class' should be on a new line vue/max-attributes-per-line
+
+/home/gero/documents/uni/pse/pse-dashboard/src/components/PasswordValidator.vue
+ 6:14 warning Prop "modelValue" should define at least its type vue/require-prop-types
+ 16:1 error Expected indentation of 4 spaces but found 8 spaces vue/script-indent
+ 17:1 error Expected indentation of 0 spaces but found 8 spaces vue/script-indent
+ 21:1 error Expected indentation of 4 spaces but found 8 spaces vue/script-indent
+ 22:1 error Expected indentation of 0 spaces but found 8 spaces vue/script-indent
+ 26:1 error Expected indentation of 4 spaces but found 8 spaces vue/script-indent
+ 27:1 error Expected indentation of 4 spaces but found 8 spaces vue/script-indent
+ 32:1 error Expected indentation of 4 spaces but found 8 spaces vue/script-indent
+ 33:1 error Expected indentation of 4 spaces but found 8 spaces vue/script-indent
+ 34:1 error Expected indentation of 0 spaces but found 8 spaces vue/script-indent
+ 38:1 error Expected indentation of 4 spaces but found 8 spaces vue/script-indent
+ 39:1 error Expected indentation of 4 spaces but found 8 spaces vue/script-indent
+ 40:1 error Expected indentation of 0 spaces but found 8 spaces vue/script-indent
+ 44:1 error Expected indentation of 4 spaces but found 8 spaces vue/script-indent
+ 45:1 error Expected indentation of 4 spaces but found 8 spaces vue/script-indent
+ 46:1 error Expected indentation of 4 spaces but found 8 spaces vue/script-indent
+ 47:1 error Expected indentation of 4 spaces but found 8 spaces vue/script-indent
+ 48:1 error Expected indentation of 4 spaces but found 8 spaces vue/script-indent
+ 72:49 warning Attribute "v-model" should go before ":label" vue/attributes-order
+ 72:49 warning 'v-model' should be on a new line vue/max-attributes-per-line
+ 75:58 warning Attribute "v-model" should go before ":label" vue/attributes-order
+ 75:58 warning 'v-model' should be on a new line vue/max-attributes-per-line
+ 81:9 error Elements in iteration expect to have 'v-bind:key' directives vue/require-v-for-key
+ 81:50 warning 'class' should be on a new line vue/max-attributes-per-line
+ 82:1 error Expected indentation of 12 spaces but found 11 spaces vue/html-indent
+
+/home/gero/documents/uni/pse/pse-dashboard/src/components/ProgressTime.vue
+ 8:5 warning Prop 'unix' requires default value to be set vue/require-default-prop
+ 16:1 error Expected indentation of 4 spaces but found 0 spaces vue/html-indent
+
+/home/gero/documents/uni/pse/pse-dashboard/src/components/Subscription.vue
+ 1:1 error Component name "Subscription" should always be multi-word vue/multi-word-component-names
+ 6:5 warning Prop 'sub' requires default value to be set vue/require-default-prop
+ 6:5 warning Prop "sub" should define at least its type vue/require-prop-types
+ 58:14 warning Expected a linebreak before this attribute vue/first-attribute-linebreak
+ 58:52 warning 'data-bs-toggle' should be on a new line vue/max-attributes-per-line
+ 59:1 error Expected indentation of 13 spaces but found 8 spaces vue/html-indent
+ 59:39 warning Expected 1 line break before closing bracket, but no line breaks found vue/html-closing-bracket-newline
+ 61:13 warning Require self-closing on HTML elements (<i>) vue/html-self-closing
+ 61:67 warning 'style' should be on a new line vue/max-attributes-per-line
+ 63:69 warning Expected 1 line break after opening tag (`<div>`), but 2 line breaks found vue/multiline-html-element-content-newline
+ 67:38 warning Expected 1 line break after opening tag (`<h6>`), but no line breaks found vue/singleline-html-element-content-newline
+ 67:64 warning Expected 1 line break before closing tag (`</h6>`), but no line breaks found vue/singleline-html-element-content-newline
+ 77:29 warning Expected a linebreak before this attribute vue/first-attribute-linebreak
+ 78:1 error Expected indentation of 28 spaces but found 20 spaces vue/html-indent
+ 78:44 warning 'data-bs-target' should be on a new line vue/max-attributes-per-line
+ 79:1 error Expected indentation of 28 spaces but found 20 spaces vue/html-indent
+ 85:60 warning '@click' should be on a new line vue/max-attributes-per-line
+ 93:32 warning 'class' should be on a new line vue/max-attributes-per-line
+ 93:49 warning 'data-bs-parent' should be on a new line vue/max-attributes-per-line
+ 96:21 error Elements in iteration expect to have 'v-bind:key' directives vue/require-v-for-key
+
+/home/gero/documents/uni/pse/pse-dashboard/src/views/EpisodesView.vue
+ 22:29 warning Expected 1 line break after opening tag (`<h1>`), but no line breaks found vue/singleline-html-element-content-newline
+ 22:74 warning Expected 1 line break before closing tag (`</h1>`), but no line breaks found vue/singleline-html-element-content-newline
+ 24:18 warning Attribute ':waitingFor' must be hyphenated vue/attribute-hyphenation
+ 26:17 error Custom elements in iteration require 'v-bind:key' directives vue/valid-v-for
+ 26:61 warning ':action' should be on a new line vue/max-attributes-per-line
+
+/home/gero/documents/uni/pse/pse-dashboard/src/views/ForgotPasswordView.vue
+ 21:39 warning Expected 1 line break after opening tag (`<h1>`), but no line breaks found vue/singleline-html-element-content-newline
+ 21:78 warning Expected 1 line break before closing tag (`</h1>`), but no line breaks found vue/singleline-html-element-content-newline
+ 25:46 warning Attribute "v-model" should go before "type" vue/attributes-order
+ 25:46 warning 'v-model' should be on a new line vue/max-attributes-per-line
+ 25:62 warning ':label' should be on a new line vue/max-attributes-per-line
+ 28:35 warning 'class' should be on a new line vue/max-attributes-per-line
+
+/home/gero/documents/uni/pse/pse-dashboard/src/views/LoginView.vue
+ 26:39 warning Expected 1 line break after opening tag (`<h1>`), but no line breaks found vue/singleline-html-element-content-newline
+ 26:71 warning Expected 1 line break before closing tag (`</h1>`), but no line breaks found vue/singleline-html-element-content-newline
+ 28:39 warning Expected 1 line break after opening tag (`<form>`), but 2 line breaks found vue/multiline-html-element-content-newline
+ 31:62 warning Attribute "v-model" should go before ":label" vue/attributes-order
+ 31:62 warning 'v-model' should be on a new line vue/max-attributes-per-line
+ 34:57 warning Attribute "v-model" should go before ":label" vue/attributes-order
+ 34:57 warning 'v-model' should be on a new line vue/max-attributes-per-line
+ 41:52 warning 'value' should be on a new line vue/max-attributes-per-line
+ 41:72 warning Attribute "v-model" should go before "value" vue/attributes-order
+ 41:72 warning 'v-model' should be on a new line vue/max-attributes-per-line
+ 56:35 warning 'class' should be on a new line vue/max-attributes-per-line
+ 66:17 warning Expected 1 line break before closing tag (`</form>`), but 2 line breaks found vue/multiline-html-element-content-newline
+ 71:41 warning Expected 1 line break after opening tag (`<p>`), but no line breaks found vue/singleline-html-element-content-newline
+ 71:52 warning Expected 1 line break before closing tag (`</p>`), but no line breaks found vue/singleline-html-element-content-newline
+
+/home/gero/documents/uni/pse/pse-dashboard/src/views/RegistrationView.vue
+ 38:39 warning Expected 1 line break after opening tag (`<h1>`), but no line breaks found vue/singleline-html-element-content-newline
+ 38:71 warning Expected 1 line break before closing tag (`</h1>`), but no line breaks found vue/singleline-html-element-content-newline
+ 42:52 warning 'type' should be on a new line vue/max-attributes-per-line
+ 42:64 warning ':label' should be on a new line vue/max-attributes-per-line
+ 45:49 warning 'type' should be on a new line vue/max-attributes-per-line
+ 45:62 warning ':label' should be on a new line vue/max-attributes-per-line
+ 51:35 warning 'class' should be on a new line vue/max-attributes-per-line
+
+/home/gero/documents/uni/pse/pse-dashboard/src/views/ResetPasswordView.vue
+ 9:5 warning Prop 'token' requires default value to be set vue/require-default-prop
+ 10:5 warning Prop 'username' requires default value to be set vue/require-default-prop
+ 41:43 warning Expected 1 line break after opening tag (`<h1>`), but no line breaks found vue/singleline-html-element-content-newline
+ 41:77 warning Expected 1 line break before closing tag (`</h1>`), but no line breaks found vue/singleline-html-element-content-newline
+ 47:35 warning 'class' should be on a new line vue/max-attributes-per-line
+
+/home/gero/documents/uni/pse/pse-dashboard/src/views/SettingsView.vue
+ 176:29 warning Expected 1 line break after opening tag (`<h1>`), but no line breaks found vue/singleline-html-element-content-newline
+ 176:57 warning Expected 1 line break before closing tag (`</h1>`), but no line breaks found vue/singleline-html-element-content-newline
+ 179:52 warning Attribute "class" should go before "@submit.prevent" vue/attributes-order
+ 179:52 warning 'class' should be on a new line vue/max-attributes-per-line
+ 182:63 warning Attribute "v-model" should go before ":label" vue/attributes-order
+ 182:63 warning 'v-model' should be on a new line vue/max-attributes-per-line
+ 182:90 warning Expected a space before '/>', but not found vue/html-closing-bracket-spacing
+ 187:35 warning 'class' should be on a new line vue/max-attributes-per-line
+ 193:51 warning Attribute "class" should go before "@submit.prevent" vue/attributes-order
+ 193:51 warning 'class' should be on a new line vue/max-attributes-per-line
+ 196:1 error Expected indentation of 12 spaces but found 17 spaces vue/html-indent
+ 197:33 warning Expected a linebreak before this attribute vue/first-attribute-linebreak
+ 198:1 error Expected indentation of 32 spaces but found 16 spaces vue/html-indent
+ 198:17 warning Attribute "v-model" should go before ":label" vue/attributes-order
+ 198:42 warning Expected 1 line break before closing bracket, but no line breaks found vue/html-closing-bracket-newline
+ 198:42 warning Expected a space before '/>', but not found vue/html-closing-bracket-spacing
+ 200:1 error Expected indentation of 12 spaces but found 17 spaces vue/html-indent
+ 201:33 warning Expected a linebreak before this attribute vue/first-attribute-linebreak
+ 202:1 error Expected indentation of 32 spaces but found 16 spaces vue/html-indent
+ 202:17 warning Attribute "v-model" should go before ":label" vue/attributes-order
+ 202:42 warning Expected 1 line break before closing bracket, but no line breaks found vue/html-closing-bracket-newline
+ 205:57 warning Attribute "v-model" should go before ":label" vue/attributes-order
+ 205:57 warning 'v-model' should be on a new line vue/max-attributes-per-line
+ 205:82 warning Expected a space before '/>', but not found vue/html-closing-bracket-spacing
+ 207:35 warning 'class' should be on a new line vue/max-attributes-per-line
+ 215:31 warning 'class' should be on a new line vue/max-attributes-per-line
+ 218:13 warning Disallow self-closing on HTML void elements (<input/>) vue/html-self-closing
+ 218:20 warning Expected a linebreak before this attribute vue/first-attribute-linebreak
+ 218:32 warning Attribute "id" should go before "type" vue/attributes-order
+ 218:32 warning 'id' should be on a new line vue/max-attributes-per-line
+ 218:42 warning 'accept' should be on a new line vue/max-attributes-per-line
+ 218:72 warning 'hidden' should be on a new line vue/max-attributes-per-line
+ 219:1 error Expected indentation of 19 spaces but found 16 spaces vue/html-indent
+ 219:37 warning Expected 1 line break before closing bracket, but no line breaks found vue/html-closing-bracket-newline
+ 220:41 warning Attribute "class" should go before "@click" vue/attributes-order
+ 220:41 warning 'class' should be on a new line vue/max-attributes-per-line
+ 226:44 warning Attribute "class" should go before "@submit.prevent" vue/attributes-order
+ 226:44 warning 'class' should be on a new line vue/max-attributes-per-line
+ 229:57 warning Attribute "v-model" should go before ":label" vue/attributes-order
+ 229:57 warning 'v-model' should be on a new line vue/max-attributes-per-line
+ 229:81 warning Expected a space before '/>', but not found vue/html-closing-bracket-spacing
+ 231:35 warning 'class' should be on a new line vue/max-attributes-per-line
+
+/home/gero/documents/uni/pse/pse-dashboard/src/views/SubscriptionsView.vue
+ 9:5 warning Prop 'url' requires default value to be set vue/require-default-prop
+ 83:29 warning Expected 1 line break after opening tag (`<h1>`), but no line breaks found vue/singleline-html-element-content-newline
+ 83:66 warning Expected 1 line break before closing tag (`</h1>`), but no line breaks found vue/singleline-html-element-content-newline
+ 86:49 warning Attribute "class" should go before "@submit.prevent" vue/attributes-order
+ 86:49 warning 'class' should be on a new line vue/max-attributes-per-line
+ 87:72 warning Attribute "v-model" should go before ":label" vue/attributes-order
+ 87:72 warning 'v-model' should be on a new line vue/max-attributes-per-line
+ 88:45 warning 'type' should be on a new line vue/max-attributes-per-line
+ 93:18 warning Attribute ':waitingFor' must be hyphenated vue/attribute-hyphenation
+ 101:53 warning '@click' should be on a new line vue/max-attributes-per-line
+ 104:25 warning Expected a linebreak before this attribute vue/first-attribute-linebreak
+ 105:1 error Expected indentation of 24 spaces but found 16 spaces vue/html-indent
+ 106:1 error Expected indentation of 24 spaces but found 16 spaces vue/html-indent
+ 106:40 warning 'data-bs-target' should be on a new line vue/max-attributes-per-line
+ 106:69 warning Expected 1 line break before closing bracket, but no line breaks found vue/html-closing-bracket-newline
+ 111:21 error Elements in iteration expect to have 'v-bind:key' directives vue/require-v-for-key
+ 111:48 warning 'class' should be on a new line vue/max-attributes-per-line
+ 112:32 warning Expected a linebreak before this attribute vue/first-attribute-linebreak
+ 113:1 error Expected indentation of 31 spaces but found 24 spaces vue/html-indent
+ 113:41 warning ':value' should be on a new line vue/max-attributes-per-line
+ 113:54 warning Attribute "v-model" should go before ":value" vue/attributes-order
+ 113:54 warning 'v-model' should be on a new line vue/max-attributes-per-line
+ 113:84 warning Expected 1 line break before closing bracket, but no line breaks found vue/html-closing-bracket-newline
+ 114:50 warning '@unsubscribe' should be on a new line vue/max-attributes-per-line
+ 117:19 warning Expected 1 line break before closing tag (`</loading>`), but 2 line breaks found vue/multiline-html-element-content-newline
+ 123:24 warning Attribute "id" should go before "class" vue/attributes-order
+ 123:24 warning 'id' should be on a new line vue/max-attributes-per-line
+ 123:37 warning 'tabindex' should be on a new line vue/max-attributes-per-line
+ 125:40 warning Expected 1 line break after opening tag (`<div>`), but 2 line breaks found vue/multiline-html-element-content-newline
+ 132:21 warning Require self-closing on HTML elements (<button>) vue/html-self-closing
+ 132:43 warning 'class' should be on a new line vue/max-attributes-per-line
+ 132:61 warning 'data-bs-dismiss' should be on a new line vue/max-attributes-per-line
+ 132:85 warning 'aria-label' should be on a new line vue/max-attributes-per-line
+ 137:80 warning Attribute "v-model" should go before ":label" vue/attributes-order
+ 137:80 warning 'v-model' should be on a new line vue/max-attributes-per-line
+ 142:43 warning 'class' should be on a new line vue/max-attributes-per-line
+ 142:69 warning 'data-bs-dismiss' should be on a new line vue/max-attributes-per-line
+ 145:43 warning '@click' should be on a new line vue/max-attributes-per-line
+ 145:68 warning Attribute "data-bs-dismiss" should go before "@click" vue/attributes-order
+ 145:68 warning 'data-bs-dismiss' should be on a new line vue/max-attributes-per-line
+ 145:92 warning Attribute "class" should go before "@click" vue/attributes-order
+ 145:92 warning 'class' should be on a new line vue/max-attributes-per-line
+ 154:24 warning Attribute "id" should go before "class" vue/attributes-order
+ 154:24 warning 'id' should be on a new line vue/max-attributes-per-line
+ 154:41 warning 'tabindex' should be on a new line vue/max-attributes-per-line
+ 156:40 warning Expected 1 line break after opening tag (`<div>`), but 2 line breaks found vue/multiline-html-element-content-newline
+ 163:21 warning Require self-closing on HTML elements (<button>) vue/html-self-closing
+ 163:43 warning 'class' should be on a new line vue/max-attributes-per-line
+ 163:61 warning 'data-bs-dismiss' should be on a new line vue/max-attributes-per-line
+ 163:85 warning 'aria-label' should be on a new line vue/max-attributes-per-line
+ 168:80 warning 'role' should be on a new line vue/max-attributes-per-line
+ 169:25 warning Require self-closing on HTML elements (<i>) vue/html-self-closing
+ 176:25 error Elements in iteration expect to have 'v-bind:key' directives vue/require-v-for-key
+ 177:52 warning Expected 1 space before '}}', but not found vue/mustache-interpolation-spacing
+ 187:43 warning 'class' should be on a new line vue/max-attributes-per-line
+ 187:69 warning 'data-bs-dismiss' should be on a new line vue/max-attributes-per-line
+ 190:43 warning '@click' should be on a new line vue/max-attributes-per-line
+ 190:76 warning Attribute "data-bs-dismiss" should go before "@click" vue/attributes-order
+ 190:76 warning 'data-bs-dismiss' should be on a new line vue/max-attributes-per-line
+ 190:100 warning Attribute "class" should go before "@click" vue/attributes-order
+ 190:100 warning 'class' should be on a new line vue/max-attributes-per-line
+
+✖ 310 problems (56 errors, 254 warnings)
+ 43 errors and 194 warnings potentially fixable with the `--fix` option.
+
diff --git a/30-qualitaetsheft/assets/unsubscribe-podcasts.png b/30-qualitaetsheft/assets/unsubscribe-podcasts.png
new file mode 100644
index 0000000..3a25de6
--- /dev/null
+++ b/30-qualitaetsheft/assets/unsubscribe-podcasts.png
Binary files differ
diff --git a/30-qualitaetsheft/qualitaetsheft.tex b/30-qualitaetsheft/qualitaetsheft.tex
new file mode 100644
index 0000000..cb6eed1
--- /dev/null
+++ b/30-qualitaetsheft/qualitaetsheft.tex
@@ -0,0 +1,106 @@
+% \documentclass[a4paper, UTF8, 12pt]{article}
+% \documentclass[a4paper, UTF8, 12pt]{scrbook}
+\documentclass[parskip=half, a4paper, 12pt]{scrartcl}
+
+\usepackage[german]{babel}
+\usepackage[dvipsnames]{xcolor}
+\usepackage{tabularx}
+% \usepackage{tikz}
+% \usetikzlibrary{positioning}
+% \usetikzlibrary{calc}
+% \usetikzlibrary{arrows}
+% \usetikzlibrary{intersections}
+% \usepackage{tikz-uml}
+% \usepackage{pgf-umlsd}
+% \usepgflibrary{arrows} % for pgf-umlsd
+% \tikzumlset{fill usecase=white}
+\usepackage[margin=2.5cm]{geometry}
+\usepackage{csquotes}
+\usepackage[T1]{fontenc}
+\usepackage{amsmath}
+\usepackage{pdflscape}
+\usepackage{graphicx}
+\usepackage{caption}
+\usepackage{subcaption}
+\usepackage{float}
+\usepackage{enumitem}
+% \usepackage{textpos}
+\usepackage{hyperref}
+\usepackage{fancyhdr}
+% \usepackage{multicol}
+\usepackage{rest-api}
+\usepackage{wrapfig}
+\usepackage{textcomp}
+\usepackage{ulem}
+\usepackage{fourier}
+\usepackage{array}
+\usepackage{makecell}
+\usepackage{pgfplots, pgfplotstable}
+\usepgfplotslibrary{dateplot}
+\pgfplotsset{compat=newest}
+
+\hypersetup{
+% ‘texdoc hyperref‘ for options
+ pdftitle={
+ PSE\textsuperscript{2}
+ - Podcast Synchronisation made Efficient Pflichtenheft
+ },
+ bookmarks=true,
+}
+\usepackage{csquotes}
+\usepackage[toc]{glossaries}
+\usepackage{lastpage}
+
+\renewcommand\theadalign{bc}
+\renewcommand\theadfont{\bfseries}
+\renewcommand\theadgape{\Gape[4pt]}
+\renewcommand\cellgape{\Gape[4pt]}
+
+\include{sections/glossar}
+
+\title{Qualitätsheft}
+\author{KIT Students et al}
+\date{2.12.2022}
+
+\pagestyle{fancy}
+\setkomafont{pageheadfoot}{\footnotesize\scshape}
+\fancyhead{} % clear all header fields
+% \fancyhead[L]{Pflichtenheft}
+\fancyhead[L]{PSE\textsuperscript{2} - Podcast Synchronisation made Efficient}
+% \fancyhead[R]{2.12.2022}
+\fancyfoot{} % clear all footer fields
+\fancyfoot[R]{\thepage{} / \pageref{LastPage}}
+\fancyfoot[L]{Praxis der Softwareentwicklung}
+\fancyfoot[C]{}
+
+\begin{document}
+
+\include{titlepage}
+\setcounter{page}{1}
+
+\tableofcontents
+
+\include{sections/einleitung}
+\newpage
+
+\include{sections/changes}
+\newpage
+
+\include{sections/testfaelle}
+\newpage
+
+\include{sections/coverage}
+\newpage
+
+\include{sections/lasttest}
+\newpage
+
+\include{sections/problems}
+\newpage
+
+\include{sections/codestyle}
+
+\printglossaries
+% \glsaddall
+
+\end{document}
diff --git a/30-qualitaetsheft/sections/backend.tex b/30-qualitaetsheft/sections/backend.tex
new file mode 100644
index 0000000..19efd65
--- /dev/null
+++ b/30-qualitaetsheft/sections/backend.tex
@@ -0,0 +1,28 @@
+\section{Backend}
+
+Für das Backend wird das \Gls{java}-Framework \Gls{spring} verwendet. Neben seiner Modularität,
+bietet es viele Funktionen, die unter
+anderem die Entwicklung von Backend-Anwendungen vereinfachen.
+Darunter fällt zum Beispiel die Unterstützung von Dependency Injection, dessen
+Vorteile bereits beschrieben wurden.
+Außerdem unterstützt \Gls{java} \Gls{spring} intern eine Verwaltung von \Glspl{db}, sodass
+sich nicht mit dem \Gls{SQL}-Code an sich befasst werden muss.
+Auch bezüglich Authentifizierung und Sicherheit bietet \Gls{spring} eigene Funktionalitäten.
+
+Zusätzlich dazu wird als Build-System für das \Gls{java}-\Gls{spring}-Backend Maven verwendet.
+Maven hilft dabei alle Abhängigkeiten des Projekts zu verwalten und automatisiert
+den Build Prozess.
+Durch die zusätzliche Unterstützung von Versionskontrollsystemen und der Kompatibilität
+zu vielen Continuous Integration-Tools wird außerdem die Entwicklung in einem Team erleichtert
+und optimiert. Denn dadurch können Build- und Deployment-Prozesse automatisiert werden.
+Außerdem bietet Maven Bibliotheken zum Testen sowie zur Generierung von Dokumentationen an.
+
+Vom Backend benötigte Abhängigkeiten:
+\begin{itemize}
+ \item \Gls{spring} Web
+ \item \Gls{spring} Security
+ \item \Gls{spring} Mail Sender
+ \item \Gls{spring} Data JPA
+ \item Lombok
+ \item Rome (\Gls{rss} parsing/fetching)
+\end{itemize} \ No newline at end of file
diff --git a/30-qualitaetsheft/sections/changes.tex b/30-qualitaetsheft/sections/changes.tex
new file mode 100644
index 0000000..27188a7
--- /dev/null
+++ b/30-qualitaetsheft/sections/changes.tex
@@ -0,0 +1,67 @@
+\section{Änderungen zum Implementierungsheft}
+
+Zuallererst werden im Folgenden die Änderungen zum Implementierungsheft aufgelistet und es wird erläutert warum diese
+Änderungen gemacht wurden.
+
+\subsection{Kriterien}
+
+Zwei weitere Kriterien sind nun erfüllt. Diese sind:
+
+\begin{table}[h!]
+\begin{tabularx}{\textwidth}{l|X|c}
+Bezeichner & Zusammenfassung & Implementiert\\\hline
+\textlangle RM7 \textrangle & 50 Anfragen / Sekunde bearbeiten & Ja*\\\hline\hline
+\textlangle RC2 \textrangle & \Glspl{abo} in Weboberfläche deabonnieren & Ja
+\end{tabularx}
+\end{table}
+
+*nicht unter Mindestanforderungen - 2 Kerne, 2GB RAM, 12GB Speicher
+
+\subsection{Aussagekräftige Benachrichtigungen im Frontend}
+
+Zur Implementierungsphase wurden generische Fehlermeldungen angezeigt, falls
+eine Anfrage an den Server fehlschlug. Mit Fehlercodes können Nutzer nicht
+besonders viel anfangen, weshalb wir die Benachrichtigungen überarbeitet haben.
+
+Jetzt werden neben farbenfrohen Symbolen auch verständliche Meldungen angezeigt.
+Fehlermeldungen von Server-Anfragen zeigen dabei einen unterschiedlichen Text
+an, je nachdem welcher HTTP-Code zurück gegeben wurde oder ob der Server
+überhaupt erreichbar ist.
+
+\begin{figure}[h!]
+ \centering
+ \includegraphics[scale=0.5]{assets/notifications.png}
+ \caption{Eine Auswahl von Benachrichtigungen mit Symbol und Nachricht}
+\end{figure}
+
+\newpage
+\subsection{Deabonnieren von Podcasts}
+
+Eine der letzten offenen Kann-Kriterien war das Deabonnieren von Podcasts im
+Dashboard \textlangle RC2 \textrangle. Dies wurde nun nachgeholt. Dabei
+stehen dem Nutzer zwei Optionen zur Verfügung. Die Abonnements können einzeln
+über einen Knopf entfernt werden oder es können mehrere Abonnements mit
+Checkboxen ausgewählt und dann zusammen gelöscht werden.
+Ein weiterer Knopf ermöglicht das gleichzeitige Auswählen aller Abonnements.
+
+Mit beiden Optionen wird der Nutzer erst über die Folgen des Deabonnierens
+in einem Popup-Fenster informiert. Hierbei handelt es sich um den Verlust aller
+Hörfortschritte zu den Abonnements. Dabei wird auf dem Pop-Up zu jedem
+Abonnement auch die Anzahl der gehörten Episoden aufgelistet. Erst bei Bestätigung
+des Popups durch den Benutzer werden die Abonnements und Episoden vom Account entfernt.
+
+\begin{figure}[H]
+ \centering
+ \begin{minipage}{.47\textwidth}
+ \centering
+ \fbox{\includegraphics[width=\textwidth]{assets/select-subscriptions.png}}
+ \caption{Auswählen von Abonnements über Checkboxen}
+ \end{minipage}
+ \hspace{.5cm}
+ \begin{minipage}{.47\textwidth}
+ \centering
+ \includegraphics[width=\textwidth]{assets/unsubscribe-podcasts.png}
+ \caption{Übersicht und Bestätigung des Deabonnements}
+ \end{minipage}
+\end{figure}
+
diff --git a/30-qualitaetsheft/sections/codestyle.tex b/30-qualitaetsheft/sections/codestyle.tex
new file mode 100644
index 0000000..2eb7a0a
--- /dev/null
+++ b/30-qualitaetsheft/sections/codestyle.tex
@@ -0,0 +1,224 @@
+\section{Code-Stil}
+
+\subsection{Server}
+
+% Balkendiagram:
+% zwei Balken: vorher, nachher
+% eine Balken besteht aus verschiedenen Ebenen für jeden Linter Fehler
+\definecolor{error00}{RGB}{255, 0, 0}
+\definecolor{error01}{RGB}{204, 0, 0}
+\definecolor{error02}{RGB}{153, 0, 0}
+\definecolor{error03}{RGB}{102, 0, 0}
+\definecolor{error04}{RGB}{51, 0, 0}
+\definecolor{error05}{RGB}{25, 0, 0}
+
+\definecolor{warning00}{RGB}{255, 255, 0}
+\definecolor{warning01}{RGB}{255, 215, 0}
+\definecolor{warning02}{RGB}{139, 117, 0}
+\definecolor{warning03}{RGB}{238, 201, 0}
+\definecolor{warning04}{RGB}{255, 215, 0}
+\definecolor{warning05}{RGB}{238, 238, 0}
+\definecolor{warning06}{RGB}{139, 139, 0}
+\definecolor{warning07}{RGB}{255, 255, 0}
+\definecolor{warning08}{RGB}{238, 201, 0}
+\definecolor{warning09}{RGB}{205, 173, 0}
+\definecolor{warning10}{RGB}{205, 205, 0}
+\definecolor{warning11}{RGB}{205, 173, 0}
+\definecolor{warning12}{RGB}{238, 238, 0}
+\definecolor{warning13}{RGB}{139, 117, 0}
+\definecolor{warning14}{RGB}{139, 139, 0}
+
+\vspace{-2cm}
+\begin{tikzpicture}
+\begin{axis}[
+ title={Code-Stil-Anmerkungen durch Checkstyle Sun-Checks},
+ ybar stacked, ymin=0,
+ bar width=10mm,
+ symbolic x coords={Vorher,Nachher},
+ legend style={
+ at={(1.3,0.5)},
+ cells={anchor=west},
+ anchor=west
+ },
+ xtick=data,
+ xticklabel style={text width=2cm,align=center},
+ nodes near coords={}
+]
+
+\addplot [fill=error02] coordinates { ({Vorher}, 285 ) ({Nachher}, 0)}; % (sizes) LineLength
+\addplot [fill=error00] coordinates { ({Vorher}, 143 ) ({Nachher}, 0)}; % (misc) FinalParameters
+\addplot [fill=error03] coordinates { ({Vorher}, 101 ) ({Nachher}, 0)}; % (javadoc) JavadocVariable
+\addplot [fill=error04] coordinates { ({Vorher}, 83 ) ({Nachher}, 0)}; % (javadoc) JavadocStyle
+\addplot [fill=error02] coordinates { ({Vorher}, 43 ) ({Nachher}, 0)}; % (design) DesignForExtension
+\addplot [fill=error01] coordinates { ({Vorher}, 39 ) ({Nachher}, 0)}; % (javadoc) MissingJavadocMethod
+\addplot [fill=error01] coordinates { ({Vorher}, 26 ) ({Nachher}, 0)}; % (regexp) RegexpSingleline
+\addplot [fill=error02] coordinates { ({Vorher}, 15 ) ({Nachher}, 0)}; % (whitespace) WhitespaceAround
+\addplot [fill=error01] coordinates { ({Vorher}, 13 ) ({Nachher}, 0)}; % (javadoc) JavadocPackage
+\addplot [fill=error03] coordinates { ({Vorher}, 10 ) ({Nachher}, 0)}; % (whitespace) OperatorWrap
+\addplot [fill=error00] coordinates { ({Vorher}, 10 ) ({Nachher}, 0)}; % (javadoc) JavadocType
+\addplot [fill=error05] coordinates { ({Vorher}, 7 ) ({Nachher}, 0)}; % (imports) AvoidStarImport
+\addplot [fill=error05] coordinates { ({Vorher}, 6 ) ({Nachher}, 0)}; % (coding) MagicNumber
+\addplot [fill=error05] coordinates { ({Vorher}, 4 ) ({Nachher}, 0)}; % (javadoc) JavadocMethod
+\addplot [fill=error04] coordinates { ({Vorher}, 3 ) ({Nachher}, 0)}; % (coding) HiddenField
+\addplot [fill=error02] coordinates { ({Vorher}, 2 ) ({Nachher}, 0)}; % (javadoc) InvalidJavadocPosition
+\addplot [fill=error00] coordinates { ({Vorher}, 2 ) ({Nachher}, 0)}; % (blocks) RightCurly
+\addplot [fill=error03] coordinates { ({Vorher}, 1 ) ({Nachher}, 0)}; % (whitespace) WhitespaceAfter
+\addplot [fill=error04] coordinates { ({Vorher}, 1 ) ({Nachher}, 0)}; % (whitespace) FileTabCharacter
+\addplot [fill=error04] coordinates { ({Vorher}, 1 ) ({Nachher}, 0)}; % (misc) NewlineAtEndOfFile
+\addplot [fill=error01] coordinates { ({Vorher}, 1 ) ({Nachher}, 0)}; % (misc) ArrayTypeStyle
+\addplot [fill=error00] coordinates { ({Vorher}, 1 ) ({Nachher}, 0)}; % (imports) UnusedImports
+\addplot [fill=error03, point meta=y,nodes near coords,nodes near coords align={anchor=south}] coordinates { ({Vorher}, 2 ) ({Nachher}, 1)}; % (design) HideUtilityClassConstructor
+
+\legend{
+sizes: LineLength,
+misc: FinalParameters,
+javadoc: JavadocVariable,
+javadoc: JavadocStyle,
+design: DesignForExtension,
+javadoc: MissingJavadocMethod,
+regexp: RegexpSingleline,
+whitespace: WhitespaceAround,
+javadoc: JavadocPackage,
+whitespace: OperatorWrap,
+javadoc: JavadocType,
+imports: AvoidStarImport,
+coding: MagicNumber,
+javadoc: JavadocMethod,
+coding: HiddenField,
+javadoc: InvalidJavadocPosition,
+blocks: RightCurly,
+whitespace: WhitespaceAfter,
+whitespace: FileTabCharacter,
+misc: NewlineAtEndOfFile,
+misc: ArrayTypeStyle,
+imports: UnusedImports,
+design: HideUtilityClassConstructor,
+}
+\end{axis}
+\end{tikzpicture}
+
+\begin{tabularx}{\textwidth}{X | c | c}
+Regel & Vorher & Nacher \\ \hline
+sizes: LineLength & 285 & 0 \\
+misc: FinalParameters & 143 & 0 \\
+javadoc: JavadocVariable & 101 & 0 \\
+javadoc: JavadocStyle & 83 & 0 \\
+design: DesignForExtension & 43 & 0 \\
+javadoc: MissingJavadocMethod & 39 & 0 \\
+regexp: RegexpSingleline & 26 & 0 \\
+whitespace: WhitespaceAround & 15 & 0 \\
+javadoc: JavadocPackage & 13 & 0 \\
+whitespace: OperatorWrap & 10 & 0 \\
+javadoc: JavadocType & 10 & 0 \\
+imports: AvoidStarImport & 7 & 0 \\
+coding: MagicNumber & 6 & 0 \\
+javadoc: JavadocMethod & 4 & 0 \\
+coding: HiddenField & 3 & 0 \\
+javadoc: InvalidJavadocPosition & 2 & 0 \\
+blocks: RightCurly & 2 & 0 \\
+whitespace: WhitespaceAfter & 1 & 0 \\
+whitespace: FileTabCharacter & 1 & 0 \\
+misc: NewlineAtEndOfFile & 1 & 0 \\
+misc: ArrayTypeStyle & 1 & 0 \\
+imports: UnusedImports & 1 & 0 \\
+design: HideUtilityClassConstructor & 2 & 1 \\
+\end{tabularx}
+
+\subsection{Dashboard}
+
+\vspace{-1.5cm}
+\begin{tikzpicture}
+\begin{axis}[
+ title={Code-Stil-Anmerkungen durch ESLint},
+ ybar stacked, ymin=0,
+ bar width=10mm,
+ symbolic x coords={Vorher,Nachher},
+ legend style={
+ at={(1.1,0.5)},
+ cells={anchor=west},
+ anchor=west
+ },
+ xtick=data,
+ xticklabel style={text width=2cm,align=center},
+ nodes near coords={}
+]
+
+\addplot [fill=error00] coordinates { ({Vorher}, 26 ) ({Nachher}, 0)}; % error vue/html-indent
+\addplot [fill=error01] coordinates { ({Vorher}, 17 ) ({Nachher}, 0)}; % error vue/script-indent
+\addplot [fill=error02] coordinates { ({Vorher}, 6 ) ({Nachher}, 0)}; % error vue/require-v-for-key
+\addplot [fill=error03] coordinates { ({Vorher}, 5 ) ({Nachher}, 0)}; % error vue/multi-word-component-names
+\addplot [fill=error04] coordinates { ({Vorher}, 1 ) ({Nachher}, 0)}; % error vue/valid-v-for
+\addplot [fill=error05] coordinates { ({Vorher}, 1 ) ({Nachher}, 0)}; % error vue/valid-template-root
+\addplot [fill=warning00] coordinates { ({Vorher}, 125 ) ({Nachher}, 0)}; % warning vue/max-attributes-per-line
+\addplot [fill=warning01] coordinates { ({Vorher}, 34 ) ({Nachher}, 0)}; % warning vue/attributes-order
+\addplot [fill=warning02] coordinates { ({Vorher}, 26 ) ({Nachher}, 0)}; % warning vue/singleline-html-element-content-newline
+\addplot [fill=warning03] coordinates { ({Vorher}, 12 ) ({Nachher}, 0)}; % warning vue/require-default-prop
+\addplot [fill=warning04] coordinates { ({Vorher}, 12 ) ({Nachher}, 0)}; % warning vue/html-self-closing
+\addplot [fill=warning05] coordinates { ({Vorher}, 11 ) ({Nachher}, 0)}; % warning vue/first-attribute-linebreak
+\addplot [fill=warning06] coordinates { ({Vorher}, 10 ) ({Nachher}, 0)}; % warning vue/html-closing-bracket-newline
+\addplot [fill=warning07] coordinates { ({Vorher}, 8 ) ({Nachher}, 0)}; % warning vue/multiline-html-element-content-newline
+\addplot [fill=warning08] coordinates { ({Vorher}, 5 ) ({Nachher}, 0)}; % warning vue/html-closing-bracket-spacing
+\addplot [fill=warning09] coordinates { ({Vorher}, 3 ) ({Nachher}, 0)}; % warning vue/require-prop-types
+\addplot [fill=warning10] coordinates { ({Vorher}, 3 ) ({Nachher}, 0)}; % warning vue/attribute-hyphenation
+\addplot [fill=warning11] coordinates { ({Vorher}, 2 ) ({Nachher}, 0)}; % warning vue/html-self-closing
+\addplot [fill=warning12] coordinates { ({Vorher}, 1 ) ({Nachher}, 0)}; % warning vue/v-on-event-hyphenation
+\addplot [fill=warning13] coordinates { ({Vorher}, 1 ) ({Nachher}, 0)}; % warning vue/no-v-html
+\addplot +[fill=warning14, point meta=y,nodes near coords,nodes near coords align={anchor=south}]coordinates { ({Vorher}, 1 ) ({Nachher}, 1)}; % warning vue/mustache-interpolation-spacing
+
+
+\legend{
+error: html-indent,
+error: script-indent,
+error: require-v-for-key,
+error: multi-word-component-names,
+error: valid-v-for,
+error: valid-template-root,
+warning: max-attributes-per-line,
+warning: attributes-order,
+warning: singleline-html-element-content-newline,
+warning: require-default-prop,
+warning: html-self-closing,
+warning: first-attribute-linebreak,
+warning: html-closing-bracket-newline,
+warning: multiline-html-element-content-newline,
+warning: html-closing-bracket-spacing,
+warning: require-prop-types,
+warning: attribute-hyphenation,
+warning: html-self-closing,
+warning: v-on-event-hyphenation,
+warning: mustache-interpolation-spacing,
+warning: no-v-html,
+}
+\end{axis}
+\end{tikzpicture}
+
+\begin{tabularx}{\textwidth}{X | c | c}
+Regel & Vorher & Nachher \\ \hline
+error: html-indent & 26 & 0 \\
+error: script-indent & 17 & 0 \\
+error: require-v-for-key & 6 & 0 \\
+error: multi-word-component-names & 5 & 0 \\
+error: valid-v-for & 1 & 0 \\
+error: valid-template-root & 1 & 0 \\
+warning: max-attributes-per-line & 125 & 0 \\
+warning: attributes-order & 34 & 0 \\
+warning: singleline-html-element-content-newline & 26 & 0 \\
+warning: require-default-prop & 12 & 0 \\
+warning: html-self-closing & 12 & 0 \\
+warning: first-attribute-linebreak & 11 & 0 \\
+warning: html-closing-bracket-newline & 10 & 0 \\
+warning: multiline-html-element-content-newline & 8 & 0 \\
+warning: html-closing-bracket-spacing & 5 & 0 \\
+warning: require-prop-types & 3 & 0 \\
+warning: attribute-hyphenation & 3 & 0 \\
+warning: html-self-closing & 2 & 0 \\
+warning: v-on-event-hyphenation & 1 & 0 \\
+warning: mustache-interpolation-spacing & 1 & 0 \\
+warning: no-v-html & 1 & 1 \\
+\end{tabularx}
+
+Das Attribut \texttt{v-html} wird genutzt, um das Hilfe-Popup zu übersetzen. Die
+Übersetzungen für jede Sprache ist in einer separaten \texttt{HTML}-Datei gespeichert.
+Dies gibt dem Übersetzer einen großen Spielraum dafür, welche Inhalte in den Hilfe-Popups
+ausgegeben werden können.
+
diff --git a/30-qualitaetsheft/sections/coverage.tex b/30-qualitaetsheft/sections/coverage.tex
new file mode 100644
index 0000000..b8ba635
--- /dev/null
+++ b/30-qualitaetsheft/sections/coverage.tex
@@ -0,0 +1,59 @@
+\section{Codeabdeckung}
+
+\subsection{Einleitung}
+
+Die Codeabdeckung ist eine Methodik den Code weitflächig zu durchlaufen, um eine korrekte Verhaltensweise des Synchronisationsservers sicherzustellen.
+Die Knotenabdeckung stellt hierbei sicher, dass möglichst jede Instruktion im Code von mindestens einem Test durchlaufen wird.
+Die Zweigabdeckung stellt sicher, dass möglichst jeder Zweig (bspw. bei Verzweigungen) von mindestens einem Test durchlaufen wird.
+Schließlich gibt es noch die Pfadabdeckung, die sicherstellt, dass möglichst jeder Pfad von mindestens einem Test durchlaufen wird.
+
+In diesem Fall liegt der Fokus auf den ersten beiden Abdeckungen.
+Um die Codeabdeckung zu messen und zu dokumentieren, wurde das Tool JaCoCo verwendet.
+Viele Klassen des Projekts sind lediglich Model-Klassen oder dienen
+ausschließlich als Schicht zur Weiterleitung von Daten, weshalb
+diese bereits implizit abgedeckt sind.
+
+Zusätzlich werden durch das Tool Lombok, dem Framework Spring oder den JPA Repositories
+Methoden implizit eingebunden, welche dadurch nicht selbst implementiert werden müssen
+und bereits ausgiebig getestet sind.
+Dadurch ist eine explizite Abdeckung all dieser Methoden überflüssig,
+weshalb die Codeabdeckung nicht sonderlich hoch erscheint.
+
+In den Klassen erzielt, deren Funktionalität von Hand implementiert worden sind, ergibt sich wiederum mit den Tests eine hohe Codeabdeckung.
+
+\subsection{Insgesamte Abdeckung}
+\begin{figure}[h]
+ \centering
+ \includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{assets/coverage/server.png}
+\end{figure}
+Model-Paket und Controller-Klassen sind implizit durch ServiceTests
+abgedeckt.
+
+
+\subsection{Authentication Service}
+\begin{figure}[h]
+ \centering
+ \includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{assets/coverage/authenticationService.png}
+\end{figure}
+
+
+\subsection{Subscriptions Service}
+\begin{figure}[h]
+ \centering
+ \includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{assets/coverage/subscriptionsService.png}
+\end{figure}
+
+\subsection{EpisodeAction Service}
+\begin{figure}[h]
+ \centering
+ \includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{assets/coverage/episodeActionService.png}
+\end{figure}
+
+
+\subsection{Util Paket}
+\begin{figure}[h]
+ \centering
+ \includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{assets/coverage/util.png}
+\end{figure}
+UpdateUrlsWrapper ist lediglich ein Platzhalter für die leere UpdateUrls Liste,
+welche zurückgeben wird, da diese Funktion nicht unterstützt wird. \ No newline at end of file
diff --git a/30-qualitaetsheft/sections/einleitung.tex b/30-qualitaetsheft/sections/einleitung.tex
new file mode 100644
index 0000000..b80d952
--- /dev/null
+++ b/30-qualitaetsheft/sections/einleitung.tex
@@ -0,0 +1,13 @@
+\section{Einleitung}
+
+Nach der Planung im Pflichten- und Entwurfsheft und der Implementierung im Implementierungsheft kommt im Qualitätssicherungsheft nun die Qualitätssicherung.
+In dieser wird die Implementierung ausgiebig getestet.
+Dabei werden unter anderem auch die im Pflichtenheft beschriebenen Testfälle abgearbeitet.
+
+Weitere Testfälle sorgen für eine möglichst große Knotenabdeckung des Codes. Dabei wird sichergestellt, dass alle Grundblöcke des Programms mindestens einmal durchlaufen werden.
+
+Ein Lasttest überprüft wie stark der Server belastet werden kann und wie sich die Last auf die Performance des Servers auswirkt.
+
+Es wird auch auf Probleme eingegangen, die während der Qualitätssicherung aufgefallen sind und wie gegen diese Probleme vorgegangen worden ist.
+
+Schließlich folgt noch ein Bericht über die Verbesserung des Code-Stils nach dem Checkstyle von Sun. \ No newline at end of file
diff --git a/30-qualitaetsheft/sections/frontend.tex b/30-qualitaetsheft/sections/frontend.tex
new file mode 100644
index 0000000..ae5be0e
--- /dev/null
+++ b/30-qualitaetsheft/sections/frontend.tex
@@ -0,0 +1,196 @@
+\section{Weboberfläche}
+
+Die Weboberfläche wird mit dem Frontend-Web-Framework Vue.js erstellt. Mit Vue
+werden wiederverwendbare, auf Datenänderungen reagierende Komponenten erstellt.
+Die Komponenten nutzen ein fertiges Aussehen von dem Frontend-CSS-Framework
+Bootstrap. Außerdem werden Icons der freien Schriftart fontawesome
+verwendet.
+
+An der generellen Struktur und wichtigen Komponenten hat sich in der
+Implementierung nichts großes zum Entwurf geändert. Einige Komponenten konnten
+in der Implementierung allerdings abstrahiert werden, sodass weniger Code
+dupliziert werden musste. Dazu gehören zum Beispiel die Komponenten, welche ein
+Eingabefeld bereit stellen.
+
+Durch eine gute Arbeitsteilung blieb genug Zeit, um auch einige Kann-Kriterien
+zu implementieren, weshalb ein paar Abhängigkeiten hinzugekommen sind. So werden
+jszip und file-saver benötigt, um das Kann-Kriterium RC3 umzusetzen, durch
+welches man Nutzerdaten im- und exportieren kann.
+
+Pinia konnten wir als Abhängigkeit entfernen, weil Vue von sich aus genügend
+Funktionalität bietet die Nutzerdaten global allen Komponenten bereit zu
+stellen.
+
+Anfangs überlegten wir den Wrapper \texttt{bootstrap-vue} zu verwenden, welcher
+Bootstrap-HTML-Strukturen als Vue-Komponenten bereit stellt. Dies hätte des
+Vorteil, dass man nur jene Komponenten importieren müsste, die man auch
+benötigt. Es stellte sich heraus, dass \texttt{vue-bootstrap} nicht mit neusten
+Version Vue3 kompatibel ist, weshalb wir uns entschieden Bootstrap wie gewohnt
+komplett einzubinden.
+
+Während der Implementierung sind wir auf die Bibliothek \texttt{VueUse}
+gestoßen, mit der man die Abhängigkeit \texttt{file-saver} und mehrere eigene
+Wrapper für Browser-\Gls{api}s ersetzen könnte. So kann man das \Gls{dashboard} auch in
+Zukunft noch weiter verbessern.
+
+Vom Frontend benötigte Abhängigkeiten:
+\begin{itemize}
+ \item vite
+ \item vue
+ \item vue-router
+ \item \textcolor{red}{\sout{Pinia} wird durch globale Vue-Interne \texttt{ref} ersetzt}
+ \item bootstrap
+ \item fontawesome
+ \item vue-i18n (Support für mehrere Sprachen)
+ \item \textcolor{Green}{dayjs (Rechnen und formatieren von Zeiten)}
+ \item \textcolor{Green}{jszip (erstellen von Im-/Exports)}
+ \item \textcolor{Green}{file-saver (Abstraktion für Datei-Speichern-Dialog)}
+\end{itemize}
+
+\subsection{Komponentendiagramm Web-Frontend}
+\includegraphics[width=\textwidth]{assets/diagrams/componentdiagram}
+
+\subsection{Hinzugefügte Komponenten}
+
+% PasswordInput
+% PasswordValidator
+% FloatingLabelInput
+% Loading
+% ErrorLog
+% ProgressTime
+
+\begin{minipage}{.7\linewidth}
+
+\subsubsection*{FloatingLabelInput}
+
+\begin{description}
+\item[Tag] \texttt{<FloatingLabelInput type label>}
+\item[Props] \mbox{} \\
+ \emph{type} \mbox{} Beschreibt den Inhalt des Eingabefelder. Handelt es sich
+ um eine E-Mail, ein Passwort oder nur Text? \\
+ \emph{label} \mbox{} Das Label wird als Platzhalter und kleine Überschrift
+ angezeigt.
+\item[Beschreibung] Abstrahiert eine HTML-Struktur von Bootstrap, um ein schönes
+ Eingabefeld anzuzeigen.
+\end{description}
+\end{minipage}
+\begin{minipage}{.3\linewidth}
+ \begin{figure}[H]
+ \includegraphics[width=\textwidth]{assets/floatinglabelinput.png}
+ \end{figure}
+\end{minipage}
+
+
+\vspace{.5cm}
+
+\begin{minipage}{.7\linewidth}
+
+\subsubsection*{PasswordInput}
+
+\begin{description}
+\item[Tag] \texttt{<PasswordInput type label>}
+\item[Props] \mbox{} \\
+ \emph{label} \mbox{} Das Label wird als Platzhalter und kleine Überschrift
+ angezeigt.
+\item[Beschreibung] Erweitert den FloatingLabelInput um einen Knopf mit dem die
+ Sichtbarkeit des Eingabefeldes gewechselt werden kann. Dabei wird intern der
+ Typ des Eingabefeldes zwischen Text and Passwort gewechselt.
+\end{description}
+\end{minipage}
+\begin{minipage}{.3\linewidth}
+ \begin{figure}[H]
+ \includegraphics[width=\textwidth]{assets/passwordinput.png}
+ \end{figure}
+\end{minipage}
+
+
+\vspace{.5cm}
+
+\begin{minipage}{.7\linewidth}
+
+\subsubsection*{PasswordValidator}
+
+\begin{description}
+\item[Tag] \texttt{<PasswordValidator>}
+\item[Beschreibung] Besteht aus zwei PasswordInputs und überprüft diese auf
+ Gleichheit und Kriterien für eine gutes Passwort.
+\end{description}
+\end{minipage}
+\begin{minipage}{.3\linewidth}
+ \begin{figure}[H]
+ \includegraphics[width=\textwidth]{assets/passwordvalidator.png}
+ \end{figure}
+\end{minipage}
+
+
+\vspace{.5cm}
+
+\begin{minipage}{.7\linewidth}
+
+\subsubsection*{Loading}
+
+\begin{description}
+\item[Tag] \texttt{<Loading waitingFor>...<Loading/>}
+\item[Props] \mbox{} \\
+ \emph{waitingFor} \mbox{} Eine Referenz auf eine Bedingung wann die Kinder
+ der Komponente gezeigt werden sollen.
+\item[Beschreibung] Zeigt solange ein Ladesymbol an, bis die Bedingung in
+ \texttt{waitingFor} erfüllt ist und stattdessen die Kinder der Komponente
+ gezeigt werden.
+\end{description}
+\end{minipage}
+\begin{minipage}{.3\linewidth}
+ \begin{figure}[H]
+ \includegraphics[width=\textwidth]{assets/loading.png}
+ \end{figure}
+\end{minipage}
+
+
+\vspace{.5cm}
+
+\begin{minipage}{.7\linewidth}
+
+\subsubsection*{ProgressTime}
+
+\begin{description}
+\item[Tag] \texttt{<ProgressTime unix>}
+\item[Props] \mbox{} \\
+ \emph{unix} \mbox{} Anzahl an Sekunden.
+\item[Beschreibung] Nimmt eine Anzahl an Sekunden und gibt an wie viele Stunden,
+ Minuten und Sekunden die Anzahl entspricht.
+\end{description}
+\end{minipage}
+\begin{minipage}{.3\linewidth}
+ \begin{figure}[H]
+ \includegraphics[width=\textwidth]{assets/progresstime.png}
+ \end{figure}
+\end{minipage}
+
+
+\vspace{.5cm}
+
+\begin{minipage}{.7\linewidth}
+
+\subsubsection*{ErrorLog}
+
+\begin{description}
+\item[Tag] \texttt{<ErrorLog>}
+\item[Beschreibung] Zeigt eine Liste von Warnungen an, welche aus einem globalen
+ Zustandsspeicher geladen werden.
+\end{description}
+\end{minipage}
+\begin{minipage}{.3\linewidth}
+ \begin{figure}[H]
+ \includegraphics[width=\textwidth]{assets/errorlog.png}
+ \end{figure}
+\end{minipage}
+
+
+\vspace{.5cm}
+
+\subsubsection*{Dashboard/FormLayout}
+
+\begin{description}
+\item[Tag] \texttt{<DashboardLayout> <FormLayout>}
+\item[Beschreibung] Fügt den Kindern einen Seitenabstand hinzu.
+\end{description}
diff --git a/30-qualitaetsheft/sections/glossar.tex b/30-qualitaetsheft/sections/glossar.tex
new file mode 100644
index 0000000..b664e58
--- /dev/null
+++ b/30-qualitaetsheft/sections/glossar.tex
@@ -0,0 +1,391 @@
+\makeglossaries
+
+\newglossaryentry{spa}
+{
+ name=Single-Page-Application,
+ description={
+ ist ein Webseiten-Modell, bei welchem dem Nutzer nur ein Webdokument
+ bereitgestellt wird. Mit einem Skript wird der Inhalt der Seite
+ dynamisch mit Daten einer API befüllt. Außerdem verwaltet die Seite
+ (nicht der Server), welcher Inhalt bei welchem Pfad angezeigt wird. Dies
+ erzeugt geringere Serverlast und eine bessere Nutzererfahrung, da die
+ Seitenstruktur beim Laden von neuen Inhalten erhalten bleibt}
+}
+
+\newglossaryentry{packagemanager}
+{
+ name=Paketmanager,
+ description={
+ ist ein Programm, welches Pakete und dessen Abhängigkeiten verwaltet,
+ installiert, entfernt und aktualisiert. Pakete können andere Programme,
+ Plugins oder Software-Bibliotheken sein}
+}
+
+\newglossaryentry{bundler}
+{
+ name=Bundler,
+ description={
+ ist ein Programm, welches genutzte Teile von Abhängigkeiten eines
+ Software-Projekts in passender Reihenfolge zusammensucht und daraus
+ Dateien erstellt, die für den Nutzer bereitgestellt werden können. Dabei
+ kann der Bundler mit zusätzlichen Modulen Dateien erzeugen, die
+ rückwärtskompatibel oder für den Nutzer schwerer einsehbar sind}
+}
+
+\newglossaryentry{java}
+{
+ name=Java,
+ description={
+ ist eine objekt-orientierte interpretierte kompilierte
+ Programmiersprache, welche plattformunabhängig auf einer virtuellen
+ Maschine ausgeführt wird}
+}
+
+\newglossaryentry{db}
+{
+ name=Datenbank,
+ plural=Datenbanken,
+ description={
+ ist ein System um Daten persistent zu speichern und effizient zu
+ verwalten. Am meisten verbreitet sind relationale Datenbanken, welche
+ Daten in Tabellen mit Referenzen zu Einträgen anderer Tabellen
+ speichern. Programme können dann über eine Anfragesprache (Structured
+ Query Language - \Gls{SQL}) komplexe Operationen auf den Daten ausführen}
+}
+
+\newglossaryentry{docker}
+{
+ name=Docker,
+ description={
+ ist ein Programm, das virtualisierte Container ausführt. Ein Programm in
+ so einem Container läuft in seiner eigenen virtuellen Umgebung, wodurch
+ das Host-System sicher bleibt. Zudem lassen sich die Container leicht
+ auf andere Systeme verteilen}
+}
+
+% RESTfull-API, JSON, RSS-Feed, Salting and Hasing, OAuth, Cookie, Garbage
+% Collection, DSGVO, Podcast, Podcatcher, Episode, Gpodder,
+
+\newglossaryentry{podcatcher}
+{
+ name=Podcatcher,
+ plural=Podcatchern,
+ description={
+ ist ein Programm, über welches man Podcasts entdecken, abonnieren und
+ Episoden von Podcasts hören kann. Mit einem Account auf einer Plattform,
+ welche eine Gpodder-API zur Verfügung stellt, können Ereignisse, die von
+ einem Nutzer ausgehen, auf anderen Podcatchern des Nutzers
+ synchronisiert werden}
+}
+
+\newglossaryentry{podcast}
+{
+ name=Podcast,
+ description={
+ ist ein RSS-Feed, dessen Einträge die Episoden darstellen}
+}
+
+\newglossaryentry{episode}
+{
+ name=Episode,
+ plural=Episoden,
+ description={
+ ist ein Eintrag in einem Podcast. Eine URL in dem Eintrag zeigt auf eine
+ Medien-Datei, welche vom Podcatcher abgespielt werden kann}
+}
+
+\newglossaryentry{rest-api}
+{
+ name=RESTful-API,
+ description={
+ ist ein Schnittstellenentwurf über das Hypertext Transfer Protocol
+ (HTTP), bei dem die Schnittstellen strukturiert als Pfad an einem
+ Endpunkt erreichbar sind. Mittels verschiedener HTTP-Methoden können an
+ der Schnittstelle Daten abgefragt (GET), gesendet (PUT), gelöscht
+ (DELETE) oder geändert (POST) werden. Die Daten, die über die
+ Schnittstelle gesendet werden liegen meist im JSON-Format vor}
+}
+
+
+\newglossaryentry{gpodder}
+{
+ name=Gpodder-API,
+ description={
+ wird von gpodder.net benutzt und entwickelt. Die API wird als
+ Schnittstelle zwischen Podcatchern und Podcast Synchronisationsservern
+ verwendet. Weitere Details sind unter
+ "https://gpoddernet.readthedocs.io/en/latest/api/" zu finden}
+}
+
+\newglossaryentry{json}
+{
+ name=JSON,
+ description={
+ (JavaScript Object Notation) ist ein Datenformat und wird zur
+ Übertragung von Strukturen und Daten eingesetzt. JSON besteht dabei aus
+ grundlegenden Datentypen sowie Objekten mit Schlüssel-Wert Paaren und
+ Listen}
+}
+
+\newglossaryentry{oauth}
+{
+ name=OAuth,
+ description={
+ (Open Authorization) ist ein offenes Protokoll, welches es Nutzern
+ ermöglicht, sich mit bereits bestehenden Accounts bei anderen Diensten
+ zu registrieren. Dabei werden benötigte Daten für die Registrierung über
+ die bereitgestellte Schnittstelle zur Verfügung gestellt}
+}
+
+\newglossaryentry{garbage-collection}
+{
+ name=Garbage Collection,
+ description={
+ ist eine automatische Speicherbereinigung, welche nicht mehr benötigten
+ Speicherplatz wieder freigibt. Die Bereinigung kann dabei in determinierten
+ Zeitintervallen erfolgen oder durch bestimmte Ereignisse ausgelöst
+ werden}
+}
+
+\newglossaryentry{salt-hash}
+{
+ name=Salting und Hashing,
+ description={
+ ist eine Methode um Passwörter so zu kodieren, dass sie nicht als
+ Klartext gespeichert werden und auch sicher vor Hash-Wörterbüchern sind.
+ Dafür wird dem Passwort ein bekanntes Wort, der Salt, angefügt, bevor
+ aus dem kompletten Wort eine Prüfsumme, ein Hash, generiert wird. Beim
+ Anmelden wird die Prüfsumme der Anmeldung mit der bekannten
+ Prüfsumme des Passworts verglichen}
+}
+
+\newglossaryentry{rss}
+{
+ name=RSS,
+ description={
+ (Really Simple Syndication) zeigt strukturiert Listen von Nachrichten
+ an. Die Änderungen werden im XML-Format in sogenannte RSS-Dateien
+ geschrieben, welche über einen Link abgerufen werden können}
+}
+
+\newglossaryentry{dsgvo}
+{
+ name=Datenschutz-Grundverordnung,
+ description={
+ (DSGVO) ist eine im europäischen Wirtschaftsraum
+ geltende Verordnung. Sie sorgt für eine Reglementierung bei der
+ Verarbeitung personenbezogener Daten. Unter anderem muss einsehbar sein,
+ welche Daten von Nutzern erhoben werden. Außerdem muss für einen Nutzer
+ die Möglichkeit bestehen, seine erhobenen Daten abrufen zu können}
+}
+
+\newglossaryentry{push-pull}
+{
+ name=Push und Pull,
+ description={
+ sind Methoden, um Daten auszutauschen. Bei der Pull-Methode
+ stellt Akteur A einem Akteur B eine Anfrage auf Daten und erhält diese
+ als Antwort. Damit Akteur A und B immer auf dem selben Stand sind, muss
+ Akteur A chronisch Anfragen an Akteur B stellen. Im Gegensatz dazu steht
+ die Push-Methode, bei der Akteur B den Akteuren mitteilt, dass er neue
+ Änderungen hat. Dafür muss Akteur B allerdings wissen mit welchen
+ anderen Akteuren er in Verbindung steht und diese Verbindung aufrecht
+ erhalten}
+}
+
+\newglossaryentry{ui-lib}
+{
+ name=UI-Bibliothek,
+ plural=UI-Bibliotheken,
+ description={
+ kümmert sich um das Layout einer Webseite. Dabei unterscheidet man
+ zwischen Design-Bibliotheken (wie Bootstrap), welche fertige
+ UI-Komponenten bereitstellen, und Layout-Bibliotheken (wie Vue oder
+ React.js), welche die Komponenten basierend auf Daten dynamisch
+ anzeigen}
+}
+
+\newglossaryentry{responsive}
+{
+ name=Responsive,
+ description={
+ Design ist ein Design-Prinzip für Webseiten, bei dem die selbe Webseite ihre
+ Komponenten dynamisch der Bildschirmbreite anpasst}
+}
+
+\newglossaryentry{pseudoprotocol}
+{
+ name=Pseudoprotokoll,
+ description={
+ ist ein URL-Schema, auf das Webseiten hören können, wenn sie sich das
+ URL-Schema im Browser anmelden. Bekannt Pseudoprotokolle sind:
+ ,,mailto:'', ,,tel:'' oder ,,irc:''}
+}
+
+\newglossaryentry{dashboard}
+{
+ name=Dashboard,
+ description={
+ ist die erste Seite auf der man landet, wenn man angemeldet ist}
+}
+
+\newglossaryentry{abo}
+{
+ name=Abonnement,
+ description={
+ ist ein abonnierter Podcast}
+}
+
+\newglossaryentry{discovery}
+{
+ name=Discovery,
+ description={
+ ist ein Feature der Gpodder-API, welches dem Nutzer eine Reihe von
+ Podcasts zum abonnieren anbietet}
+}
+
+\newglossaryentry{session-token}
+{
+ name=Session-Token,
+ description={
+ ist ein Wort, dass vom Client gespeichert wird solange der Nutzer
+ eingeloggt ist und bei jeder Anfrage an den Server mitgeschickt wird.
+ Der Server kann den Session-Token einem Nutzer zuordnen und so mit
+ nutzerspezifischen Daten antworten}
+}
+
+\newglossaryentry{cookie}
+{
+ name=Cookie,
+ description={
+ ist ein kleiner webseitenspezifischer Speicher im Browser, welcher vom
+ Server und von der Webseite gesetzt werden kann und bei jeder weiteren
+ Anfrage an den Server mitgesendet wird. Cookies bleiben entweder
+ temporär im Browserspeicher, bis der Browser geschlossen wird oder
+ permanent, bis ein optionales Verfallsdatum erreicht ist}
+}
+
+\newglossaryentry{uiComponent}
+{
+ name=UI-Komponente,
+ plural=UI-Komponenten,
+ description={
+ In Vue.js werden die grafischen Elemente einer Webseite in einzelne
+ Komponenten zerteilt.
+ Diese reagieren automatisch auf Änderungen und können ohne Neuladen
+ der Seite ihr Aussehen verändern und somit Änderungen direkt anzeigen}
+}
+
+\newglossaryentry{spring}
+{
+ name=Spring,
+ description={
+ Ein Java-Framework, welches die Entwicklung von Web-Applikationen erleichtert.
+ Dazu wird eine Reihe von Werkzeugsets zur Verfügung gestellt.
+ Unter anderem sind das Spring Web für das Erstellen von Webanwendungen,
+ Spring Security für die Verwaltung von Benutzerauthentifizierungen und
+ Spring Data JPA für die Arbeit mit relationalen Datenbanken
+ }
+}
+
+\newglossaryentry{api}
+{
+ name=API,
+ plural=APIs,
+ description={
+ Eine Schnittstelle, welche es ermöglicht auf Funktionalitäten einer Anwendung
+ zuzugreifen. APIs für Webanwendungen heißen WebAPIs.
+ Ein Beispiel für eine WebAPI ist die REST-API
+ }
+}
+
+\newglossaryentry{business}
+{
+ name=Geschäftslogik,
+ description={
+ Eine Schicht in der Anwendungsentwicklung, in der die Art und Weise, wie das
+ Programm auf Eingaben reagiert, wie Daten verarbeitet und wie sie gespeichert
+ werden sollen, festgelegt ist
+ }
+}
+
+\newglossaryentry{solid}
+{
+ name=SOLID,
+ description={
+ Eine Sammlung an Prinzipien, welche zu gutem objektorientierten Design führen soll.
+ Jedes Prinzip steht für einen Buchstaben in SOLID:
+ \textbf{S}ingle-Responsibility Prinzip,
+ \textbf{O}pen-Closed Prinzip,
+ \textbf{L}iskovsches Substitutionsprinzip,
+ \textbf{I}nterface Segregation Prinzip und
+ \textbf{D}ependency Inversion Prinzip
+ }
+}
+
+\newglossaryentry{crud}
+{
+ name=CRUD,
+ description={
+ CRUD steht für \textbf{C}reate, \textbf{R}ead, \textbf{U}pdate und \textbf{D}elete.
+ Hierbei handelt es sich um die grundlegenden Funktionen einer Anwendung,
+ die mit einer Datenbank arbeitet.
+ Hierbei können Daten angelegt, abgerufen, aktualisiert und gelöscht werden.
+ Auch in Web-Applikationen ist CRUD mit HTTP über die Anfragen POST, GET, PUT und DELETE
+ vertreten
+ }
+}
+
+\newglossaryentry{SQL}
+{
+ name=SQL,
+ description={
+ SQL (Structured Query Language) ist eine Sprache, die einen strukturierten Zugriff auf Datenbanken ermöglicht.
+ Daten können hierbei hinzugefügt, abgefragt, geändert und gelöscht werden.
+ Das besondere hierbei ist der strukturierte Zugriff auf Daten, indem explizit Daten mit bestimmten Kriterien und
+ Relationen ausgewählt und bearbeitet werden können.
+ SQL wird fast von allen verbreiteten Datenbanksystemen unterstützt
+ }
+}
+
+\newglossaryentry{Base64}
+{
+ name=Base64,
+ description={
+ Mithilfe von Base64 können 8-Bit-Binärdaten in eine ASCII-Zeichenkette
+ kodiert werden. So werden zum Beispiel E-Mail-Anhänge versendet
+ }
+}
+
+\newglossaryentry{JSONP}
+{
+ name=JSONP,
+ description={
+ JSONP ermöglicht die Übertragung von JSON-Daten zwischen verschiedenen Domains.
+ Dies wäre durch die Same-Origin-Policy nicht möglich.
+ JSONP nutzt allerdings die Tatsache aus,
+ dass sich Skripte domainübergreifend übertragen lassen.
+ Dazu werden die JSON-Daten als Argument einer übergebenen Funktion über
+ ein Skript-Element eingebunden
+ }
+}
+
+\newglossaryentry{Apdex}
+{
+ name=Apdex,
+ description={
+ Der Application Performance Index ist eine Methode zur Bewertung der
+ Benutzerfreundlichkeit von Anwendungen bezüglich ihrer Antwortszeiten.
+ Dabei gibt es die Stufen zufriedenstellend, tolerierbar und
+ frustrierend, welche analog von 1 absteigend bis 0 angegeben werden.
+ }
+}
+
+\newglossaryentry{Lasttest}
+{
+ name=Lasttest,
+ description={
+ ist ein Test, mit welchem man die Stabilität und Robustheit
+ eines Programms testen kann, indem man ihn einer großen Last aussetzt.
+ }
+}
diff --git a/30-qualitaetsheft/sections/lasttest.tex b/30-qualitaetsheft/sections/lasttest.tex
new file mode 100644
index 0000000..ed5d4a9
--- /dev/null
+++ b/30-qualitaetsheft/sections/lasttest.tex
@@ -0,0 +1,105 @@
+\section{\Glspl{Lasttest}}
+
+\subsection{Einleitung}
+
+\Glspl{Lasttest} sind sinnvoll, um das Verhalten eines Programmes unter großer Last
+zu testen um somit dessen Belastungsgrenze zu erreichen.
+Dadurch wird das Programm auf Stabilität getestet und man erhält
+einen Eindruck davon, wie performant das Programm ist.
+Auch kann durch die erhaltenen Ergebnisse abgeschätzt werden,
+welche Hardware für den erwarteten Einsatzzweck benötigt wird.
+
+\subsection{Verwendete Software}
+
+Da der \Gls{podcast}synchronisationsserver ein Webserver ist und über HTTP
+kommuniziert, wird das Tool \enquote{Apache JMeter} verwendet, um
+die \Glspl{Lasttest} durchzuführen.
+Mit diesem Tool kann mithilfe eines sogenannten Testplans
+systematisch HTTP Anfragen an den Server gestellt werden.
+Während dieser Testplan läuft, sammelt das Tool verschiedene Daten über die Performanz des Services,
+wie zum Beispiel die Anzahl der Anfragen, die pro Sekunde bearbeitet werden.
+Im Anschluss werden die Testergebnisse grafisch zur Verfügung gestellt.
+
+\subsection{Tests}
+Um zu testen, ob der Synchronisationsserver unter voller Belastung
+fehlerfrei arbeitet, wurden alle Schnittstellen, die die \Gls{podcatcher} zur
+Synchronisation nutzen, jeweils zum Testplan als eigene Threadgruppe
+hinzugefügt.
+Damit ist es möglich, alle relevanten Schnittstellen
+über einen längeren Zeitraum kontinuierlich zu belasten.
+So wird ausgeschlossen, dass es innerhalb des Programms zu gegenseitigen
+Interferenzen kommt, wenn alle Bereiche zur selben Zeit ausgelastet werden.
+Ein weiterer Vorteil des gleichzeitigen Belastens ist, dass
+Engpässe, welche das Programm ausbremsen, leichter identifiziert werden können.
+
+Um einen Performanzvergleich zwischen unterschiedlicher Hardware zu erhalten,
+wurden die Tests in gleicher Konfiguration einmal auf einem System,
+welches den im Pflichtenheft definierten Mindestanforderungen
+(2 Kerne und 2GB RAM) entspricht und
+einem besseren System (8 Kerne und 32GB RAM) getestet.
+
+\newpage
+
+\subsection{Testergebnisse}
+\subsubsection{Genaue Testwerte}
+\textit{2-Kern System:}
+\begin{figure}[h]
+ \centering
+ \includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{assets/lasttest/minimumSpecsTable.png}
+\end{figure}
+
+\textit{8-Kern System:}
+\begin{figure}[h]
+ \centering
+ \includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{assets/lasttest/goodSpecsTable.png}
+\end{figure}
+
+\subsection{Anfragen pro Sekunde}
+
+Aus den Testdaten ist ersichtlich, dass die im Pflichtenheft für den Synchronisationsserver
+als Musskriterium aufgeführte Eigenschaft, 50 Anfragen pro Sekunde bewältigen zu können,
+nicht für jede Hardwarekonfiguration möglich ist.
+Denn im Gegensatz zur 8-Kern CPU, welche durchschnittlich 88,93 Transaktionen pro Sekunde
+verarbeitet, sind mit den Mindestanforderungen durchschnittlich nur 10,85 Anfragen
+pro Sekunde möglich.
+
+\newpage
+\subsubsection{Application Performance Index}
+
+\textit{2-Kern System:}
+\begin{figure}[h]
+ \centering
+ \includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{assets/lasttest/minimumSpecsApdex.png}
+\end{figure}
+
+\textit{8-Kern System:}
+\begin{figure}[h]
+ \centering
+ \includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{assets/lasttest/goodSpecsApdex.png}
+\end{figure}
+
+\newpage
+
+Der Application Performance Index (kurz: \Gls{Apdex}) gibt an, wie benutzerfreundlich
+eine Webseite bezüglich ihrer Antwortzeiten bei Anfragen ist.
+Dabei stellt \enquote{1} die beste Nutzerfreundlichkeit dar und \enquote{0} die schlechteste.
+
+Verglichen mit den genauen Testwerten, ist ersichtlich, dass ein System mit den Mindestanforderungen zwar eine akzeptable Leistung erbringt, allerdings die vom \Gls{Apdex} definierte Frustrationsgrenze überschreiten kann:
+
+\textit{2-Kern System:}
+\begin{figure}[h]
+ \centering
+ \includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{assets/lasttest/minimumSpecsResponse.png}
+\end{figure}
+
+\textit{8-Kern System:}
+\begin{figure}[h]
+ \centering
+ \includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{assets/lasttest/goodSpecsResponse.png}
+\end{figure}
+
+Bei Ausführung des Synchronisationsservers auf einem 2-Kern System kann somit
+keine zufriedenstellende Nutzererfahrung garantiert werden, sobald der Server einer starken
+Last ausgesetzt ist.
+
+Um eine zufriedenstellende Erfahrung zu garantieren, ist bessere Hardware eine hinreichende Bedingung. \ No newline at end of file
diff --git a/30-qualitaetsheft/sections/problems.tex b/30-qualitaetsheft/sections/problems.tex
new file mode 100644
index 0000000..fb5bdcb
--- /dev/null
+++ b/30-qualitaetsheft/sections/problems.tex
@@ -0,0 +1,65 @@
+\section{Probleme}
+
+\vspace{-.2cm}
+In diesem Kapitel wird näher auf die Probleme eingegangen, die sich ergeben
+haben, aus welchem Grund sie sich ergeben haben und wie sie schließlich behoben
+wurden.
+
+\vspace{-.2cm}
+\subsection{Falsche Zeitangaben}
+
+\begin{description}
+
+\item[Beschreibung] Im Frontend wurden die Zeiten, wann eine
+\Gls{podcast}episode zuletzt gehört wurde und wann ein \Gls{podcast} abonniert
+worden ist, falsch angezeigt. Hierbei kann eine Aktion entweder zu weit in der
+Vergangenheit oder sogar in der Zukunft liegen.
+\item[Ursache] Die Bibliothek hat die Zeiten in der lokalen, statt der
+universellen Zeit berechnet. Aufgrund der Differenz zwischen Zeitzonen kam es
+hierbei zu größer werdenden Zeitabständen.
+\item[Behebung] Die Bibliotheksfunktionen wurden so angepasst, dass sie die
+Zeiten explizit nach der universellen Zeitzone (UTC) berechnet.
+
+\end{description}
+
+
+\subsection{AntennaPod Fehlermeldung}
+
+\begin{description}
+
+\item[Beschreibung] Beim Hochladen von \Gls{abo}änderungen gab AntennaPod einen Fehler aus.
+\item[Ursache] Es wurde bei der Übertragung ein Parameter mit falschem Parameternamen gesendet.
+Hierbei handelt es sich um den Parameter \texttt{updateURLs}.
+\item[Behebung] \texttt{updateURLs} wurde umbenannt zu
+\texttt{update\textunderscore urls}. Die
+geschah durch das Hinzufügen von \texttt{@JsonProperty(value =
+''update\textunderscore urls'')} in der \texttt{UpdateURLsWrapper} Klasse im
+\texttt{util} Paket.
+
+\end{description}
+
+\subsection{Doppelte Speicherung von EpisodeActions}
+
+\begin{description}
+
+\item[Beschreibung] Beim speichern von \Gls{episode}Actions ergab sich in
+manchen Fällen die Situation, dass \Gls{episode}Actions mehrfach gespeichert
+worden sind. Jede \Gls{episode} besitzt pro Benutzer eine \Gls{episode}Action.
+In diesem Fall gab es mehrere \Gls{episode}Actions pro Benutzer für je eine
+\Gls{episode}.
+\item[Ursache] Es werden alle \Gls{episode}Actions in der \Gls{db} gespeichert,
+die neuer als die aktuellste \Gls{episode}Action in der \Gls{db} sind. Nach
+einem Speichervorgang sollte die ältere \Gls{episode}Action gelöscht werden. Da
+\Gls{spring} jedoch aus Effizienzgründen nach diesem Schema mehrere Daten
+sammelt und erst dann abspeichert, wird nur einer der älteren Einträge gelöscht.
+Dadurch werden im Durchschnitt mehr \Gls{episode}Actions gespeichert, als
+\Gls{episode}Actions entfernt werden.
+\item[Behebung] Die empfangenen \Gls{episode}Actions werden vor dem Speichern in
+der \Gls{db} bereits nach den jeweils aktuellsten \Gls{episode}Actions für eine
+\Gls{episode} aussortiert. Damit wird letztlich nur eine \Gls{episode}Action in
+die \Gls{db} geschrieben und auch nur eine ältere \Gls{episode}Action zu der
+\Gls{episode} gelöscht, womit jede \Gls{episode} für jeden User weiterhin nur
+eine \Gls{episode}Action besitzt.
+
+\end{description}
+
diff --git a/30-qualitaetsheft/sections/testfaelle.tex b/30-qualitaetsheft/sections/testfaelle.tex
new file mode 100644
index 0000000..7d8669c
--- /dev/null
+++ b/30-qualitaetsheft/sections/testfaelle.tex
@@ -0,0 +1,182 @@
+\section{Testfälle}
+
+Dieses Kapitel befasst sich mit allen im Pflichtenheft genannten Tests für den Synchronisationsserver.
+Die Tests werden dabei aufgeteilt in Tests, die im Frontend stattfinden und Tests, die das Backend betreffen.
+
+\subsection{Frontend}
+
+Dieser Abschnitt enthält alle Tests, die das Frontend betreffen.
+
+\subsubsection{Registrierung}
+
+Eine Person möchte sich einen Account auf dem Server anlegen.
+
+\begin{table}[h!]
+\begin{tabularx}{\textwidth}{X|c}
+Teilschritt & Bestanden\\\hline
+Webseite aufrufen & Ja\\
+Registrierungsseite aufrufen & Ja\\
+Daten ohne Passwort zur Wiederholung eintragen & Ja\\
+Daten mit zweimal Passwort eingeben & Ja\\
+Registrierungslink drücken & Ja\\
+Registrierungslink abgelaufen & Ja\\
+Registrierungslink nach 24 Stunden anklicken & Ja\\
+Mit selber E-Mail nochmals registrieren & Ja
+\end{tabularx}
+\end{table}
+
+\subsubsection{Passwort Anforderungen}
+
+Es wird getestet, ob das eingegebene Passwort die Mindestanforderungen erfüllen muss, um akzeptiert zu werden.
+
+\begin{table}[h!]
+\begin{tabularx}{\textwidth}{X|c}
+Teilschritt & Bestanden\\\hline
+Passwort \enquote{test} nicht akzeptiert & Ja\\
+Passwort \enquote{Test123} nicht akzeptiert & Ja\\
+Passwort \enquote{TEST123?} nicht akzeptiert & Ja\\
+Passwort \enquote{Test123!?} akzeptiert & Ja
+\end{tabularx}
+\end{table}
+
+\newpage
+
+\subsubsection{Anmeldung}
+
+Der Benutzer ist registriert und möchte sich nun mit dem registrierten Account anmelden.
+Die Option \enquote{Angemeldet bleiben} wird nicht verwendet.
+Hierbei ist zu beachten, dass die Anmeldung seit der Implementierungsphase mit einem Benutzernamen statt der E-Mail Adresse erfolgt.
+
+\begin{table}[h!]
+\begin{tabularx}{\textwidth}{X|c}
+Teilschritt & Bestanden\\\hline
+Webseite aufrufen & Ja\\
+Ohne Eingabe \enquote{Anmelden} drücken & Ja\\
+Nur Nutzernamen eingeben und \enquote{Anmelden} drücken & Ja\\
+Nutzername und falsches Passwort eingeben, anschließend \enquote{Anmelden} drücken & Ja\\
+Nutzername und richtiges Passwort eingeben, anschließen \enquote{Anmelden} drücken & Ja\\
+\enquote{Angemeldet bleiben} Option testen & Ja\\
+\enquote{Angemeldet bleiben} Option deaktiviert testen & Ja
+\end{tabularx}
+\end{table}
+
+\subsubsection{Passwort ändern}
+
+Der Benutzer ist registriert, kennt seine Anmeldedaten und möchte nun das Passwort ändern.
+Der Benutzer ist zu Beginn bereits angemeldet.
+
+\begin{table}[h!]
+\begin{tabularx}{\textwidth}{X|c}
+Teilschritt & Bestanden\\\hline
+Zu \enquote{Einstellungen} Menü über das Profil wechseln & Ja\\
+Ohne Eingabe \enquote{Passwort ändern} drücken & Ja\\
+Falsches altes Passwort eingeben und \enquote{Passwort ändern} drücken & Ja\\
+\makecell[l]{Richtiges altes Passwort und neues Passwort, das nicht die Kriterien \\ erfüllt eingeben} & Ja\\
+Richtiges altes Passwort und akzeptiertes neues Passwort eingeben & Ja\\
+Der Benutzer kann sich abmelden & Ja\\
+Das alte Passwort wird beim Anmelden nicht mehr akzeptiert & Ja\\
+Der Benutzer kann sich mit dem neuen Passwort anmelden & Ja
+\end{tabularx}
+\end{table}
+
+\newpage
+
+\subsubsection{Passwort vergessen}
+
+Der Benutzer ist registriert, kennt die E-Mail Adresse jedoch nicht das Passwort mit dem er sich registriert hat.
+Ziel hierbei ist es das Passwort zurückzusetzen.
+
+\begin{table}[h!]
+\begin{tabularx}{\textwidth}{X|c}
+Teilschritt & Bestanden\\\hline
+Webseite aufrufen & Ja\\
+\enquote{Passwort vergessen} Seite aufrufen & Ja\\
+E-Mail Adresse eingeben und \enquote{Bestätigen} Knopf drücken & Ja\\
+Gesendeten Link innerhalb von 24 Stunden anklicken & Ja\\
+Auf \enquote{Passwort zurücksetzen} Seite neues nicht akzeptiertes Passwort eingeben & Ja\\
+Auf \enquote{Passwort zurücksetzen} Seite neues akzeptiertes Passwort eingeben & Ja\\
+Auf Anmeldeseite versuchen mit altem Passwort anzumelden & Ja\\
+Auf Anmeldeseite mit neuem Passwort anmelden & Ja\\
+Gesendeten Link nach 24 Stunden anklicken & Ja\\
+Nach Zurücksetzen vom Passwort erneut auf Link klicken & Nein (technisch bedingt)
+\end{tabularx}
+\end{table}
+
+\subsubsection{Account löschen}
+
+Der Benutzer ist registriert und möchte den Account löschen.
+Dazu ist der Benutzer zu Beginn bereits angemeldet und befindet sich in der Einstellungsseite des Profils.
+Es sei zu beachten, dass die Aktion den Account zu löschen in die Einstellungsseite verschoben wurde und nicht über eine extra Seite stattfindet.
+Auch verlangt die Aktion den Account zu löschen nur noch das Passwort.
+
+\begin{table}[h!]
+\begin{tabularx}{\textwidth}{X|c}
+Teilschritt & Bestanden\\\hline
+Ohne Eingabe \enquote{Account löschen} drücken & Ja\\
+Mit falschem Passwort als Eingabe \enquote{Account löschen} drücken & Ja\\
+Mit richtigem Passwort als Eingabe \enquote{Account löschen} drücken & Ja\\
+Versuchen sich mit gelöschtem Account anzumelden & Ja
+\end{tabularx}
+\end{table}
+
+\subsubsection{Anleitung ansehen}
+
+Der Benutzer ist registriert und angemeldet und möchte die Anleitung einsehen.
+
+\begin{table}[h!]
+\begin{tabularx}{\textwidth}{X|c}
+Teilschritt & Bestanden\\\hline
+Auf \enquote{Hilfe} Button im \Gls{dashboard} klicken & Ja
+\end{tabularx}
+\end{table}
+
+\newpage
+
+\subsection{Synchronisation}
+
+Die folgenden Tests betreffen das Synchronisationsfeature des Synchronisationsservers.
+Hierbei ist der Benutzer bereits auf dem Server registriert und bestätigt.
+Auch ist der Benutzer in allen Fällen auf einem \Gls{podcatcher}, der die \Gls{gpodder} unterstützt, über den registrierten Account angemeldet.
+
+\subsubsection{\Gls{podcast} abonnieren}
+
+Der Benutzer abonniert auf einem \Gls{podcatcher} einen \Gls{podcast} und möchte diesen auf einem anderen Gerät einsehen.
+
+\begin{table}[h!]
+\begin{tabularx}{\textwidth}{X|c}
+Teilschritt & Bestanden\\\hline
+Im \Gls{podcatcher} wird ein neuer \Gls{podcast} den \Glspl{abo} hinzugefügt & Ja\\
+Im \Gls{dashboard} des Servers wird der neu abonnierte \Gls{podcast} angezeigt & Ja\\
+\makecell[l]{Auf einem anderen synchronisierten Gerät wird der \\ neu abonnierte \Gls{podcast} angezeigt} & Ja
+\end{tabularx}
+\end{table}
+
+\subsubsection{\Gls{podcast} deabonnieren}
+
+Der Benutzer hat einen \Gls{podcast} abonniert und möchte diesen nun deabonnieren.
+
+\begin{table}[h!]
+\begin{tabularx}{\textwidth}{X|c}
+Teilschritt & Bestanden \\\hline
+Im Podcatcher wird ein abonnierter Podcast deabonniert & Ja\\
+\makecell[l]{Im Dashboard des Servers wurde der deabonnierte Podcast \\ aus der Abonnement Liste entfernt} & Ja\\
+\makecell[l]{Auf einem anderen synchronisierten Gerät wurde der Podcast\\ ebenfalls deabonniert} & Ja
+\end{tabularx}
+\end{table}
+
+\newpage
+
+\subsubsection{Episode anhören}
+
+Der Benutzer hört sich eine Episode eines abonnierten \Glspl{podcast} an.
+
+\begin{table}[h!]
+\begin{tabularx}{\textwidth}{X|c}
+Teilschritt & Bestanden \\\hline
+\makecell[l]{Eine Episode wird für eine beliebige Zeit lang angehört \\ und dann pausiert} & Ja\\
+\makecell[l]{Im Dashboard des Servers wird die zuletzt gehörte Episode \\ unter \enquote{Zuletzt gehört} angezeigt} & Ja\\
+\makecell[l]{Auf einem anderen synchronisierten Gerät kann die \\ Episode weitergehört werden} & Ja\\
+\makecell[l]{Stoppt man die Episode wieder wird der alte Zeitpunkt\\ vom neuen Zeitpunkt überschrieben} & Ja
+\end{tabularx}
+\end{table}
+ \ No newline at end of file
diff --git a/30-qualitaetsheft/sections/tests.tex b/30-qualitaetsheft/sections/tests.tex
new file mode 100644
index 0000000..cdbf163
--- /dev/null
+++ b/30-qualitaetsheft/sections/tests.tex
@@ -0,0 +1,21 @@
+\section{Testfälle}
+
+Für die Erstellung der Testfälle wurde die SpringBoot Testumgebung verwendet und
+diese durch JUnit Testfälle ergänzt.
+
+Für das Testen wurde eine BaseTest Klasse erstellt, die grundlegende Funktionalität
+einiger Kern Komponenten sicherstellt. Weiter Initialisiert sie die Anwendungsumgebung auf
+der alle weiteren Tests aufbauen.
+
+Die Unit Tests erweitern diese BaseTest Klasse und können daher von gewisser Grundfunktionalität
+ausgehen, die durch den BaseTest abgedeckt ist. Dadurch müssen nicht große Teile der
+Anwendung durch Mock Objekte simuliert werden.
+
+Grundsätzlich wurde beim Entwurf der Testfälle nach dem Inside-Out-Prinzip vorangegangenen.
+Die bisher geschriebenen Testfälle haben dabei nicht das Ziel Korrektheit zu garantieren,
+sondern einen gewissen Qualitätsstandart zu sichern und gleichzeitig genug
+Arbeitspunkte bereit zu stellen um im ganzen Team an diesem Projekt parallel arbeite zu können.
+
+Zusätzlich wurden bei der Implementierung auf ausgiebig getestete Annotationen von Spring und
+Lombok zurückgegriffen die helfen die Anzahl an Fehlern bei standardisierten
+\enquote{Boilerplater-Code} Aufgaben zu vermeiden. \ No newline at end of file
diff --git a/30-qualitaetsheft/titlepage.tex b/30-qualitaetsheft/titlepage.tex
new file mode 100644
index 0000000..284029b
--- /dev/null
+++ b/30-qualitaetsheft/titlepage.tex
@@ -0,0 +1,75 @@
+%% Encoding: UTF-8 %%
+
+%% titlepage.tex
+
+\def\usesf{}
+\let\usesf\sffamily % diese Zeile auskommentieren für normalen TeX Font
+
+\begin{titlepage}
+
+\setlength{\unitlength}{1pt}
+\begin{picture}(00,0)(70,770)
+ \includegraphics[width=\paperwidth]{assets/KIT_Deckblatt.pdf}
+\end{picture}
+
+\thispagestyle{empty}
+
+\begin{center}
+\hbox{}
+\vfill
+\includegraphics[width=.5\textwidth]{assets/logo.pdf}
+\vskip 1cm
+{\usesf
+ {\huge\bfseries PSE\textsuperscript{2} - Podcast Synchronisation \\
+ made Efficient\\
+ Qualitätssicherung \par}
+\vskip 1.8cm
+{\Large Wintersemester 2022/2023\\}
+%von\\[2mm]
+\vskip 1.5cm
+
+% {\large\bfseries Vorname Nachname\\}
+% \vskip 1.2cm
+Praxis der Softwareentwicklung \\
+Prof. Dr.-Ing. Gregor Snelting \\
+Fakultät für Informatik\\
+Karlsruher Institut für Technologie\\
+\vskip 1.5cm
+\begin{tabular}{p{20mm}l}
+Autoren:
+& Daniel Hönlinger \\
+& Gero Beckmann \\
+& Immanuel Reitz \\
+& Julius Friesen \\
+& Lukas Schmidheissler \\
+\\
+Betreuer: & M.Sc. Hans-Peter Lehmann \\
+ & M.Sc. Daniel Seemaier
+\end{tabular}
+}
+\end{center}
+\vfill
+
+%\begin{textblock}{10}[0,0](4,15)
+% \includegraphics[width=.3\textwidth]{logos/logo.pdf}
+%\end{textblock}
+
+% \begin{textblock}{8}[0,0](14,14)
+% \includegraphics[width=.3\textwidth]{logos/KASTEL_logo.pdf}
+% \end{textblock}
+
+\end{titlepage}
+
+% \thispagestyle{empty}
+% \ \vfill
+% \begin{flushleft}
+% Copyright $\copyright$ ITI und Verfasser 201?\\
+% \ \\
+% Institut für Theoretische Informatik
+% Fakultät für Informatik\\
+% Karlsruher Institut für Technologie\\
+% Am Fasanengarten 5\\
+% 76131 Karlsruhe
+% \end{flushleft}
+% \newpage
+