opt_v.c revision 1.7
1/* $NetBSD: opt_v.c,v 1.7 2022/04/22 21:21:20 rillig Exp $ */ 2 3/* 4 * Tests for the options '-v' and '-nv'. 5 * 6 * The option '-v' enables verbose mode. It outputs some information about 7 * what's going on under the hood, especially when lines are broken. It also 8 * outputs a few statistics about line counts and comments at the end. 9 * 10 * The option '-nv' disables verbose mode. Only errors and warnings are output 11 * in this mode, but no progress messages. 12 */ 13 14#indent input 15/* 16 * A block comment. 17 */ 18void 19example(void) 20{ 21 printf("A very long message template with %d arguments: %s, %s, %s", 3, "first", "second", "third"); 22} 23 24/* $ The below comment is neither counted nor formatted. */ 25#define macro1 /* prefix */ suffix 26 27/* $ The below comment is formatted and counted. */ 28#define macro2 prefix /* suffix */ 29#indent end 30 31#indent run -v 32/* 33 * A block comment. 34 */ 35void 36example(void) 37{ 38 printf("A very long message template with %d arguments: %s, %s, %s", 3, "first", "second", "third"); 39} 40 41#define macro1 /* prefix */ suffix 42 43#define macro2 prefix /* suffix */ 44There were 10 output lines and 2 comments 45(Lines with comments)/(Lines with code): 0.571 46#indent end 47 48 49#indent input 50void 51example(void) 52{ 53 int sum1 = 1+2+3+4+5+6+7+8+9+10+11+12+13+14+15+16+17+18+19+20+21; 54 int sum2 = (1+2+3+4+5+6+7+8+9+10+11+12+13+14+15+16+17+18+19+20+21); 55} 56#indent end 57 58#indent run -nv 59void 60example(void) 61{ 62/* $ XXX: The following lines are too long and should thus be broken. */ 63/* $ XXX: If they are broken, -nv does NOT output 'Line broken'. */ 64 int sum1 = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 + 20 + 21; 65 int sum2 = (1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 + 20 + 21); 66} 67#indent end 68 69 70#indent input 71/* Demonstrates line number counting in verbose mode. */ 72 73int *function(void) 74{} 75#indent end 76 77#indent run -v 78/* Demonstrates line number counting in verbose mode. */ 79 80int * 81function(void) 82{ 83} 84There were 5 output lines and 1 comments 85(Lines with comments)/(Lines with code): 0.250 86#indent end 87/* In the above output, the '5' means 5 non-empty lines. */ 88 89/* 90 * XXX: It's rather strange that -v writes to stdout, even in filter mode. 91 * This output belongs on stderr instead. 92 */ 93 94 95/* 96 * Test line counting in preprocessor directives. 97 */ 98#indent input 99#if 0 100int line = 1; 101int line = 2; 102int line = 3; 103#else 104int line = 5; 105#endif 106#indent end 107 108#indent run -v -di0 109#if 0 110int line = 1; 111int line = 2; 112int line = 3; 113#else 114int line = 5; 115#endif 116There were 3 output lines and 0 comments 117(Lines with comments)/(Lines with code): 0.000 118#indent end 119/* 120 * FIXME: The lines within the conditional compilation directives must be 121 * counted as well. TODO: Move stats out of parser_state. 122 */ 123