LineJudge

Line counting conformance

Check out this project on GitHub

Every tool below is judged against its own declared rules, so a failure means the tool disagrees with itself. Hover elements like the test name or the status result for more information or the reasons. Why this exists

measured 2026-09-12 · corpus of 84 cases in 8 groups · data.json

✓ agrees✓ⓘ agrees, with a note◆ agrees through a declared exception✗ fails, reviewed✗ fails, not yet reviewed⊘ does not support this languagebroke
show
84 cases
2.10
default · 58✓ 26✗default · 59✓ 25✗--strip-str-commentsdocstring-as-code · 59✓ 25✗
v3.1.1 (2026-09-11)
content · 77✓ 7✗region · 77✓ 7✗
version 4.1.0
default · 70✓ 14✗
15.0.0 compiled with serialization support: json
default · 44✓ 40✗
1000 · comments
1010-code_then_comment_on_one_line
✓
✓
✓✓
1020-comment_then_code_then_comment
✓
✓
✓✗ fails
wants2 code · 0 comments
answers1 code · 1 comments
1030-brace_and_trailing_comment
✓
✓
✓✓
1040-pairs_in_either_order
✓
✓
✓✓
1050-block_comment_holding_line_comment
✓
✓
✓✓
1060-line_comment_holding_block_open
✓
✓
✓✓
1070-block_comment_closed_then_line_comment
✓
✓
✓✗ fails
wants1 code · 1 comments
answers2 code · 0 comments
1080-block_close_touching_a_line_comment
✓
✓
✓✗ fails
wants1 code · 1 comments
answers2 code · 0 comments
1090-block_comment_closed_after_a_line_comment
✓
✓
✓✗ fails
wants4 code · 3 comments
answers2 code · 5 comments
1100-close_touching_reopen_plain
✓
✓
✓✓
1110-close_and_reopen_with_a_space
✓
✓
✓✓
1120-close_then_code_then_stray_and_reopen
✗ fails
wants2 code · 2 comments
answers1 code · 3 comments
✓
✓✗ fails
wants2 code · 2 comments
answers1 code · 3 comments
1130-closer_in_code_with_nothing_open
✓
✓
✓✓
1140-three_slashes_are_one_comment
✓
✓
✓✓
1150-doc_comment_opening_after_code
✓
✓
✓✗ fails
wants2 code · 1 comments
answers1 code · 2 comments
regionsMarkdown · wants 1 code · 1 comments · answers 0 code · 2 comments
1160-two_comment_pairs_of_one_language
✓
✓
✓✓
1170-pascal_writes_two_pairs
✓
✓
✓✓
1180-cmake_bracket_comment
✗ fails
wants1 code · 3 comments
answers3 code · 1 comments
✓
✓✗ fails
wants1 code · 3 comments
answers3 code · 1 comments
1190-nested_block_comment_that_does_not
✓
✓
✓✓
1200-nested_block_comment_that_nests
✗ fails
wants1 code · 1 comments
answers2 code · 0 comments
✓
✓✓
1210-close_touching_reopen_nesting
✗ fails
wants1 code · 3 comments
answers3 code · 1 comments
✓
✓✓
1220-nested_block_comment_in_odin
✗ fails
wants2 code · 4 comments
answers4 code · 2 comments
✓
✓✗ fails
wants2 code · 4 comments
answers4 code · 2 comments
1230-a_comment_word_at_the_head_of_a_longer_word
✗ fails
wants2 code · 1 comments
answers1 code · 2 comments
✓
✓✗ fails
wants2 code · 1 comments
answers1 code · 2 comments
1240-a_comment_opener_inside_a_vector_type
✗ fails
wants5 code · 3 comments
answers1 code · 7 comments
✓
✗ fails
wants5 code · 3 comments
answers1 code · 7 comments
✗ fails
wants5 code · 3 comments
answers8 code · 0 comments
2000 · string forms
2010-comment_symbol_inside_string
✓
✓
✓✓
2020-string_symbol_inside_comment
✓
✓
✓✓
2030-string_symbol_of_another_kind_inside
✓
✓
✓✓
2040-comment_pair_opening_inside_a_string
✓
✓
✓✓
2050-string_opening_after_block_close
✓
✓
✓✗ fails
wants1 code · 2 comments
answers0 code · 3 comments
2060-backtick_template_holding_a_comment
✗ fails
wants4 code · 0 comments
answers3 code · 1 comments
✓
✓✓
2070-verbatim_string_crossing_lines
✓
✓
✓✓
2080-odd_triple_quote_count
✗ fails
wants4 code · 1 comments
answers2 code · 3 comments
✓
✓✓
2090-docstring_holding_a_comment_symbol
✓
✓
✓ ⓘ✓
2100-triple_quoted_data_not_documentation
✓ ⓘ
✓
✓ ⓘ✓
2110-here_string_holding_an_apostrophe
✓
✓
✓✓
2120-heredoc_holding_an_apostrophe
✓
✗ fails
wants3 code · 2 comments
answers5 code · 0 comments
✗ fails
wants3 code · 2 comments
answers5 code · 0 comments
✗ fails
wants3 code · 2 comments
answers5 code · 0 comments
2130-raw_string_holding_quotes
✓
✓
✓✓
2140-raw_string_holding_its_own_closing_bracket
✓
✓
✓✓
2150-delimited_raw_string_names_its_own_closer
✓
✗ fails
wants4 code · 0 comments
answers1 code · 3 comments
✓✗ fails
wants4 code · 0 comments
answers1 code · 3 comments
disabled2160-long_bracket_string_holding_a_comment_symbol
2170-lua_level_bracket_holding_plain_close
✓
✓
✓✗ fails
wants1 code · 3 comments
answers3 code · 1 comments
2180-lua_short_closer_hiding_the_real_one
✓
✓
✓✗ fails
wants1 code · 2 comments
answers2 code · 1 comments
2190-triple_quote_read_as_three_short_ones
✗ fails
wants5 code · 0 comments
answers4 code · 1 comments
✓
✓✗ fails
wants5 code · 0 comments
answers1 code · 4 comments
3000 · escapes and the closing quote
3010-escaped_quote_before_comment
✓
✓
✓✓
3020-multiline_string_ending_in_backslash
✓
✓
✓✓
3030-raw_string_ending_in_backslash
✓
✓
✓✓
disabled3040-bare_raw_string_ending_in_backslash
3050-verbatim_string_ending_in_a_backslash
✓
✓
✓✓
disabled3060-wysiwyg_string_ending_in_a_backslash
3070-backslash_before_a_closing_quote_in_sql
✓
✓
✓✗ fails
wants2 code · 1 comments
answers3 code · 0 comments
3080-backtick_escapes_inside_a_double_quoted_string
✓
✓
✓✗ fails
wants2 code · 1 comments
answers3 code · 0 comments
3090-backtick_before_a_single_quoted_string
✓
✓
✓✗ fails
wants2 code · 1 comments
answers3 code · 0 comments
4000 · a quote that opens nothing
4010-char_literal_holding_a_quote
✓
✓
✗ fails
wants1 code · 2 comments
answers3 code · 0 comments
✗ fails
wants1 code · 2 comments
answers3 code · 0 comments
4020-two_char_literals_holding_escapes
✓
✓
✗ fails
wants3 code · 3 comments
answers6 code · 0 comments
✗ fails
wants3 code · 3 comments
answers6 code · 0 comments
4030-character_written_with_a_backslash
✓
✓
✓✓
4040-escaped_apostrophe_outside_quotes
✓
✓
✓✓
4050-lifetime_and_apostrophe_in_string
✓
✓
✓✓
4060-primed_identifier_haskell
✓
✓
✓✓
4070-primed_identifier_ocaml
✓
✓
✓✓
4080-primed_identifier_and_apostrophe
✓
✓
✓✓
4090-transpose_operator_and_char
✓
✓
✓✓
5000 · line splices
5010-line_splice_inside_a_string
✗ fails
wants4 code · 0 comments
answers3 code · 1 comments
✓
✓✓
5020-blank_line_inside_a_spliced_string
✗ fails
wants1 blanks · 2 code
answers0 blanks · 3 code
✓
✓✓
5030-line_splice_inside_a_comment
✗ fails
wants1 code · 2 comments
answers2 code · 1 comments
✓
✓✗ fails
wants1 code · 2 comments
answers2 code · 1 comments
5040-line_splice_in_a_comment_with_no_words
✗ fails
wants2 code · 2 comments
answers3 code · 1 comments
✓
✓✗ fails
wants2 code · 2 comments
answers3 code · 1 comments
5050-line_splice_after_a_closed_block_comment
✗ fails
wants2 code · 2 comments
answers3 code · 1 comments
✓
✓✗ fails
wants2 code · 2 comments
answers4 code · 0 comments
5060-code_then_a_spliced_line_comment
✓
✓
✓✗ fails
wants2 code · 1 comments
answers3 code · 0 comments
5070-blank_line_inside_a_spliced_comment
✗ fails
wants1 blanks · 1 comments
answers0 blanks · 2 comments
✓
✓✗ fails
wants0 blanks · 2 comments
answers1 blanks · 1 comments
6000 · another language inside the file
6010-html_has_no_strings
✓
✓
✓✗ fails
wants2 code · 1 comments
answers3 code · 0 comments
6020-comment_opener_inside_an_attribute
✗ fails
wants3 code · 0 comments
answers1 code · 2 comments
✗ fails
wants3 code · 0 comments
answers1 code · 2 comments
✓✓
6030-opening_tag_split_over_two_lines
✗ fails
wants4 code · 1 comments
answers5 code · 0 comments
regionswants JavaScript 2 · finds none
✗ fails
wants4 code · 1 comments
answers5 code · 0 comments
regionswants JavaScript 2 · finds none
✗ fails
wants4 code · 1 comments
answers5 code · 0 comments
regionswants JavaScript 2 · finds none
✗ fails
wants4 code · 1 comments
answers5 code · 0 comments
regionswants JavaScript 2 · finds none
6040-script_tag_in_upper_case
✗ fails
wants5 code · 1 comments
answers6 code · 0 comments
regionswants JavaScript 2 · finds none
✓
✗ fails
wants5 code · 1 comments
answers6 code · 0 comments
regionswants JavaScript 2 · finds none
✗ fails
wants5 code · 1 comments
answers6 code · 0 comments
regionswants JavaScript 2 · finds none
6050-script_closer_written_with_a_space
✗ regions differ
regionswants JavaScript 1 · finds none
✓
✗ regions differ
regionswants JavaScript 1 · finds none
✗ regions differ
regionswants JavaScript 1 · finds none
6060-script_closer_inside_a_string
✓
✓
✓✗ fails
wants5 lines · 5 code
answers6 lines · 6 code
regionswants none · finds JavaScript 1
6070-script_opener_that_never_closes
✓
✓
✓✓
6080-block_named_by_a_mime_type
✗ fails
wants3 code · 1 comments
answers4 code · 0 comments
regionswants TypeScript 2 · finds none
✓
✗ fails
wants3 code · 1 comments
answers4 code · 0 comments
regionswants TypeScript 2 · finds none
✗ regions differ
regionsJavaScript · wanted none · finds 2 lines
TypeScript · 2 lines · finds none
6090-vue_blocks_count_as_their_own_languages
✗ regions differ
regionswants CSS 2 · JavaScript 3 · finds none
✓
✗ regions differ
regionswants CSS 2 · JavaScript 3 · finds none
✗ fails
wants9 code · 3 comments
answers10 code · 2 comments
regionsHTML · wants 1 code · 1 comments · answers 2 code · 0 comments
6100-block_language_named_by_the_tag
✗ regions differ
regionswants SCSS 2 · TypeScript 2 · finds none
✓
✗ regions differ
regionswants SCSS 2 · TypeScript 2 · finds none
✗ regions differ
regionsCSS · wanted none · finds 2 lines
JavaScript · wanted none · finds 2 lines
SCSS · 2 lines · finds none
TypeScript · 2 lines · finds none
6110-php_block_holding_html_around_it
✗ fails
wants6 code · 1 comments
answers7 code · 0 comments
regionswants HTML 2 · finds none
✗ fails
wants4 code · 1 comments
answers5 code · 0 comments
regionswants HTML 2 · finds none
✗ fails
wants6 code · 1 comments
answers7 code · 0 comments
regionswants HTML 2 · finds none
✗ fails
wants6 code · 1 comments
answers7 code · 0 comments
regionswants HTML 2 · finds none
6120-script_inside_html_inside_php
✗ regions differ
regionswants HTML 4 · JavaScript 2 · finds none
✗ regions differ
regionswants HTML 4 · JavaScript 2 · finds none
✗ regions differ
regionswants HTML 4 · JavaScript 2 · finds none
✗ regions differ
regionswants HTML 4 · JavaScript 2 · finds none
7000 · literals with their own delimiters
7010-regex_literal_holding_a_quote
✓
✓
✗ fails
wants2 code · 1 comments
answers3 code · 0 comments
✗ fails
wants2 code · 1 comments
answers3 code · 0 comments
7020-regex_holding_a_comment_opener
✓
✗ fails
wants3 code · 0 comments
answers1 code · 2 comments
✗ fails
wants3 code · 0 comments
answers1 code · 2 comments
✗ fails
wants3 code · 0 comments
answers1 code · 2 comments
8000 · what the line counts as
8010-punctuation_only_line
✓
✓
✓✓
8020-blank_line_inside_block_comment
✓
✓
✓✓
8030-blank_line_inside_a_multiline_string
✗ fails
wants5 code · 0 comments
answers2 code · 3 comments
✓
✓✓
8040-doc_comment_with_no_text
✓
✓
✓✗ fails
wants0 blanks · 3 comments
answers1 blanks · 2 comments
regionsMarkdown · wants 0 blanks · 3 comments · answers 1 blanks · 2 comments
8050-doc_comment_with_no_text_ending_a_block
✓
✓
✓✗ fails
wants3 lines · 2 comments
answers2 lines · 1 comments
regionsMarkdown · wants 2 lines · 2 comments · answers 1 lines · 1 comments