| # This package contains functions and classes for analyzing text structures. | |
| load("//bazel:flex.bzl", "genlex") | |
| licenses(["notice"]) | |
| package( | |
| default_visibility = [ | |
| "//verilog/CST:__subpackages__", | |
| "//verilog/analysis:__subpackages__", | |
| "//verilog/tools/kythe:__pkg__", | |
| "//verilog/tools/lint:__subpackages__", | |
| ], | |
| ) | |
| cc_library( | |
| name = "citation", | |
| srcs = ["citation.cc"], | |
| hdrs = ["citation.h"], | |
| deps = [ | |
| "@com_google_absl//absl/strings", | |
| ], | |
| ) | |
| cc_library( | |
| name = "lint_rule_status", | |
| srcs = ["lint_rule_status.cc"], | |
| hdrs = ["lint_rule_status.h"], | |
| deps = [ | |
| ":citation", | |
| "//common/strings:line_column_map", | |
| "//common/text:concrete_syntax_leaf", | |
| "//common/text:symbol", | |
| "//common/text:syntax_tree_context", | |
| "//common/text:token_info", | |
| "//common/text:tree_utils", | |
| "//common/util:logging", | |
| "//common/util:spacer", | |
| "@com_google_absl//absl/strings", | |
| ], | |
| ) | |
| cc_library( | |
| name = "lint_rule", | |
| hdrs = ["lint_rule.h"], | |
| deps = [ | |
| ":lint_rule_status", | |
| "@com_google_absl//absl/status", | |
| "@com_google_absl//absl/strings", | |
| ], | |
| ) | |
| genlex( | |
| name = "command_file_lex", | |
| src = "command_file.lex", | |
| out = "command_file.yy.cc", | |
| ) | |
| cc_library( | |
| name = "command_file_lexer", | |
| srcs = [ | |
| "command_file.yy.cc", | |
| "command_file_lexer.cc", | |
| ], | |
| hdrs = [ | |
| "command_file_lexer.h", | |
| "lint_waiver.h", | |
| ], | |
| copts = select({ | |
| "@platforms//os:windows": [], | |
| "//conditions:default": ["-Wno-implicit-fallthrough"], | |
| }), | |
| deps = [ | |
| "//bazel:flex", | |
| "//common/lexer:flex_lexer_adapter", | |
| "//common/lexer:token_stream_adapter", | |
| "//common/strings:position", | |
| "//common/text:text_structure", | |
| "//common/text:token_info", | |
| "//common/text:token_stream_view", | |
| "//common/util:container_util", | |
| "//common/util:interval_set", | |
| "//common/util:logging", | |
| "@com_google_absl//absl/strings", | |
| ], | |
| ) | |
| cc_library( | |
| name = "violation_handler", | |
| srcs = ["violation_handler.cc"], | |
| hdrs = ["violation_handler.h"], | |
| deps = [ | |
| ":lint_rule_status", | |
| "//common/strings:diff", | |
| "//common/util:file_util", | |
| "//common/util:user_interaction", | |
| "@com_google_absl//absl/status", | |
| "@com_google_absl//absl/strings", | |
| ], | |
| ) | |
| cc_test( | |
| name = "command_file_lexer_test", | |
| size = "small", | |
| srcs = ["command_file_lexer_test.cc"], | |
| deps = [ | |
| ":command_file_lexer", | |
| "//common/lexer:lexer_test_util", | |
| "//common/text:token_info", | |
| "@com_google_absl//absl/strings", | |
| "@com_google_googletest//:gtest_main", | |
| ], | |
| ) | |
| cc_library( | |
| name = "lint_waiver", | |
| srcs = ["lint_waiver.cc"], | |
| hdrs = ["lint_waiver.h"], | |
| copts = select({ | |
| "@platforms//os:windows": [], | |
| "//conditions:default": ["-fexceptions"], | |
| }), | |
| features = ["-use_header_modules"], # precompiled headers incompatible with -fexceptions. | |
| deps = [ | |
| ":command_file_lexer", | |
| "//common/strings:comment_utils", | |
| "//common/strings:line_column_map", | |
| "//common/strings:position", | |
| "//common/text:text_structure", | |
| "//common/text:token_info", | |
| "//common/text:token_stream_view", | |
| "//common/util:container_iterator_range", | |
| "//common/util:container_util", | |
| "//common/util:file_util", | |
| "//common/util:interval_set", | |
| "//common/util:iterator_range", | |
| "//common/util:logging", | |
| "@com_google_absl//absl/strings", | |
| ], | |
| ) | |
| cc_library( | |
| name = "file_analyzer", | |
| srcs = ["file_analyzer.cc"], | |
| hdrs = ["file_analyzer.h"], | |
| deps = [ | |
| "//common/lexer", | |
| "//common/lexer:token_stream_adapter", | |
| "//common/parser:parse", | |
| "//common/strings:line_column_map", | |
| "//common/text:concrete_syntax_tree", | |
| "//common/text:text_structure", | |
| "//common/text:token_info", | |
| "//common/text:token_stream_view", | |
| "//common/util:spacer", | |
| "//common/util:logging", | |
| "@com_google_absl//absl/status", | |
| "@com_google_absl//absl/strings", | |
| ], | |
| ) | |
| cc_library( | |
| name = "linter_test_utils", | |
| testonly = 1, | |
| srcs = ["linter_test_utils.cc"], | |
| hdrs = ["linter_test_utils.h"], | |
| deps = [ | |
| ":lint_rule_status", | |
| "//common/text:token_info", | |
| "//common/text:token_info_test_util", | |
| "//common/util:algorithm", | |
| "@com_google_absl//absl/status", | |
| "@com_google_absl//absl/strings", | |
| "@com_google_googletest//:gtest", # for library testonly | |
| ], | |
| ) | |
| cc_library( | |
| name = "syntax_tree_search_test_utils", | |
| testonly = 1, | |
| srcs = ["syntax_tree_search_test_utils.cc"], | |
| hdrs = ["syntax_tree_search_test_utils.h"], | |
| deps = [ | |
| ":syntax_tree_search", | |
| "//common/lexer:lexer_test_util", | |
| "//common/text:token_info", | |
| "//common/text:tree_utils", | |
| "//common/util:algorithm", | |
| "//common/util:logging", | |
| "@com_google_absl//absl/strings", | |
| "@com_google_googletest//:gtest", # for library testonly | |
| ], | |
| ) | |
| cc_library( | |
| name = "line_linter", | |
| srcs = ["line_linter.cc"], | |
| hdrs = ["line_linter.h"], | |
| deps = [ | |
| ":line_lint_rule", | |
| ":lint_rule_status", | |
| "//common/util:logging", | |
| "@com_google_absl//absl/strings", | |
| ], | |
| ) | |
| cc_library( | |
| name = "line_linter_test_utils", | |
| testonly = 1, | |
| hdrs = ["line_linter_test_utils.h"], | |
| deps = [ | |
| ":line_lint_rule", | |
| ":line_linter", | |
| ":lint_rule_status", | |
| ":linter_test_utils", | |
| "//common/text:text_structure", | |
| "@com_google_absl//absl/strings", | |
| ], | |
| ) | |
| cc_library( | |
| name = "line_lint_rule", | |
| hdrs = ["line_lint_rule.h"], | |
| deps = [ | |
| ":lint_rule", | |
| "@com_google_absl//absl/strings", | |
| ], | |
| ) | |
| cc_library( | |
| name = "syntax_tree_linter", | |
| srcs = ["syntax_tree_linter.cc"], | |
| hdrs = ["syntax_tree_linter.h"], | |
| deps = [ | |
| ":lint_rule_status", | |
| ":syntax_tree_lint_rule", | |
| "//common/text:concrete_syntax_leaf", | |
| "//common/text:concrete_syntax_tree", | |
| "//common/text:symbol", | |
| "//common/text:syntax_tree_context", | |
| "//common/text:tree_context_visitor", | |
| "//common/util:logging", | |
| ], | |
| ) | |
| cc_library( | |
| name = "syntax_tree_linter_test_utils", | |
| testonly = 1, | |
| hdrs = ["syntax_tree_linter_test_utils.h"], | |
| deps = [ | |
| ":lint_rule_status", | |
| ":linter_test_utils", | |
| ":syntax_tree_lint_rule", | |
| ":syntax_tree_linter", | |
| "//common/text:text_structure", | |
| "//common/util:logging", | |
| "@com_google_absl//absl/strings", | |
| "@com_google_googletest//:gtest", # for library testonly | |
| ], | |
| ) | |
| cc_library( | |
| name = "syntax_tree_lint_rule", | |
| hdrs = ["syntax_tree_lint_rule.h"], | |
| deps = [ | |
| ":lint_rule", | |
| "//common/text:concrete_syntax_leaf", | |
| "//common/text:concrete_syntax_tree", | |
| "//common/text:symbol", | |
| "//common/text:syntax_tree_context", | |
| ], | |
| ) | |
| cc_library( | |
| name = "syntax_tree_search", | |
| srcs = ["syntax_tree_search.cc"], | |
| hdrs = ["syntax_tree_search.h"], | |
| deps = [ | |
| "//common/analysis/matcher", | |
| "//common/analysis/matcher:bound_symbol_manager", | |
| "//common/text:concrete_syntax_leaf", | |
| "//common/text:concrete_syntax_tree", | |
| "//common/text:symbol", | |
| "//common/text:syntax_tree_context", | |
| "//common/text:tree_context_visitor", | |
| ], | |
| ) | |
| cc_library( | |
| name = "text_structure_linter", | |
| srcs = ["text_structure_linter.cc"], | |
| hdrs = ["text_structure_linter.h"], | |
| deps = [ | |
| ":lint_rule_status", | |
| ":text_structure_lint_rule", | |
| "//common/text:text_structure", | |
| "//common/util:logging", | |
| "@com_google_absl//absl/strings", | |
| ], | |
| ) | |
| cc_library( | |
| name = "text_structure_linter_test_utils", | |
| testonly = 1, | |
| hdrs = ["text_structure_linter_test_utils.h"], | |
| deps = [ | |
| ":lint_rule_status", | |
| ":linter_test_utils", | |
| ":text_structure_linter", | |
| "//common/text:symbol", | |
| "//common/util:logging", | |
| "@com_google_absl//absl/status", | |
| "@com_google_googletest//:gtest", # for library testonly | |
| ], | |
| ) | |
| cc_library( | |
| name = "text_structure_lint_rule", | |
| hdrs = ["text_structure_lint_rule.h"], | |
| deps = [ | |
| ":lint_rule", | |
| "//common/text:text_structure", | |
| "@com_google_absl//absl/strings", | |
| ], | |
| ) | |
| cc_library( | |
| name = "token_stream_linter", | |
| srcs = ["token_stream_linter.cc"], | |
| hdrs = ["token_stream_linter.h"], | |
| deps = [ | |
| ":lint_rule_status", | |
| ":token_stream_lint_rule", | |
| "//common/text:token_stream_view", | |
| "//common/util:logging", | |
| ], | |
| ) | |
| cc_library( | |
| name = "token_stream_linter_test_utils", | |
| testonly = 1, | |
| hdrs = ["token_stream_linter_test_utils.h"], | |
| deps = [ | |
| ":lint_rule_status", | |
| ":linter_test_utils", | |
| ":token_stream_lint_rule", | |
| ":token_stream_linter", | |
| "//common/text:text_structure", | |
| "//common/util:logging", | |
| "@com_google_absl//absl/strings", | |
| ], | |
| ) | |
| cc_library( | |
| name = "token_stream_lint_rule", | |
| hdrs = ["token_stream_lint_rule.h"], | |
| deps = [ | |
| ":lint_rule", | |
| "//common/text:token_info", | |
| ], | |
| ) | |
| cc_test( | |
| name = "lint_rule_status_test", | |
| srcs = ["lint_rule_status_test.cc"], | |
| deps = [ | |
| ":lint_rule_status", | |
| "//common/text:concrete_syntax_tree", | |
| "//common/text:token_info", | |
| "//common/text:tree_builder_test_util", | |
| "@com_google_absl//absl/strings", | |
| "@com_google_googletest//:gtest_main", | |
| ], | |
| ) | |
| cc_test( | |
| name = "lint_waiver_test", | |
| srcs = ["lint_waiver_test.cc"], | |
| deps = [ | |
| ":lint_waiver", | |
| "//common/strings:line_column_map", | |
| "//common/text:text_structure_test_utils", | |
| "//common/text:token_info", | |
| "//common/text:token_stream_view", | |
| "//common/util:iterator_range", | |
| "@com_google_googletest//:gtest_main", | |
| ], | |
| ) | |
| cc_test( | |
| name = "file_analyzer_test", | |
| srcs = ["file_analyzer_test.cc"], | |
| deps = [ | |
| ":file_analyzer", | |
| "//common/text:text_structure", | |
| "//common/text:token_info", | |
| "@com_google_absl//absl/status", | |
| "@com_google_absl//absl/strings", | |
| "@com_google_googletest//:gtest_main", | |
| ], | |
| ) | |
| cc_test( | |
| name = "linter_test_utils_test", | |
| srcs = ["linter_test_utils_test.cc"], | |
| deps = [ | |
| ":lint_rule_status", | |
| ":linter_test_utils", | |
| "//common/util:range", | |
| "@com_google_absl//absl/strings", | |
| "@com_google_googletest//:gtest_main", | |
| ], | |
| ) | |
| cc_test( | |
| name = "line_linter_test", | |
| srcs = ["line_linter_test.cc"], | |
| deps = [ | |
| ":line_lint_rule", | |
| ":line_linter", | |
| ":lint_rule_status", | |
| "//common/text:token_info", | |
| "@com_google_absl//absl/strings", | |
| "@com_google_googletest//:gtest_main", | |
| ], | |
| ) | |
| cc_test( | |
| name = "syntax_tree_linter_test", | |
| srcs = ["syntax_tree_linter_test.cc"], | |
| deps = [ | |
| ":lint_rule_status", | |
| ":syntax_tree_lint_rule", | |
| ":syntax_tree_linter", | |
| "//common/text:concrete_syntax_leaf", | |
| "//common/text:concrete_syntax_tree", | |
| "//common/text:symbol", | |
| "//common/text:syntax_tree_context", | |
| "//common/text:token_info", | |
| "//common/text:tree_builder_test_util", | |
| "@com_google_googletest//:gtest_main", | |
| ], | |
| ) | |
| cc_test( | |
| name = "syntax_tree_search_test", | |
| srcs = ["syntax_tree_search_test.cc"], | |
| deps = [ | |
| ":syntax_tree_search", | |
| "//common/analysis/matcher", | |
| "//common/analysis/matcher:matcher_builders", | |
| "//common/text:symbol", | |
| "//common/text:syntax_tree_context", | |
| "//common/text:tree_builder_test_util", | |
| "//common/text:tree_utils", | |
| "@com_google_googletest//:gtest_main", | |
| ], | |
| ) | |
| cc_test( | |
| name = "syntax_tree_search_test_utils_test", | |
| srcs = ["syntax_tree_search_test_utils_test.cc"], | |
| deps = [ | |
| ":syntax_tree_search_test_utils", | |
| "//common/text:tree_builder_test_util", | |
| "//common/util:range", | |
| "@com_google_absl//absl/strings", | |
| "@com_google_googletest//:gtest_main", | |
| ], | |
| ) | |
| cc_test( | |
| name = "text_structure_linter_test", | |
| srcs = ["text_structure_linter_test.cc"], | |
| deps = [ | |
| ":lint_rule_status", | |
| ":text_structure_lint_rule", | |
| ":text_structure_linter", | |
| "//common/text:text_structure", | |
| "//common/text:token_info", | |
| "@com_google_absl//absl/strings", | |
| "@com_google_googletest//:gtest_main", | |
| ], | |
| ) | |
| cc_test( | |
| name = "token_stream_linter_test", | |
| srcs = ["token_stream_linter_test.cc"], | |
| deps = [ | |
| ":lint_rule_status", | |
| ":token_stream_lint_rule", | |
| ":token_stream_linter", | |
| "//common/text:token_info", | |
| "//common/text:token_stream_view", | |
| "@com_google_absl//absl/strings", | |
| "@com_google_googletest//:gtest_main", | |
| ], | |
| ) |