blob: c6b0d042aa031a6edce932c9e3ff9063f02cf2f5 [file] [log] [blame]
# This package contains functions and classes related to analysis of
# structural representations of Verilog/SystemVerilog source code.
licenses(["notice"])
default_visibility = [
"//verilog:__subpackages__",
]
package(
default_visibility = default_visibility,
)
cc_library(
name = "default_rules",
hdrs = ["default_rules.h"],
deps = [
"//verilog/analysis/checkers:verilog_lint_rules",
],
)
cc_test(
name = "default_rules_test",
srcs = ["default_rules_test.cc"],
deps = [
":default_rules",
":lint_rule_registry",
"//verilog/analysis/checkers:verilog_lint_rules",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "descriptions",
srcs = ["descriptions.cc"],
hdrs = ["descriptions.h"],
deps = ["@com_google_absl//absl/strings"],
alwayslink = 1,
)
cc_library(
name = "lint_rule_registry",
srcs = ["lint_rule_registry.cc"],
hdrs = ["lint_rule_registry.h"],
deps = [
":descriptions",
"//common/analysis:line_lint_rule",
"//common/analysis:syntax_tree_lint_rule",
"//common/analysis:text_structure_lint_rule",
"//common/analysis:token_stream_lint_rule",
"//common/strings:compare",
"//common/util:container_util",
"//common/util:logging",
"@com_google_absl//absl/container:node_hash_map",
"@com_google_absl//absl/strings",
],
)
cc_test(
name = "descriptions_test",
srcs = ["descriptions_test.cc"],
deps = [
":descriptions",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "lint_rule_registry_test",
srcs = ["lint_rule_registry_test.cc"],
deps = [
":descriptions",
":lint_rule_registry",
"//common/analysis:line_lint_rule",
"//common/analysis:lint_rule_status",
"//common/analysis:syntax_tree_lint_rule",
"//common/analysis:text_structure_lint_rule",
"//common/analysis:token_stream_lint_rule",
"//common/text:concrete_syntax_leaf",
"//common/text:concrete_syntax_tree",
"//common/text:syntax_tree_context",
"//common/text:text_structure",
"//common/text:token_info",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "verilog_analyzer",
srcs = [
"verilog_analyzer.cc",
"verilog_excerpt_parse.cc",
# paired together because of mutual recursion
],
hdrs = [
"verilog_analyzer.h",
"verilog_excerpt_parse.h",
],
deps = [
"//common/analysis:file_analyzer",
"//common/lexer:token_stream_adapter",
"//common/strings:comment_utils",
"//common/text:concrete_syntax_leaf",
"//common/text:concrete_syntax_tree",
"//common/text:symbol",
"//common/text:text_structure",
"//common/text:token_info",
"//common/text:token_stream_view",
"//common/text:visitors",
"//common/util:container_util",
"//common/util:logging",
"//common/util:status_macros",
"//verilog/parser:verilog_lexer",
"//verilog/parser:verilog_lexical_context",
"//verilog/parser:verilog_parser",
"//verilog/parser:verilog_token_classifications",
"//verilog/parser:verilog_token_enum",
"//verilog/preprocessor:verilog_preprocess",
"@com_google_absl//absl/memory",
"@com_google_absl//absl/status",
"@com_google_absl//absl/strings",
],
)
cc_library(
name = "verilog_equivalence",
srcs = ["verilog_equivalence.cc"],
hdrs = ["verilog_equivalence.h"],
deps = [
"//common/lexer:token_stream_adapter",
"//common/text:token_info",
"//common/text:token_stream_view",
"//common/util:enum_flags",
"//common/util:logging",
"//verilog/parser:verilog_lexer",
"//verilog/parser:verilog_parser",
"//verilog/parser:verilog_token_classifications",
"//verilog/parser:verilog_token_enum",
"@com_google_absl//absl/strings",
],
)
cc_library(
name = "verilog_linter_configuration",
srcs = ["verilog_linter_configuration.cc"],
hdrs = ["verilog_linter_configuration.h"],
deps = [
":default_rules",
":lint_rule_registry",
"//common/analysis:line_lint_rule",
"//common/analysis:syntax_tree_lint_rule",
"//common/analysis:text_structure_lint_rule",
"//common/analysis:token_stream_lint_rule",
"//common/util:container_util",
"//common/util:enum_flags",
"//common/util:file_util",
"//common/util:logging",
"@com_google_absl//absl/status",
"@com_google_absl//absl/strings",
],
)
cc_library(
name = "verilog_linter_constants",
hdrs = ["verilog_linter_constants.h"],
)
cc_library(
name = "verilog_linter",
srcs = ["verilog_linter.cc"],
hdrs = ["verilog_linter.h"],
deps = [
":default_rules",
":lint_rule_registry",
":verilog_analyzer",
":verilog_linter_configuration",
":verilog_linter_constants",
"//common/analysis:line_lint_rule",
"//common/analysis:line_linter",
"//common/analysis:lint_rule_status",
"//common/analysis:lint_waiver",
"//common/analysis:syntax_tree_lint_rule",
"//common/analysis:syntax_tree_linter",
"//common/analysis:text_structure_lint_rule",
"//common/analysis:text_structure_linter",
"//common/analysis:token_stream_lint_rule",
"//common/analysis:token_stream_linter",
"//common/strings:line_column_map",
"//common/text:concrete_syntax_tree",
"//common/text:text_structure",
"//common/text:token_info",
"//common/util:file_util",
"//common/util:logging",
"//verilog/parser:verilog_token_classifications",
"//verilog/parser:verilog_token_enum",
"@com_google_absl//absl/flags:flag",
"@com_google_absl//absl/status",
"@com_google_absl//absl/strings",
],
)
cc_test(
name = "verilog_analyzer_test",
srcs = ["verilog_analyzer_test.cc"],
deps = [
":verilog_analyzer",
"//common/analysis:file_analyzer",
"//common/text:concrete_syntax_leaf",
"//common/text:concrete_syntax_tree",
"//common/text:constants",
"//common/text:symbol",
"//common/text:text_structure",
"//common/text:token_info",
"//common/text:token_info_test_util",
"//common/text:token_stream_view",
"//common/text:tree_utils",
"//common/util:casts",
"//common/util:logging",
"//verilog/parser:verilog_parser",
"//verilog/parser:verilog_token_enum",
"@com_google_absl//absl/base",
"@com_google_absl//absl/memory",
"@com_google_absl//absl/status",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/types:span",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "verilog_linter_configuration_test",
srcs = ["verilog_linter_configuration_test.cc"],
deps = [
":default_rules",
":descriptions",
":lint_rule_registry",
":verilog_linter",
":verilog_linter_configuration",
"//common/analysis:line_lint_rule",
"//common/analysis:lint_rule_status",
"//common/analysis:syntax_tree_lint_rule",
"//common/analysis:text_structure_lint_rule",
"//common/analysis:token_stream_lint_rule",
"//common/strings:line_column_map",
"//common/text:concrete_syntax_leaf",
"//common/text:concrete_syntax_tree",
"//common/text:syntax_tree_context",
"//common/text:text_structure",
"//common/text:token_info",
"//common/text:tree_builder_test_util",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "verilog_linter_test",
srcs = ["verilog_linter_test.cc"],
deps = [
":default_rules",
":verilog_analyzer",
":verilog_linter",
":verilog_linter_configuration",
"//common/util:file_util",
"//common/util:logging",
"@com_google_absl//absl/memory",
"@com_google_absl//absl/status",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "verilog_equivalence_test",
srcs = ["verilog_equivalence_test.cc"],
deps = [
":verilog_equivalence",
"//common/text:token_info",
"//common/util:logging",
"@com_google_absl//absl/status",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/types:span",
"@com_google_googletest//:gtest_main",
],
)