{"id":18494944,"url":"https://github.com/qaware/readability-analysis-tool","last_synced_at":"2026-01-24T00:15:00.746Z","repository":{"id":77410222,"uuid":"73017609","full_name":"qaware/readability-analysis-tool","owner":"qaware","description":"Readability Analysis Tool (RAT) Open Source Project.","archived":false,"fork":false,"pushed_at":"2023-04-17T16:08:32.000Z","size":21080,"stargazers_count":1,"open_issues_count":8,"forks_count":1,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-12-25T16:42:20.083Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/qaware.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-11-06T20:41:31.000Z","updated_at":"2023-08-28T16:22:24.000Z","dependencies_parsed_at":null,"dependency_job_id":"6f3ff5d0-fc41-4156-94b9-1b5abf586349","html_url":"https://github.com/qaware/readability-analysis-tool","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qaware%2Freadability-analysis-tool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qaware%2Freadability-analysis-tool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qaware%2Freadability-analysis-tool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qaware%2Freadability-analysis-tool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/qaware","download_url":"https://codeload.github.com/qaware/readability-analysis-tool/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239210502,"owners_count":19600548,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-06T13:22:48.887Z","updated_at":"2026-01-24T00:15:00.696Z","avatar_url":"https://github.com/qaware.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Readability Analysis Tool (RAT) – Documentation\n\n![rat-logo](/01_docbase/01_doc-images/rat-logo.jpg)\n\n# Table of content\n- [About](#id-section01)\n - [Analysis](#id-analysis)\n - [Report](#id-report)\n- [Getting Started](#id-section02)\n - [Download](#id-download)\n - [Execution](#id-execution)\n - [Assembly Folder Structure](#id-assembly-folder-structure)\n - [Arguments](#id-arguments)\n- [Readability Formulas](#id-section1)\n- [Readability Statistics](#id-section2)\n- [Readability Anomalies](#id-section3)\n - [Implemented Anomalies](#id-implemented-rules)\n - [Example Implementation](#id-example-implementation)\n - [Default Configuration](#id-default-configruation)\n- [Configuration \u0026 Quality Gate](#id-section4)\n\n\u003cdiv id='id-section01'/\u003e\n# About\n\nRAT is a tool to detect readability anomalies in text based on readability rules. Readability anomalies describe findings in a text which are difficult to read. The principle is similar to bug pattern in static code analysis. \n\nName | Description\n------------ | -------------\nCategory | Readability-Checker, Style-Checker\nName | Readability Analysis Tool (RAT)\nSupported File Types | .docx\nSupported Readability Rules | German\nFeatures | \u003cul\u003e\u003cli\u003eAnnotation of Readability Anomalies\u003c/li\u003e\u003cli\u003eStatistic Report\u003c/li\u003e\u003cli\u003eConfigurable Anomaly Rules\u003c/li\u003e\u003cli\u003eConfigurable Quality Gate\u003c/li\u003e\u003cli\u003eAutomated detection of False Positives and Incorporated Anomalies (allowing semi-automated evaluation)\u003c/li\u003e\u003c/ul\u003e\nPerformance | 40 Seconds for 10.000 words (50 pages)\nTechnologies | \u003cul\u003e\u003cli\u003eJava\u003c/li\u003e\u003cli\u003eUIMA\u003c/li\u003e\u003cli\u003eDKPro Core\u003c/li\u003e\u003c/ul\u003e\nLicense | GPLv3\n\n\u003cdiv id='id-analysis'/\u003e\n## Analysis\n\nDuring an analysis a .docx file is enriched with comments (the readability anomaly findings). The .docx file is then saved as a new file with a \"-rat.docx\" suffix. This ensures that the original document cannot be corrupted by RAT. In case a document is analysed that already has a \"-rat.docx\" suffix, the **very same** document is altered.\n\nThe folder structure of an analysis might look like this:\n\n![analysis-structure](/01_docbase/01_doc-images/analysis-structure.PNG)\n\n\nThe results of an analysis in a .docx file:\n\n\n![results-docx](/01_docbase/01_doc-images/results-docx.PNG)\n\n\u003cdiv id='id-report'/\u003e\n## Report\n\nAdditionaly, RAT computes a report about statistics of the text (e.g., average words per sentence, reading time, most used nouns) and [readability formulas](https://en.wikipedia.org/wiki/Readability#Popular_readability_formulas). The report is stored in an HTML file next to the analyzed document.\n\nFor both the analysed document and the statstic report an optional outputDirectorycan can be specified via the argument \"-o\" or \"--outputDirectory\".\n\n```\njava -jar lib/rat-executor-cmd-0.5-SNAPSHOT.jar -o examples/output-directory/ examples/multiple-files/*\n```\n\nThe HTML report aggregates all readability mesaurements and assess the overall readability of the text through a quality gate; similar to static code analysis tools.\n\nFurther, the report shows anomalies that were marked as declined (false positives) or incorporated by the user. RAT saves these information also in the XML of the .docx file itself. In this way, one can comprehend what action where taken during the editing of the document.\n\n\u003cdiv id='id-section02'/\u003e\n# Getting Started\n\n\u003cdiv id='id-download'/\u003e\n## Download RAT\nYou can get the current release of RAT [here](https://github.com/qaware/readabiliy-analysis-tool/releases). Just unzip the file rat-{version}-tarball.tar and start your analysis.\n\n\u003cdiv id='id-execution'/\u003e\n## Execution\nRAT is invoked via the command line. Examples to invoke RAT:\n\n```\njava -jar lib/rat-executor-cmd-0.5-SNAPSHOT.jar -o examples/output-directory/ examples/multiple-files/*\n```\n```\njava -jar ../../lib/rat-executor-cmd-0.5-SNAPSHOT.jar --configurationPath ../../config/rat-config.xml *\n```\n```\njava -jar ../../lib/rat-executor-cmd-0.5-SNAPSHOT.jar -c ../../config/rat-config.xml *.docx\n```\n```\njava -jar ../../lib/rat-executor-cmd-0.5-SNAPSHOT.jar --configurationPath ../../config/rat-config.xml 45-page-9500-words-assignment.docx\n```\n\n\u003cdiv id='id-assembly-folder-structure'/\u003e\n## Assembly Folder Structure\n\nThe assembly is delivered with example exatuables and documents. By that, the handling of the software can be learned quickly. \n\n\u003cpre\u003e\n.\n|---config\n    |   rat-config.xml\n|---examples\n    |---config-in-folder\n        |   45-page-9500-words-assignment.docx\n        |   rat-config.xml\n        |   rat-example.cmd\n    |---multiple-files\n        |   45-page-9500-words-assignment-0.docx\n        |   45-page-9500-words-assignment-1.docx\n        |   45-page-9500-words-assignment-2.docx\n        |   rat-example.cmd\n    |---output-directory\n    |---single-file\n        |   45-page-9500-words-assignment.docx\n        |   rat-example.cmd\n|---lib\n    |   # jar files of the application\n|   rat.cmd\n|   rat.sh\n|   rat.example.cmd\n|   rat.example.sh\n\u003c/pre\u003e\n\n\u003cdiv id='id-arguments'/\u003e\n## Arguments\n\nRAT can be invoked with the following optional arguments:\n\n```\nusage: Rat v0.4\n -c,--configurationPath \u003carg\u003e   the file path of the configuration\n -o,--outputDirectory \u003carg\u003e     the output directory for the document and statistic report\n -h,--help                      display help menu\n```\n\nThe last argument must be a valid path to a potential file for an analysis. Command line wildcards can be used, e.g. `/*.docx`.\n\n\u003cdiv id='id-section1'/\u003e\n# Readability Formulas\n\nRAT computes the below listed readability formulas. \n\nThe results are saved in the same directory as the original document appended by a \"rat-report.html\" suffix, e.g. \"{filename}-rat-report.html\".\n\nReadability Formula | Link\n------------ | -------------\nFlesch | https://de.wikipedia.org/wiki/Lesbarkeitsindex#Flesch-Reading-Ease\nWiener Sachtextformel | https://de.wikipedia.org/wiki/Lesbarkeitsindex#Wiener_Sachtextformel\n\n\u003cdiv id='id-section2'/\u003e\n# Readability Statistics\n\nRAT computes the below listed readability statistics. \n\nThe results are saved in the same directory as the original document with a \"rat-report.html\" suffix, e.g. \"{filename}-rat-report.html\".\n\n # | Name of statistic | Description\n------------ | -------------  | ------------- \n1\t| Reading Time | Based on 255 words per minute\n2\t| Speaking Time | Based on 125 words per minute\n3\t| Number of Sentences | \n4\t| Number of Words | \n5\t| Number of Syllables | \n6\t| Number of Characters | \n7\t| Average Number of Words per Sentence | \n8\t| Average Number of Syllables per Sentence | \n9\t| Average Number of Characters per Sentence | \n10\t| Average Number of Syllables per Word | \n11\t| Average Number of Characters per Word | \n12\t| Most used Nouns | \n13\t| Most used Verbs | \n14\t| Most used Adjectives | \n15\t| Most used Conjunctions | \n16\t| Percentage of Nouns in Text | \n17\t| Percentage of Verbs in Text | \n18\t| Percentage of Adjectives in Text | \n19\t| Percentage of Conjunctions in Text | \n20\t| Percentage of specified keywords in configuration file | \n\nThe statistics are presented in the HTML report:\n\n![rat-statistics](/01_docbase/01_doc-images/rat-statistics.PNG)\n\nAdditionaly, RAT detects the occurence of words specified in the keywords section of the configuration file:\n\n```xml\n    \u003ckeywords\u003e\n        \u003ckeyword\u003eQAware\u003c/keyword\u003e\n        \u003ckeyword\u003eRAT\u003c/keyword\u003e\n    \u003c/keywords\u003e\n```\nThese are listed below the fixed computed statistics:\n\n![rat-keywords](/01_docbase/01_doc-images/rat-keywords.PNG)\n\n\u003cdiv id='id-section3'/\u003e\n# Readability Anomalies\n\nRAT detects the below listed readability anomalies and annotates them as comments in .docx files.\n\nThe annotated .docx file is saved in the same directory as the original document with a \"-rat.docx\" suffix, e.g. \"{filename}-rat.{file-extension}\".\n\n\u003cdiv id='id-implemented-rules'/\u003e\n## Implemented Readability Anomalies\n- [AdjectiveStyle](#AdjectiveStyle)          \n- [AmbiguousAdjectivesAndAdverbs](#AmbiguousAdjectivesAndAdverbs)\n- [ConsecutiveFillers](#ConsecutiveFillers)\n- [ConsecutivePrepositions](#ConsecutivePrepositions)\n- [DoubleNegative](#DoubleNegative)\n- [Filler](#Filler)\n- [FillerSentence](#FillerSentence)\n- [IndirectSpeech](#IndirectSpeech)\n- [LeadingAttributes](#LeadingAttributes)\n- [LongSentence](#LongSentence)\n- [LongWord](#LongWord)\n- [ModalVerb](#ModalVerb)\n- [ModalVerbSentence](#ModalVerbSentence)\n- [NestedSentence](#NestedSentence)\n- [NestedSentenceConjunction](#NestedSentenceConjunction)\n- [NestedSentenceDelimiter](#NestedSentenceDelimiter)\n- [NominalStyle](#NominalStyle)\n- [PassiveVoice](#PassiveVoice)\n- [SentencesStartWithSameWord](#SentencesStartWithSameWord)\n- [SubjectiveLanguage](#SubjectiveLanguage)\n- [Superlatives](#Superlatives)\n- [UnnecessarySyllables](#UnnecessarySyllables)\n\n\u003cdiv id='AdjectiveStyle'/\u003e\n## AdjectiveStyle\n\nAttribute | Description\n------------ | -------------\nAnomaly Name | AdjectiveStyle\nDescription | Adjectives should only be used if they differentiate. If an adjective is not necessary, it should be omitted.\nSeverity | Major\nEnabled | True\nEntity | Part-of-speech\nThreshold | 5 matches in one sentence (configurable)\nNegative Example | Die *__schwergewichtigen__*  Prozessmodelle sind durch eine *__detaillierte__* Dokumentation gekennzeichnet, wodurch *__spätere__*  Änderungen an *__vorher definierten__*  Anforderungen nur mit *__hohem__*  Aufwand *__möglich__* sind.\n | [...] alltägliche Gewohnheiten.\nPositive Example | Die Prozessmodelle sind *__detailliert__* dokumentiert. Anforderungen lassen sich lediglich mit einem *__hohen__* Aufwand ändern.\n | [...] \u003cs\u003ealltägliche\u003c/s\u003e Gewohnheiten.\n\n\u003cdiv id='AmbiguousAdjectivesAndAdverbs'/\u003e\n## AmbiguousAdjectivesAndAdverbs\n\nAttribute | Description\n------------ | -------------\nAnomaly Name | AmbiguousAdjectivesAndAdverbs\nDescription | Ambiguous Adverbs and Adjectives describe imprecise words.\nSeverity | Minor\nEnabled | True\nEntity | Word\nThreshold | 1 match in the text (not configurable)\nWord List | annäherend, beinahe, gewöhnlich, maximal, minimal, möglicherweise, nahezu, optimal, vielleicht, ziemlich\nNegative Examples | Die Programmierer sind in Extreme Programming in *__nahezu__* allen Techniken und Vorgängen integriert.\n | Der Projektleiter muss folglich *__maximal__* in das Projekt integriert sein.\nPositive Examples | Die Programmierer sind in Extreme Programming in allen Techniken und Vorgängen integriert, außer [...] \n | Der Projektleiter muss folglich zwei Arbeitstage in der Woche am Projekt arbeiten. \n\n\u003cdiv id='ConsecutiveFillers'/\u003e\n## ConsecutiveFillers\n \nAttribute | Description\n------------ | -------------\nAnomaly Name | ConsecutiveFillers\nDescription | Two consecutive fillers inflate a sentence.\nSeverity | Minor\nEnabled | True\nEntity | Word\nThreshold | 2 consecutive matches in the text (not configurable)\nWord List | aber, abermals, allein, allemal, allem Anschein, nach, allenfalls, allenthalben, allerdings, allesamt, allzu, also, andauernd, andererseits, andernfalls, anscheinend, an sich, auch, auffallend, aufs Neue, augenscheinlich, ausdrücklich, ausgerechnet, ausnahmslos, außerdem, äußerst, beinahe, bei weitem, bekanntlich, bereits, besonders, bestenfalls, bestimmt, bloß, dabei, dafür, dagegen, daher, damals, danach, dann und wann, demgegenüber, demgemäß, demnach, denkbar, denn, dennoch, deshalb, des Öfteren, des ungeachtet, deswegen, doch, durchaus, durchweg, eben, eigentlich, ein bisschen, einerseits, einfach, einige, einigermaßen, einmal, ein wenig, ergo, erheblich, etliche, etwa, etwas, fast, folgendermaßen, folglich, förmlich, fortwährend, fraglos, freilich, ganz, ganz und gar, gänzlich, gar, gelegentlich, gemeinhin, genau, geradezu, gewiss, gewissermaßen, glatt, gleichsam, gleichwohl, glücklicherweise, gottseidank, größtenteils, halt, häufig, hingegen, hinlänglich, höchst, höchstens, im Allgemeinen, immer, immerhin, immerzu, in der Tat, indessen, in diesem Zusammenhang, infolgedessen, insbesondere, inzwischen, irgend, irgendein, irgendjemand, irgendwann, irgendwie, irgendwo, ja, je, jedenfalls, jedoch, jemals, kaum, keinesfalls, keineswegs, längst, lediglich, leider, letztlich, manchmal, mehr oder weniger, meines Erachtens, meinetwegen, meist, meistens, meistenteils, mindestens, mithin, mitunter, möglicherweise, möglichst, nämlich, naturgemäß, natürlich, neuerdings, neuerlich, neulich, nichtsdestoweniger, nie, niemals, nun, nur, offenbar, offenkundig, offensichtlich, oft, ohnedies, ohne weiteres, ohne Zweifel, partout, plötzlich, praktisch, quasi, recht, reichlich, reiflich, relativ, restlos, richtiggehend, rundheraus, rundum, samt und sonders, sattsam, schlicht, schlichtweg, schließlich, schlussendlich, schon, sehr, selbst, selbstredend, selbstverständlich, selten, seltsamerweise, sicher, sicherlich, so, sogar, sonst, sowieso, sowohl als auch, sozusagen, stellenweise, stets, trotzdem, überaus, überdies, überhaupt, übrigens, umständehalber, unbedingt, unerhört, ungefähr, ungemein, ungewöhnlich, ungleich, unglücklicherweise, unlängst, unsagbar, unsäglich, unstreitig, unzweifelhaft, vermutlich, vielfach, vielleicht, voll, vollends, völlig, vollkommen, voll und ganz, von neuem, wahrscheinlich, weidlich, weitgehend, wenigstens, wieder, wiederum, wirklich, wohl, wohlgemerkt, womöglich, ziemlich, zudem, zugegeben, zumeist, zusehends, zuweilen, zweifellos, zweifelsfrei, zweifelsohne\nNegative Example | Mit dem Entwicklungsfortschritt nimmt die Zahl der Tests *__folglich fortwährend__* zu.\n | In einem Projekt sollten *__daher stets__* alle dieser Techniken angewandt werden.\n | Letzteres ist allerdings nicht im Sinne des Kunden und *__sollte daher__* selten praktiziert werden.\n | Diese Art der Kommunikation und Planung funktioniert *__allerdings nur__* bis zu einem bestimmten Grad.\nPositive Example | Mit dem Entwicklungsfortschritt nimmt die Zahl der Tests *__folglich \u003cs\u003efortwährend\u003c/s\u003e__* zu.\n | In einem Projekt sollten *__daher \u003cs\u003estets\u003c/s\u003e__* alle dieser Techniken angewandt werden.\n | Letzteres ist \u003cs\u003eallerdings\u003c/s\u003e nicht im Sinne des Kunden und *__sollte \u003cs\u003edaher\u003c/s\u003e__* selten praktiziert werden.\n | Diese Art der Kommunikation und Planung funktioniert *\u003cs\u003e__allerdings\u003c/s\u003e nur__* bis zu einem bestimmten Grad.\n\n\u003cdiv id='ConsecutivePrepositions'/\u003e\n## ConsecutivePrepositions\n\nAttribute | Description\n------------ | -------------\nAnomaly Name | ConsecutivePrepositions\nDescription | Two consecutive spatial expressions (prepositions) most likely irritate a reader.\nSeverity | Minor\nEnabled | True\nEntity | Word\nThreshold | 2 consecutive matches in the text (not configurable)\nWord List | auf, an, hinter, in, neben, über, unter, vor, zwischen\nNegative Example | Wir geben nichts *__auf unter__* Druck zustande gekommene Verträge.\nPositive Example | Wir geben nichts Verträge die unter Druck zustande gekommen sind.\n\n\u003cdiv id='DoubleNegative'/\u003e\n## DoubleNegative\n \nAttribute | Description\n------------ | -------------\nAnomaly Name | DoubleNegative\nDescription | Double negation in a sentence makes it hard to capture its meaning.\nSeverity | Major\nEnabled | True\nEntity | Word\nThreshold | 2 matches in one sentence (configurable)\nWord List | ausnahmslos, außer, kein, keinerlei, keinesfalls, keineswegs, mitnichten, nein, nicht, nichtig, nichts, nie, niemals, niemand, nimmer, nirgends, nirgendwo, ohne, unterlegen, ablehnen, entfernen, ignorieren, verbieten, verbot, verbots, verbotes, vermeiden, weglassen\nNegative Example | Das Schreiben von Tests ist zwar wichtig, sollte jedoch *__nicht__* verpflichtend für Funktionen sein, die *__nicht__* öffentlich sichtbar sind.\n | Eine erzwungene Verantwortung führt *__nicht__* zu diesem Effekt und ist daher *__nicht__* erwünscht.\nPositive Example | Das Schreiben von Tests ist wichtig. Das Testen privater Methoden sollte nicht verpflichtend sein.\n | Eine erzwungene Verantwortung erzielt nicht den gewünschten Effekt.\n\n\u003cdiv id='Filler'/\u003e\n## Fillers\n\nAttribute | Description\n------------ | -------------\nAnomaly Name | Fillers\nDescription | Unnecessary words, e.g. fillers, inflate a sentence.\nSeverity | Minor\nEnabled | False\nEntity | Word\nThreshold | 1 match in the text (not configurable)\nWord List | aber, abermals, allein, allemal, allem Anschein, nach, allenfalls, allenthalben, allerdings, allesamt, allzu, also, andauernd, andererseits, andernfalls, anscheinend, an sich, auch, auffallend, aufs Neue, augenscheinlich, ausdrücklich, ausgerechnet, ausnahmslos, außerdem, äußerst, beinahe, bei weitem, bekanntlich, bereits, besonders, bestenfalls, bestimmt, bloß, dabei, dafür, dagegen, daher, damals, danach, dann und wann, demgegenüber, demgemäß, demnach, denkbar, denn, dennoch, deshalb, des Öfteren, des ungeachtet, deswegen, doch, durchaus, durchweg, eben, eigentlich, ein bisschen, einerseits, einfach, einige, einigermaßen, einmal, ein wenig, ergo, erheblich, etliche, etwa, etwas, fast, folgendermaßen, folglich, förmlich, fortwährend, fraglos, freilich, ganz, ganz und gar, gänzlich, gar, gelegentlich, gemeinhin, genau, geradezu, gewiss, gewissermaßen, glatt, gleichsam, gleichwohl, glücklicherweise, gottseidank, größtenteils, halt, häufig, hingegen, hinlänglich, höchst, höchstens, im Allgemeinen, immer, immerhin, immerzu, in der Tat, indessen, in diesem Zusammenhang, infolgedessen, insbesondere, inzwischen, irgend, irgendein, irgendjemand, irgendwann, irgendwie, irgendwo, ja, je, jedenfalls, jedoch, jemals, kaum, keinesfalls, keineswegs, längst, lediglich, leider, letztlich, manchmal, mehr oder weniger, meines Erachtens, meinetwegen, meist, meistens, meistenteils, mindestens, mithin, mitunter, möglicherweise, möglichst, nämlich, naturgemäß, natürlich, neuerdings, neuerlich, neulich, nichtsdestoweniger, nie, niemals, nun, nur, offenbar, offenkundig, offensichtlich, oft, ohnedies, ohne weiteres, ohne Zweifel, partout, plötzlich, praktisch, quasi, recht, reichlich, reiflich, relativ, restlos, richtiggehend, rundheraus, rundum, samt und sonders, sattsam, schlicht, schlichtweg, schließlich, schlussendlich, schon, sehr, selbst, selbstredend, selbstverständlich, selten, seltsamerweise, sicher, sicherlich, so, sogar, sonst, sowieso, sowohl als auch, sozusagen, stellenweise, stets, trotzdem, überaus, überdies, überhaupt, übrigens, umständehalber, unbedingt, unerhört, ungefähr, ungemein, ungewöhnlich, ungleich, unglücklicherweise, unlängst, unsagbar, unsäglich, unstreitig, unzweifelhaft, vermutlich, vielfach, vielleicht, voll, vollends, völlig, vollkommen, voll und ganz, von neuem, wahrscheinlich, weidlich, weitgehend, wenigstens, wieder, wiederum, wirklich, wohl, wohlgemerkt, womöglich, ziemlich, zudem, zugegeben, zumeist, zusehends, zuweilen, zweifellos, zweifelsfrei, zweifelsohne\nNegative Example | Mit dem Entwicklungsfortschritt nimmt die Zahl der Tests *__folglich fortwährend__* zu.\n | Diese Art der Kommunikation und Planung funktioniert *__allerdings nur__* bis zu einem bestimmten Grad.\nPositive Example | Mit dem Entwicklungsfortschritt nimmt die Zahl der Tests *__folglich \u003cs\u003efortwährend\u003c/s\u003e__* zu.\n | Diese Art der Kommunikation und Planung funktioniert *\u003cs\u003e__allerdings\u003c/s\u003e nur__* bis zu einem bestimmten Grad.\n\n\u003cdiv id='FillerSentence'/\u003e\n## FillersSentence\n \nAttribute | Description\n------------ | -------------\nAnomaly Name | FillersSentence\nDescription | Many unnecessary words, e.g. fillers, inflate a sentence.\nSeverity | Major\nEnabled | True\nEntity | Word\nThreshold | 3 matches in one sentence (configurable)\nWord List | aber, abermals, allein, allemal, allem Anschein, nach, allenfalls, allenthalben, allerdings, allesamt, allzu, also, andauernd, andererseits, andernfalls, anscheinend, an sich, auch, auffallend, aufs Neue, augenscheinlich, ausdrücklich, ausgerechnet, ausnahmslos, außerdem, äußerst, beinahe, bei weitem, bekanntlich, bereits, besonders, bestenfalls, bestimmt, bloß, dabei, dafür, dagegen, daher, damals, danach, dann und wann, demgegenüber, demgemäß, demnach, denkbar, denn, dennoch, deshalb, des Öfteren, des ungeachtet, deswegen, doch, durchaus, durchweg, eben, eigentlich, ein bisschen, einerseits, einfach, einige, einigermaßen, einmal, ein wenig, ergo, erheblich, etliche, etwa, etwas, fast, folgendermaßen, folglich, förmlich, fortwährend, fraglos, freilich, ganz, ganz und gar, gänzlich, gar, gelegentlich, gemeinhin, genau, geradezu, gewiss, gewissermaßen, glatt, gleichsam, gleichwohl, glücklicherweise, gottseidank, größtenteils, halt, häufig, hingegen, hinlänglich, höchst, höchstens, im Allgemeinen, immer, immerhin, immerzu, in der Tat, indessen, in diesem Zusammenhang, infolgedessen, insbesondere, inzwischen, irgend, irgendein, irgendjemand, irgendwann, irgendwie, irgendwo, ja, je, jedenfalls, jedoch, jemals, kaum, keinesfalls, keineswegs, längst, lediglich, leider, letztlich, manchmal, mehr oder weniger, meines Erachtens, meinetwegen, meist, meistens, meistenteils, mindestens, mithin, mitunter, möglicherweise, möglichst, nämlich, naturgemäß, natürlich, neuerdings, neuerlich, neulich, nichtsdestoweniger, nie, niemals, nun, nur, offenbar, offenkundig, offensichtlich, oft, ohnedies, ohne weiteres, ohne Zweifel, partout, plötzlich, praktisch, quasi, recht, reichlich, reiflich, relativ, restlos, richtiggehend, rundheraus, rundum, samt und sonders, sattsam, schlicht, schlichtweg, schließlich, schlussendlich, schon, sehr, selbst, selbstredend, selbstverständlich, selten, seltsamerweise, sicher, sicherlich, so, sogar, sonst, sowieso, sowohl als auch, sozusagen, stellenweise, stets, trotzdem, überaus, überdies, überhaupt, übrigens, umständehalber, unbedingt, unerhört, ungefähr, ungemein, ungewöhnlich, ungleich, unglücklicherweise, unlängst, unsagbar, unsäglich, unstreitig, unzweifelhaft, vermutlich, vielfach, vielleicht, voll, vollends, völlig, vollkommen, voll und ganz, von neuem, wahrscheinlich, weidlich, weitgehend, wenigstens, wieder, wiederum, wirklich, wohl, wohlgemerkt, womöglich, ziemlich, zudem, zugegeben, zumeist, zusehends, zuweilen, zweifellos, zweifelsfrei, zweifelsohne\nNegative Example | In einem Projekt sollten *__daher__* *__stets__* alle dieser Techniken angewandt werden, da *__andernfalls__* keine optimale Wirkung erzielt werden kann.\nPositive Example | In einem Projekt sollten \u003cs\u003e*__daher__* *__stets__*\u003c/s\u003e alle diese Techniken angewandt werden, da andernfalls keine Wirkung erzielt wird.\n\n\u003cdiv id='IndirectSpeech'/\u003e\n## IndirectSpeech\n \nAttribute | Description\n------------ | -------------\nAnomaly Name | IndirectSpeech\nDescription | Indirect speech should be avoided, since it is not clear who the actor in the sentence is.\nSeverity | Minor\nEnabled | False\nEntity | Word\nThreshold | 1 match in the text (not configurable)\nWord List | man\nNegative Example | Die Rollen im Extreme Programming können getauscht werden. Dadurch wird die Kreativität gefördert und *__man__* löst sich von Gewohnheiten.\nPositive Example | Die Rollen im Extreme Programming können getauscht werden. Dadurch wird die Kreativität gefördert und *__die Teammitglieder__* lösen sich von Gewohnheiten.\n\n\u003cdiv id='LeadingAttributes'/\u003e\n## LeadingAttributes\n \nAttribute | Description\n------------ | -------------\nAnomaly Name | LeadingAttributes\nDescription | If there are too many words between the article of a noun and the noun itself, the reader's short-term memory might forget the article.\nSeverity | Minor\nEnabled | True\nEntity | Word\nThreshold | 4 words between article and noun (configurable)\nWord List | man\nNegative Example | Die Programmierung erfolgt in *__einem__* sowohl freien, als auch stark kontrollierten *__Stil__*.\n | *__Ein schleichender__*, von den Nutzern typischerweise durch Aussagen wie „Das ist so langsam“ oder „Die Zahlen taugen nichts“ kommunizierter *__Qualitätsverlust__*.\nPositive Example | Die Programmierung erfolgt in *__einem Stil__*, der frei und zugleich stark kontrolliert ist.\n | *__Ein schleichender__* *__Qualitätsverlust__*, der von den Nutzern typischerweise durch Aussagen wie „Das ist so langsam“ oder „Die Zahlen taugen nichts“ kommunizierter wird.\n\n\u003cdiv id='LongSentence'/\u003e\n## LongSentence\n\nAttribute | Description\n------------ | -------------\nAnomaly Name | LongSentence\nDescription | Long sentences tend to carry too much information and should be avoided. \nSeverity | Critical\nEnabled | True\nEntity | Word\nThreshold | 30 words in a sentence\nNegative Example | Stellt das Team fest, dass es für die aktuelle Iteration nicht alle zuvor festgelegten Funktionen umsetzten kann, sollte mit der Geschäftsseite (speziell dem Kunden) eine Auswahl der Funktionen der aktuellen Storycards erfolgen, die für diese Iteration unbedingt erfüllt werden sollten.\nPositive Example | Wenn in der aktuellen Iteration nicht alle Funktionen vom Team umgesetzt werden können, sollte der Kunde kontaktiert werden. Das Team und der Kunde treffen dann eine Auswahl der Funktionen die in der Iteration umgesetzt werden sollen.\n\n\u003cdiv id='LongWord'/\u003e\n## LongWord\n\nAttribute | Description\n------------ | -------------\nAnomaly Name | LongWord\nDescription | Words with many syllables tend to be unfamiliar and harder to understand.\nSeverity | Critical\nEnabled | True\nEntity | Word\nThreshold | 8 syllables (configurable)\nNegative Example | In diesem Fall schließt sich eine *__Dokumentationserstellung__* an, die für zukünftige Veränderungen der Software einen leichten Einstieg ermöglichen.\nPositive Example | In diesem Fall wird eine Dokumentation erstellt, die für zukünftige Veränderungen der Software einen leichten Einstieg ermöglicht.\n\n\u003cdiv id='ModalVerb'/\u003e\n## ModalVerb\n\nAttribute | Description\n------------ | -------------\nAnomaly Name | ModalVerb\nDescription | With modal verbs, critical statements can be mitigated.\nSeverity | Minor\nEntity | Word\nThreshold | 1 (not configurable)\nEnabled | False\nWord List | dürfen, dürfte, dürften, können, könnte, könnten, möchte, möchten, mögen, müssen, müsste, müssten, sollen, sollte, sollten, wollen, wollte, wollten\nNegative Example | Wir *__sollten__* das Produkt bis zum Ende des Jahres fertig entwickelt haben.\nPositive Example | Wir *__werden__* das Produkt bis zum Ende des Jahres fertiggestellt haben.\n\n\u003cdiv id='ModalVerbSentence'/\u003e\n## ModalVerbSentence\n\nAttribute | Description\n------------ | -------------\nAnomaly Name | ModalVerbSentence\nDescription | With modal verbs, critical statements can be mitigated. Too many modal verbs also inflate a sentence.\nSeverity | Minor\nEntity | Word\nThreshold | 2 matches in one sentence (configurable)\nEnabled | True\nWord List | dürfen, dürfte, dürften, können, könnte, könnten, möchte, möchten, mögen, müssen, müsste, müssten, sollen, sollte, sollten, wollen, wollte, wollten\nNegative Example | Wir *__sollten__* das Produkt bis zum Ende des Jahres fertig entwickelt haben.\nPositive Example | Wir *__werden__* das Produkt bis zum Ende des Jahres fertiggestellt haben.\n\n\u003cdiv id='NestedSentence'/\u003e\n## NestedSentence\n\nAttribute | Description\n------------ | -------------\nAnomaly Name | NestedSentence\nDescription | Nested sentence constructions hinder a reader to quickly understand a sentence.\nSeverity | Critical\nEntity | Part-of-speech\nThreshold | 6 matches of conjunctions or delimiters in one sentence (configurable)\nEnabled | True\n\n\u003cdiv id='NestedSentenceConjunction'/\u003e\n## NestedSentenceConjunction\n\nAttribute | Description\n------------ | -------------\nAnomaly Name | NestedSentenceConjunction\nDescription | Nested sentence constructions hinder a reader to quickly understand a sentence.\nSeverity | Major\nEntity | Part-of-speech\nThreshold | 3 matches of conjunctions in one sentence (configurable)\nEnabled | False\n\n\u003cdiv id='NestedSentenceDelimiter'/\u003e\n## NestedSentenceDelimiter\n\nAttribute | Description\n------------ | -------------\nAnomaly Name | NestedSentenceDelimiter\nDescription | Nested sentence constructions hinder a reader to quickly understand a sentence.\nSeverity | Major\nEntity | Token\nThreshold | 3 matches of delimiters in one sentence (configurable)\nEnabled | False\n\n\u003cdiv id='NominalStyle'/\u003e\n## NominalStyle\n\nAttribute | Description\n------------ | -------------\nAnomaly Name | NominalStyle\nDescription | Too many abstract nouns in one sentence should be avoided.\nSeverity | Major\nEntity | Word\nThreshold | 3 matches in one sentence (configurable)\nEnabled | True\nWord List | heit, heiten, keit, keiten, ung, ungen (word ends with)\nNegative Example | In der *__Software-Entwicklung__* dienen Prozessmodelle der *__Festlegung__* des Vorgehens und des Ablaufs zur *__Erstellung__* einer Software.\n | Diese fehlende Flexibilität führte zur *__Entwicklung__* von leichtgewichtigen, agilen Prozessmodellen, die von *__Änderungen__* der *__Anforderungen__* während des Projektes ausgehen.\nPositive Example | In der *__Software-Entwicklung__* legen Prozessmodelle den Ablauf zur *__Erstellung__* von Software fest.\n | Durch die fehlende Flexibilität sind agile Prozessmodelle entstanden. Diese Modelle gehen von sich ändernden *__Anforderungen__* aus.\n\n\u003cdiv id='PassiveVoice'/\u003e\n## PassiveVoice\n\nAttribute | Description\n------------ | -------------\nAnomaly Name | PassiveVoice\nDescription | Sentence in passive voice tend to be longer and hide the actor of a sentence.\nSeverity | Major\nEntity | Word\nThreshold | 1 match in a sentence (not configurable)\nEnabled | False\nWord List | wurde, wurden, wurdest, worde, worden, geworden\nNegative Example | Das Projekt *__wurde__* mit einem schwergewichtigen Prozessmodell begonnen und drohte zu scheitern.\n | Die Software wird deployed, wenn eine Task einer Storycard erfüllt wurde.\nPositive Example | Das Projekt begann mit einem schwergewichtigen Prozessmodell und drohte zu scheitern.\n | Die Software wird deployed, wenn ein Entwickler eine Task einer Storycard fertiggestellt.\n\n\u003cdiv id='SentencesStartWithSameWord'/\u003e\n## SentencesStartWithSameWord\n\nAttribute | Description\n------------ | -------------\nAnomaly Name | SentencesStartWithSameWord\nDescription | Sentences that start with the same word are similar  to an enumeration and hinder the reading flow.\nSeverity | Minor\nEntity | Word\nThreshold | 2 matches in successive sentence (configurable)\nEnabled | True\n\n\u003cdiv id='SubjectiveLanguage'/\u003e\n## SubjectiveLanguage\n\nAttribute | Description\n------------ | -------------\nAnomaly Name | SubjectiveLanguage\nDescription | Words with semantics that are not objectively defined should be avoided. Such words leave room for misinterpretation.\nSeverity | Minor\nEntity | Word\nThreshold | 1 match in the text (not configurable)\nEnabled | True\nWord List | benutzerfreundlich, Benutzerfreundlichkeit, ein bisschen, einfach zu Nutzen, einfache Nutzbarkeit, kosteneffizient, kosteneffizienz, kostengünstig, logischerweise, preiswert, selbstverständlich, ziemlich\nNegative Example | Wir *__sollten__* das Produkt bis zum Ende des Jahres fertig entwickelt haben.\nPositive Example | Wir *__werden__* das Produkt bis zum Ende des Jahres fertiggestellt haben.\n\n\u003cdiv id='Superlatives'/\u003e\n## Superlatives\n\nAttribute | Description\n------------ | -------------\nAnomaly Name | Superlatives\nDescription | Superlatives express a relation of an entity to all other entities. In general, this is difficult to prove.\nSeverity | Minor\nEntity | Word\nThreshold | 1 match in the text (not configurable)\nEnabled | True\nWord List | beste, höchste, super, unglaublich, wichtigste, wichtigsten\nNegative Example | Die Programmierer nehmen die *__wichtigste__* Gruppe ein.\n | Die Benutzerfreundlichkeit der Software ist die *__beste__* auf dem Markt.\n\n\u003cdiv id='UnnecessarySyllables'/\u003e\n## UnnecessarySyllables\n\nAttribute | Description\n------------ | -------------\nAnomaly Name | UnnecessarySyllables\nDescription | Words containing unnecessary syllables should be shortened.\nSeverity | Minor\nEntity | Word\nThreshold | 2 matches in one sentence (configurable)\nEnabled | True\nWord List | abmahnen, abstrafen, ansonsten, aufgabenstellung, aufgabenstellungen, ausleseverfahren, bedrohungssignal, bedrohungssignalen, einflussnahme, einkürzen, gefährdungspotential, gefährdungspotenzial, grundprinzip, heilungsverlauf, heutzutage, lernprozess, letztendlich, motivationsstruktur, motivationsstrukturen, neuartig, problemstellung, problemstellungen, rückantwort, rückantworten, rücksichtsnahme, stillschweigen , themenstellung, themenstellungen, überprüfen, wettergeschehen, witterungsbedinungen, zielsetzung, zielsetzungen, zukunftsporgnose\nNegative Example | Für die Entwickler gilt es in der Vorbereitungsphase alle zur Verfügung stehenden Technologien einzubeziehen und sämtliche relevante Lösungsalternativen für die *__Problemstellung__* des Kunden prototypenhaft auszuarbeiten.\n | *__Letztendlich__* verdeutlichen die erläuterten Techniken die gegenseitige Abhängigkeit – mit Ausnahme des Testens, welches auch effektiv einzeln angewendet werden kann.\nPositive Example | Für die Entwickler gilt es in der Vorbereitungsphase alle zur Verfügung stehenden Technologien einzubeziehen und sämtliche relevante Lösungsalternativen für die *__Probleme__* des Kunden prototypenhaft auszuarbeiten.\n | *__Letztlich__* verdeutlichen die erläuterten Techniken die gegenseitige Abhängigkeit – mit Ausnahme des Testens, welches auch effektiv einzeln angewendet werden kann.\n\n\u003cdiv id='id-example-implementation'/\u003e\n## Example Implementation\n\nAn example of a readability rule constitutes the following soure code, that detects consecutive fillers in a sentence:\n\n```Java\n@TypeCapability(inputs = { \"de.tudarmstadt.ukp.dkpro.core.api.segmentation.type.Token\",\n        \"de.tudarmstadt.ukp.dkpro.core.api.segmentation.type.Sentence\" }, outputs = {\n                \"de.qaware.rat.type.RatReadabilityAnomaly\" })\npublic class ConsecutiveFillersAnnotator extends JCasAnnotator_ImplBase {\n    private static final Logger LOGGER = LoggerFactory.getLogger(ConsecutiveFillersAnnotator.class);\n\n    public static final String SEVERITY = RuleParameter.SEVERITY;\n    @ConfigurationParameter(name = RuleParameter.SEVERITY, mandatory = true, defaultValue = \"Minor\")\n    protected String severity;\n\n    @Override\n    public void process(JCas aJCas) {\n        LOGGER.info(\"Start ConsecutiveFillersAnnotator\");\n\n        try {\n            String[] fillers = ImporterUtils.readWordlist(\"word-lists/Fillers.txt\");\n            List\u003cToken\u003e words = TextStatistic.getWordsInDocument(aJCas);\n\n            int maxSize = words.size() - 1;\n            for (int i = 0; i \u003c words.size(); i++) {\n\n                if (i + 1 \u003c= maxSize) {\n                    if (Arrays.asList(fillers).contains(words.get(i).getCoveredText().toLowerCase())\n                            \u0026\u0026 Arrays.asList(fillers).contains(words.get(i + 1).getCoveredText().toLowerCase())) {\n                        List\u003cString\u003e violations = new ArrayList\u003cString\u003e();\n                        violations.add(words.get(i).getCoveredText());\n                        violations.add(words.get(i + 1).getCoveredText());\n\n                        UimaUtils.createRatReadabilityAnomaly(aJCas, \"ConsecutiveFillers\", \"ReadabilityAnomaly\",\n                                severity,\n                                \"Vermeiden Sie aufeinanderfolgende Füllwörter. (\"\n                                        + CollectionUtils.printStringList(violations) + \")\",\n                                violations, words.get(i).getBegin(), words.get(i).getEnd());\n                    }\n                }\n            }\n        } catch (IOException e) {\n            LOGGER.error(\"The ConsecutiveFillersAnnotator failed.\");\n        }\n    }\n}\n```\n\n\u003cdiv id='id-default-configruation'/\u003e\n## Default Configuration\n\nThe default readability rule configuration:\n\n # | Rule | Threshold | Enabled\n ------------ | ------------- | ------------- | -------------\n1  | AdjectiveStyleAnnotator |\t5 | true\n2  | AmbiguousAdjectivesAndAdverbsAnnotator\t| | true\n3  | ConsecutiveFillersAnnotator | | true\t\n4  | ConsecutivePrepositionsAnnotator | | true\t\n5  | DoubleNegativeAnnotator |\t2 | true\n6  | Fillers | | false\n7  | FillerSentenceAnnotator | \t3 | true\n8  | IndirectSpeech | | false\n9  | LeadingAttributesAnnotator | 4 | true\n10 | LongSentenceAnnotator | 35 | true\n11 | LongWordAnnotator | 8 | true\n12 | ModalVerb | | false\n13 | ModalVerbSentenceAnnotator |\t2 | true\n14 | NestedSentenceAnnotator | 6 | true\n15 | NestedSentenceConjunction | 3 | false\n16 | NestedSentenceDelimiter | 3 | false\n17 | NominalStyleAnnotator|\t3 | true\n18 | PassiveVoiceAnnotator | | true\n19 | SentencesStartWithSameWordAnnotator |\t2 | true\n20 | SubjectiveLanguageAnnotator | | true\n21 | SuperlativeAnnotator | | true\n22 | UnnecessarySyllablesAnnotator | | true\n\n\n```xml\n\u003canomalies\u003e\n    \u003canomaly-rule\u003e\n        \u003cname\u003eAdjectiveStyle\u003c/name\u003e\n        \u003cseverity\u003eMajor\u003c/severity\u003e\n        \u003cthreshold\u003e6\u003c/threshold\u003e\n        \u003cenabled\u003etrue\u003c/enabled\u003e\n    \u003c/anomaly-rule\u003e\n    \u003canomaly-rule\u003e\n        \u003cname\u003eAmbiguousAdjectivesAndAdverbs\u003c/name\u003e\n        \u003cseverity\u003eMinor\u003c/severity\u003e\n        \u003cenabled\u003etrue\u003c/enabled\u003e\n    \u003c/anomaly-rule\u003e\n    \u003canomaly-rule\u003e\n        \u003cname\u003eConsecutiveFillers\u003c/name\u003e\n        \u003cseverity\u003eMinor\u003c/severity\u003e\n        \u003cenabled\u003etrue\u003c/enabled\u003e\n    \u003c/anomaly-rule\u003e\n    \u003canomaly-rule\u003e\n        \u003cname\u003eConsecutivePrepositions\u003c/name\u003e\n        \u003cseverity\u003eMinor\u003c/severity\u003e\n        \u003cenabled\u003etrue\u003c/enabled\u003e\n    \u003c/anomaly-rule\u003e\n    \u003canomaly-rule\u003e\n        \u003cname\u003eDoubleNegative\u003c/name\u003e\n        \u003cseverity\u003eMajor\u003c/severity\u003e\n        \u003cthreshold\u003e2\u003c/threshold\u003e\n        \u003cenabled\u003etrue\u003c/enabled\u003e\n    \u003c/anomaly-rule\u003e\n    \u003canomaly-rule\u003e\n        \u003cname\u003eFiller\u003c/name\u003e\n        \u003cseverity\u003eMinor\u003c/severity\u003e\n        \u003cenabled\u003efalse\u003c/enabled\u003e\n    \u003c/anomaly-rule\u003e\n    \u003canomaly-rule\u003e\n        \u003cname\u003eFillerSentence\u003c/name\u003e\n        \u003cseverity\u003eMajor\u003c/severity\u003e\n        \u003cthreshold\u003e3\u003c/threshold\u003e\n        \u003cenabled\u003etrue\u003c/enabled\u003e\n    \u003c/anomaly-rule\u003e\n    \u003canomaly-rule\u003e\n        \u003cname\u003eIndirectSpeech\u003c/name\u003e\n        \u003cseverity\u003eMinor\u003c/severity\u003e\n        \u003cenabled\u003efalse\u003c/enabled\u003e\n    \u003c/anomaly-rule\u003e\n    \u003canomaly-rule\u003e\n        \u003cname\u003eLeadingAttributes\u003c/name\u003e\n        \u003cseverity\u003eMajor\u003c/severity\u003e\n        \u003cthreshold\u003e4\u003c/threshold\u003e\n        \u003cenabled\u003efalse\u003c/enabled\u003e\n    \u003c/anomaly-rule\u003e\n    \u003canomaly-rule\u003e\n        \u003cname\u003eLongSentence\u003c/name\u003e\n        \u003cseverity\u003eCritical\u003c/severity\u003e\n        \u003cthreshold\u003e35\u003c/threshold\u003e\n        \u003cenabled\u003etrue\u003c/enabled\u003e\n    \u003c/anomaly-rule\u003e\n    \u003canomaly-rule\u003e\n        \u003cname\u003eLongWord\u003c/name\u003e\n        \u003cseverity\u003eMajor\u003c/severity\u003e\n        \u003cthreshold\u003e8\u003c/threshold\u003e\n        \u003cenabled\u003etrue\u003c/enabled\u003e\n    \u003c/anomaly-rule\u003e\n    \u003canomaly-rule\u003e\n        \u003cname\u003eModalVerb\u003c/name\u003e\n        \u003cseverity\u003eMinor\u003c/severity\u003e\n        \u003cenabled\u003efalse\u003c/enabled\u003e\n    \u003c/anomaly-rule\u003e\n    \u003canomaly-rule\u003e\n        \u003cname\u003eModalVerbSentence\u003c/name\u003e\n        \u003cseverity\u003eMinor\u003c/severity\u003e\n        \u003cthreshold\u003e2\u003c/threshold\u003e\n        \u003cenabled\u003etrue\u003c/enabled\u003e\n    \u003c/anomaly-rule\u003e\n    \u003canomaly-rule\u003e\n        \u003cname\u003eNestedSentence\u003c/name\u003e\n        \u003cseverity\u003eCritical\u003c/severity\u003e\n        \u003cthreshold\u003e6\u003c/threshold\u003e\n        \u003cenabled\u003etrue\u003c/enabled\u003e\n    \u003c/anomaly-rule\u003e\n    \u003canomaly-rule\u003e\n        \u003cname\u003eNestedSentenceConjunction\u003c/name\u003e\n        \u003cseverity\u003eMajor\u003c/severity\u003e\n        \u003cthreshold\u003e3\u003c/threshold\u003e\n        \u003cenabled\u003efalse\u003c/enabled\u003e\n    \u003c/anomaly-rule\u003e\n    \u003canomaly-rule\u003e\n        \u003cname\u003eNestedSentenceDelimiter\u003c/name\u003e\n        \u003cseverity\u003eMajor\u003c/severity\u003e\n        \u003cthreshold\u003e3\u003c/threshold\u003e\n        \u003cenabled\u003efalse\u003c/enabled\u003e\n    \u003c/anomaly-rule\u003e\n    \u003canomaly-rule\u003e\n        \u003cname\u003eNominalStyle\u003c/name\u003e\n        \u003cseverity\u003eMajor\u003c/severity\u003e\n        \u003cthreshold\u003e3\u003c/threshold\u003e\n        \u003cenabled\u003etrue\u003c/enabled\u003e\n    \u003c/anomaly-rule\u003e\n    \u003canomaly-rule\u003e\n        \u003cname\u003ePassiveVoice\u003c/name\u003e\n        \u003cseverity\u003eMajor\u003c/severity\u003e\n        \u003cenabled\u003etrue\u003c/enabled\u003e\n    \u003c/anomaly-rule\u003e\n    \u003canomaly-rule\u003e\n        \u003cname\u003eSentencesStartWithSameWord\u003c/name\u003e\n        \u003cseverity\u003eMinor\u003c/severity\u003e\n        \u003cthreshold\u003e2\u003c/threshold\u003e\n        \u003cenabled\u003etrue\u003c/enabled\u003e\n    \u003c/anomaly-rule\u003e\n    \u003canomaly-rule\u003e\n        \u003cname\u003eSubjectiveLanguage\u003c/name\u003e\n        \u003cseverity\u003eMinor\u003c/severity\u003e\n        \u003cenabled\u003etrue\u003c/enabled\u003e\n    \u003c/anomaly-rule\u003e\n    \u003canomaly-rule\u003e\n        \u003cname\u003eUnnecessarySyllables\u003c/name\u003e\n        \u003cseverity\u003eMinor\u003c/severity\u003e\n        \u003cenabled\u003etrue\u003c/enabled\u003e\n    \u003c/anomaly-rule\u003e\n\u003c/anomalies\u003e\n```\n\n\u003cdiv id='id-section4'/\u003e\n# Configuration \u0026 Quality Gate\n\nThe generated report \"{filename}-rat-report.html\" aggregates the results of the different measurements (formulas, statistics and anomalies). Further, a quality gate indicates whether the text is too trivial or too hard to understand.\n\nFirst, RAT looks for the configuration at the provided argument (-c or --configurationPath). If this parameter is not provided, e.g. is null, or there is no valid file at the location, RAT will look in the directory path of the file that is currently analysed for a file named \"rat-config.xml\". If both ways fail to obtain a configuration file, the defaultConfig parameter provided by the executor is considered. In case the default configuration is not a file (e.g., is deleted), the rat internal configuration will be loaded.\n\nBased on the conceptional design of the quality gate depicted by SonarQube:\n\n![rat-quality-sonar](/01_docbase/01_doc-images/sonar-quality-gate.PNG)\n\nWe developed a similar quality gate for RAT:\n\n![rat-quality-gate](/01_docbase/01_doc-images/rat-quality-gate.PNG)\n\nThe default quality gate configuration:\n\n```xml\n\u003cquality-gate\u003e\n        \u003canomalies\u003e\n            \u003canomaly\u003e\n                \u003cseverity\u003eminor\u003c/severity\u003e\n                \u003cwarning-threshold\u003e50\u003c/warning-threshold\u003e\n                \u003cerror-threshold\u003e9999\u003c/error-threshold\u003e\n            \u003c/anomaly\u003e\n            \u003canomaly\u003e\n                \u003cseverity\u003emajor\u003c/severity\u003e\n                \u003cwarning-threshold\u003e1\u003c/warning-threshold\u003e\n                \u003cerror-threshold\u003e30\u003c/error-threshold\u003e\n            \u003c/anomaly\u003e\n            \u003canomaly\u003e\n                \u003cseverity\u003ecritical\u003c/severity\u003e\n                \u003cwarning-threshold\u003e1\u003c/warning-threshold\u003e\n                \u003cerror-threshold\u003e1\u003c/error-threshold\u003e\n            \u003c/anomaly\u003e\n        \u003c/anomalies\u003e\n        \u003cformulas\u003e\n            \u003cformula\u003e\n                \u003cname\u003eflesch-reading-ease-amstad\u003c/name\u003e\n                \u003ceasy-warning-threshold\u003e75\u003c/easy-warning-threshold\u003e\n                \u003chard-warning-threshold\u003e25\u003c/hard-warning-threshold\u003e\n                \u003ceasy-error-threshold\u003e80\u003c/easy-error-threshold\u003e\n                \u003chard-error-threshold\u003e20\u003c/hard-error-threshold\u003e\n            \u003c/formula\u003e\n            \u003cformula\u003e\n                \u003cname\u003ewiener-sachtextformel\u003c/name\u003e\n                \u003ceasy-warning-threshold\u003e7\u003c/easy-warning-threshold\u003e\n                \u003chard-warning-threshold\u003e14\u003c/hard-warning-threshold\u003e\n                \u003ceasy-error-threshold\u003e5\u003c/easy-error-threshold\u003e\n                \u003chard-error-threshold\u003e16\u003c/hard-error-threshold\u003e\n            \u003c/formula\u003e\n        \u003c/formulas\u003e\n        \u003cstatistics\u003e\n            \u003cstatistic\u003e\n                \u003cname\u003eaverage-number-of-words-per-sentence\u003c/name\u003e\n                \u003ceasy-warning-threshold\u003e7\u003c/easy-warning-threshold\u003e\n                \u003chard-warning-threshold\u003e19\u003c/hard-warning-threshold\u003e\n                \u003ceasy-error-threshold\u003e5\u003c/easy-error-threshold\u003e\n                \u003chard-error-threshold\u003e26\u003c/hard-error-threshold\u003e\n            \u003c/statistic\u003e\n            \u003cstatistic\u003e\n                \u003cname\u003eaverage-number-of-syllables-per-word\u003c/name\u003e\n                \u003ceasy-warning-threshold\u003e1.4\u003c/easy-warning-threshold\u003e\n                \u003chard-warning-threshold\u003e3\u003c/hard-warning-threshold\u003e\n                \u003ceasy-error-threshold\u003e1.2\u003c/easy-error-threshold\u003e\n                \u003chard-error-threshold\u003e4\u003c/hard-error-threshold\u003e\n            \u003c/statistic\u003e\n        \u003c/statistics\u003e\n    \u003c/quality-gate\u003e\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqaware%2Freadability-analysis-tool","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fqaware%2Freadability-analysis-tool","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqaware%2Freadability-analysis-tool/lists"}