(self, data)
| 1928 | self.reportError(scopename2.bodyStart, 5, 2) |
| 1929 | |
| 1930 | def misra_5_4(self, data): |
| 1931 | num_sign_chars = self.get_num_significant_naming_chars(data) |
| 1932 | macro = {} |
| 1933 | compile_name = re.compile(r'#define ([a-zA-Z0-9_]+)') |
| 1934 | compile_param = re.compile(r'#define ([a-zA-Z0-9_]+)[(]([a-zA-Z0-9_, ]+)[)]') |
| 1935 | short_names = {} |
| 1936 | macro_w_arg = [] |
| 1937 | for dir in data.directives: |
| 1938 | res1 = compile_name.match(dir.str) |
| 1939 | if res1: |
| 1940 | if dir not in macro: |
| 1941 | macro.setdefault(dir, {})["name"] = [] |
| 1942 | macro.setdefault(dir, {})["params"] = [] |
| 1943 | full_name = res1.group(1) |
| 1944 | macro[dir]["name"] = full_name |
| 1945 | short_name = full_name[:num_sign_chars] |
| 1946 | if short_name in short_names: |
| 1947 | _dir = short_names[short_name] |
| 1948 | if full_name != macro[_dir]["name"]: |
| 1949 | self.reportError(dir, 5, 4) |
| 1950 | else: |
| 1951 | short_names[short_name] = dir |
| 1952 | res2 = compile_param.match(dir.str) |
| 1953 | if res2: |
| 1954 | res_gp2 = res2.group(2).split(",") |
| 1955 | res_gp2 = [macroname.replace(" ", "") for macroname in res_gp2] |
| 1956 | macro[dir]["params"].extend(res_gp2) |
| 1957 | macro_w_arg.append(dir) |
| 1958 | for mvar in macro_w_arg: |
| 1959 | for i, macroparam1 in enumerate(macro[mvar]["params"]): |
| 1960 | for j, macroparam2 in enumerate(macro[mvar]["params"]): |
| 1961 | if j > i and macroparam1[:num_sign_chars] == macroparam2[:num_sign_chars]: |
| 1962 | self.reportError(mvar, 5, 4) |
| 1963 | param = macroparam1 |
| 1964 | if param[:num_sign_chars] in short_names: |
| 1965 | m_var1 = short_names[param[:num_sign_chars]] |
| 1966 | if m_var1.linenr > mvar.linenr: |
| 1967 | self.reportError(m_var1, 5, 4) |
| 1968 | else: |
| 1969 | self.reportError(mvar, 5, 4) |
| 1970 | |
| 1971 | def misra_5_5(self, data): |
| 1972 | num_sign_chars = self.get_num_significant_naming_chars(data) |
nothing calls this directly
no test coverage detected