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-02 · corpus of 83 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
83 cases
2.10
default · 58✓ 25✗
v3.0.0 (2026-09-02)
content · 76✓ 7✗region · 76✓ 7✗
version 4.0.0
default · 56✓ 27✗
14.0.0 compiled with serialization support: json
default · 44✓ 39✗
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
answers4 code · 0 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
✗ 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
✗ 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
✗ fails
wants2 code · 1 comments
answers1 code · 2 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
✗ 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
✗ 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
✗ 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
✗ 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
✗ fails
wants3 code · 1 comments
answers4 code · 0 comments
5030-line_splice_inside_a_comment✗ fails
wants1 code · 2 comments
answers2 code · 1 comments
✗ 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
✗ 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
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
✗ 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
✗ 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
✗ fails
wants1 blanks · 9 code · 3 comments
answers0 blanks · 13 code · 0 comments
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