blob: 91a8c1ab67e87b8e61c3828ccb73d4cced4dfe1b [file] [log] [blame] [edit]
# 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",
hdrs = ["descriptions.h"],
deps = ["@com_google_absl//absl/strings"],
alwayslink = 1,
)
cc_library(
name = "extractors",
srcs = ["extractors.cc"],
hdrs = ["extractors.h"],
deps = [
":verilog_analyzer",
"//verilog/CST:identifier",
"//verilog/CST:module",
"//verilog/preprocessor:verilog_preprocess",
"@com_google_absl//absl/status",
"@com_google_absl//absl/strings",
],
)
cc_test(
name = "extractors_test",
srcs = ["extractors_test.cc"],
deps = [
":extractors",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "json_diagnostics",
srcs = ["json_diagnostics.cc"],
hdrs = ["json_diagnostics.h"],
deps = [
":verilog_analyzer",
"//common/analysis:file_analyzer",
"//common/strings:line_column_map",
"@com_google_absl//absl/strings",
"@jsonhpp",
],
)
cc_library(
name = "flow_tree",
srcs = ["flow_tree.cc"],
hdrs = ["flow_tree.h"],
deps = [
"//common/text:token_stream_view",
"//verilog/parser:verilog_token_enum",
"@com_google_absl//absl/status",
"@com_google_absl//absl/strings",
],
)
cc_test(
name = "flow_tree_test",
srcs = ["flow_tree_test.cc"],
deps = [
":flow_tree",
"//verilog/parser:verilog_lexer",
"//verilog/parser:verilog_token_enum",
"@com_google_absl//absl/status",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest_main",
],
)
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 = "json_diagnostics_test",
srcs = ["json_diagnostics_test.cc"],
deps = [
":json_diagnostics",
":verilog_analyzer",
"//common/util:logging",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest_main",
"@jsonhpp",
],
)
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/strings:mem_block",
"//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/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/status:statusor",
"@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/analysis:violation_handler",
"//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/status:statusor",
"@com_google_absl//absl/strings",
],
)
cc_test(
name = "verilog_analyzer_test",
srcs = ["verilog_analyzer_test.cc"],
deps = [
":verilog_analyzer",
"//common/analysis:file_analyzer",
"//common/strings:display_utils",
"//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/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/analysis:violation_handler",
"//common/util:file_util",
"//common/util:logging",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@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",
],
)
cc_library(
name = "verilog_filelist",
srcs = ["verilog_filelist.cc"],
hdrs = ["verilog_filelist.h"],
deps = [
"//common/util:file_util",
"//common/util:iterator_range",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings",
],
)
cc_test(
name = "verilog_filelist_test",
srcs = ["verilog_filelist_test.cc"],
deps = [
":verilog_filelist",
"//common/util:file_util",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "verilog_project",
srcs = ["verilog_project.cc"],
hdrs = ["verilog_project.h"],
deps = [
":verilog_analyzer",
":verilog_filelist",
"//common/strings:mem_block",
"//common/strings:string_memory_map",
"//common/text:text_structure",
"//common/util:file_util",
"//common/util:logging",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/time",
"@com_google_absl//absl/types:optional",
],
)
cc_test(
name = "verilog_project_test",
srcs = ["verilog_project_test.cc"],
deps = [
":verilog_project",
"//common/text:text_structure",
"//common/util:file_util",
"//common/util:logging",
"//common/util:range",
"//verilog/CST:module",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "symbol_table",
srcs = ["symbol_table.cc"],
hdrs = ["symbol_table.h"],
deps = [
":verilog_project",
"//common/strings:compare",
"//common/strings:display_utils",
"//common/text:concrete_syntax_leaf",
"//common/text:concrete_syntax_tree",
"//common/text:symbol",
"//common/text:token_info",
"//common/text:tree_context_visitor",
"//common/text:tree_utils",
"//common/text:visitors",
"//common/util:enum_flags",
"//common/util:logging",
"//common/util:map_tree",
"//common/util:spacer",
"//common/util:tree_operations",
"//common/util:value_saver",
"//common/util:vector_tree",
"//verilog/CST:class",
"//verilog/CST:declaration",
"//verilog/CST:functions",
"//verilog/CST:macro",
"//verilog/CST:module",
"//verilog/CST:net",
"//verilog/CST:package",
"//verilog/CST:parameters",
"//verilog/CST:port",
"//verilog/CST:seq_block",
"//verilog/CST:statement",
"//verilog/CST:tasks",
"//verilog/CST:type",
"//verilog/CST:verilog_nonterminals",
"//verilog/parser:verilog_parser",
"//verilog/parser:verilog_token_enum",
"@com_google_absl//absl/status",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/strings:str_format",
],
)
cc_test(
name = "symbol_table_test",
srcs = ["symbol_table_test.cc"],
deps = [
":symbol_table",
":verilog_project",
"//common/text:symbol",
"//common/text:tree_utils",
"//common/util:file_util",
"//common/util:logging",
"//common/util:range",
"//common/util:tree_operations",
"@com_google_absl//absl/base:core_headers",
"@com_google_absl//absl/status",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "dependencies",
srcs = ["dependencies.cc"],
hdrs = ["dependencies.h"],
deps = [
":symbol_table",
":verilog_project",
"//common/strings:compare",
"//common/strings:display_utils",
"//common/util:logging",
"@com_google_absl//absl/strings",
],
)
cc_test(
name = "dependencies_test",
srcs = ["dependencies_test.cc"],
deps = [
":dependencies",
"//common/util:file_util",
"@com_google_absl//absl/status",
"@com_google_googletest//:gtest_main",
],
)