FIXME: add a description // If you want to factorize the description uncomment the following line and create the file. //include::../description.adoc[] == Why is this an issue? This rule is not really a rule, but a demonstration of the features from Asciidoc that can appear in a rule description. === All titles should be in sequence No title 3 directly below title 1 ==== Titles There can be 4 different levels of titles, as demonstrated in this rule, usually with standard text. ==== Character format It is not uncommon to have text in *bold*, _italic_, *_both_*. Less common are ^exponents^ and ~indices~. We don't directly use highlighting, but use a specific form of it to [.underline]#underline# and [.line-through]#strikethrough#. ==== Source code Code appears in `embedded within a sentence`, in some cases as part of ``word``s, without spaces surrounding it. Embedded code can also be an https://en.wikipedia.org/wiki/Hyperlink[`hyperlink`]. It can also appear as a separate block: [source,csharp] ---- private void OtherSourceCode() { // We usually indicate what language is used for the code } ---- ---- But not always ---- [source,cpp] ---- private void YetAnotherSourceCode() { // One rule may contain several languages } ---- [source,javascript,diff-id=1,diff-type=noncompliant] ---- // And the code can contain information ---- [source,javascript,diff-id=1,diff-type=compliant] ---- // And the code can contain diff information ---- Diff-views are documented https://github.com/SonarSource/rspec/blob/master/docs/description.adoc#diff-view[here]. [source,txt,diff-id=2,diff-type=noncompliant] ---- When using diff-views, there should be one noncompliant example. ---- [source,txt,diff-id=2,diff-type=compliant] ---- When using diff-views, there should be at least one compliant solution. However, the diff-view feature was first designed to have only one compliant solution. ---- [source,txt,diff-id=2,diff-type=compliant] ---- When using diff-views, Be mindful that providing more than one compliant solution is "supported" but may completely disable the diff highlighting. ---- This limitation is discussed https://discuss.sonarsource.com/t/support-for-multiple-compliant-code-snippets-in-the-rspec-code-diffs/14644[here]. ---- // We have cases where we are missing the [source,language] attributes // TODO: Maybe we should detect and prevent this ---- ==== Lists There can be bullet lists: * With * three ** An sublists ** Up to *** Three nested levels *** But no more * bullets Or numbered lists: . A list . with numbers .. And also possible sublists .. with more items ==== Admonitions They are not supported. *Warning*: They are simulated with manual layout. ==== Links There are links in the text, see https://docs.asciidoctor.org/asciidoc/latest/syntax-quick-reference/#links for the various ways they can appear. Of course, the link can have https://docs.asciidoctor.org/asciidoc/latest/syntax-quick-reference/#links[another text]. We can also link to other rules, such as S100. We cannot specify which language is the target of this link, it is always the same as the current RSPEC language. ==== Tables [frame=all] [cols="^1,<1, 2a"] |=== |Title|What we use | Details | Tables | A simple table | | Alignment | Can differ between cols | | Header | The first line is often a header | | Strong s| A cell can be put in bold | | Tables | A table | Nested asciidoc, with, for instance: * Nested * lists See for instance S5131 | Merged cells | They are not supported | | Borders | Most often all around | | Nested tables | They are not supported | |=== ==== Includes It is possible to include other files. include::included1.adoc[] Sometimes, the content of the included files can vary, with the use of a variable. :var: variable text include::included2.adoc[] Which file is included can also depend on a variable: :inc: a.adoc include::{inc}[] :inc: b.adoc include::{inc}[] == How to fix it === Code examples ==== Noncompliant code example [source,text,diff-id=3,diff-type=noncompliant] ---- FIXME ---- ==== Compliant solution [source,text,diff-id=3,diff-type=compliant] ---- FIXME ---- //=== How does this work? //=== Pitfalls //=== Going the extra mile //== Resources //=== Documentation //=== Articles & blog posts //=== Conference presentations //=== Standards //=== Benchmarks