adlint 1.8.2 → 1.8.10
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +192 -0
- data/MANIFEST +1 -0
- data/NEWS +40 -4
- data/etc/mesg.d/en_US/messages.yml +1 -1
- data/etc/mesg.d/ja_JP/messages.yml +1 -1
- data/lib/adlint/c/code.rb +88 -124
- data/lib/adlint/c/conv.rb +4 -4
- data/lib/adlint/c/ctrlexpr.rb +8 -2
- data/lib/adlint/c/domain.rb +405 -5
- data/lib/adlint/c/format.rb +6 -6
- data/lib/adlint/c/message.rb +227 -350
- data/lib/adlint/c/message_shima.rb +1 -2
- data/lib/adlint/c/object.rb +1 -1
- data/lib/adlint/c/type.rb +43 -1
- data/lib/adlint/cpp/util.rb +29 -0
- data/lib/adlint/version.rb +2 -2
- data/share/demo/Makefile +1 -0
- data/share/demo/integer_promotion/integer_promotion.c +17 -0
- data/share/doc/developers_guide_ja.html +3 -3
- data/share/doc/developers_guide_ja.texi +1 -1
- data/share/doc/users_guide_en.html +3 -3
- data/share/doc/users_guide_en.texi +1 -1
- data/share/doc/users_guide_ja.html +3 -3
- data/share/doc/users_guide_ja.texi +1 -1
- metadata +3 -2
@@ -386,8 +386,7 @@ module C #:nodoc:
|
|
386
386
|
|
387
387
|
def check_filelocal_object_name(name, decl_or_def)
|
388
388
|
if @function_def_level == 0
|
389
|
-
|
390
|
-
if storage_class_specifier && storage_class_specifier.type == :STATIC
|
389
|
+
if scs = decl_or_def.storage_class_specifier and scs.type == :STATIC
|
391
390
|
W(:W0809, decl_or_def.location, name)
|
392
391
|
end
|
393
392
|
end
|
data/lib/adlint/c/object.rb
CHANGED
data/lib/adlint/c/type.rb
CHANGED
@@ -212,6 +212,10 @@ module C #:nodoc:
|
|
212
212
|
self.real_type.unqualify == type.real_type.unqualify
|
213
213
|
end
|
214
214
|
|
215
|
+
def parameter?
|
216
|
+
false
|
217
|
+
end
|
218
|
+
|
215
219
|
def scalar?
|
216
220
|
subclass_responsibility
|
217
221
|
end
|
@@ -2019,7 +2023,7 @@ module C #:nodoc:
|
|
2019
2023
|
end
|
2020
2024
|
|
2021
2025
|
def same_as?(type)
|
2022
|
-
|
2026
|
+
type.void?
|
2023
2027
|
end
|
2024
2028
|
|
2025
2029
|
def scalar?
|
@@ -5334,6 +5338,21 @@ module C #:nodoc:
|
|
5334
5338
|
false
|
5335
5339
|
end
|
5336
5340
|
|
5341
|
+
def same_as?(type)
|
5342
|
+
lhs_unqualified = self.real_type.unqualify
|
5343
|
+
rhs_unqualified = type.real_type.unqualify
|
5344
|
+
|
5345
|
+
if rhs_unqualified.pointer?
|
5346
|
+
if lhs_unqualified.base_type.void?
|
5347
|
+
true
|
5348
|
+
else
|
5349
|
+
lhs_unqualified.base_type.same_as?(rhs_unqualified.base_type)
|
5350
|
+
end
|
5351
|
+
else
|
5352
|
+
false
|
5353
|
+
end
|
5354
|
+
end
|
5355
|
+
|
5337
5356
|
def pointer?
|
5338
5357
|
true
|
5339
5358
|
end
|
@@ -5526,6 +5545,24 @@ module C #:nodoc:
|
|
5526
5545
|
type.array? && @base_type.coercible?(type.base_type)
|
5527
5546
|
end
|
5528
5547
|
|
5548
|
+
def same_as?(type)
|
5549
|
+
lhs_unqualified = self.real_type.unqualify
|
5550
|
+
rhs_unqualified = type.real_type.unqualify
|
5551
|
+
|
5552
|
+
case
|
5553
|
+
when rhs_unqualified.array?
|
5554
|
+
if lhs_unqualified.length
|
5555
|
+
lhs_unqualified.length == rhs_unqualified.length
|
5556
|
+
else
|
5557
|
+
lhs_unqualified.base_type.same_as?(rhs_unqualified.base_type)
|
5558
|
+
end
|
5559
|
+
when rhs_unqualified.pointer?
|
5560
|
+
lhs_unqualified.base_type.same_as?(rhs_unqualified.base_type)
|
5561
|
+
else
|
5562
|
+
false
|
5563
|
+
end
|
5564
|
+
end
|
5565
|
+
|
5529
5566
|
def scalar?
|
5530
5567
|
false
|
5531
5568
|
end
|
@@ -6834,6 +6871,11 @@ module C #:nodoc:
|
|
6834
6871
|
def_delegator :@type, :incomplete?
|
6835
6872
|
def_delegator :@type, :compatible?
|
6836
6873
|
def_delegator :@type, :coercible?
|
6874
|
+
|
6875
|
+
def parameter?
|
6876
|
+
true
|
6877
|
+
end
|
6878
|
+
|
6837
6879
|
def_delegator :@type, :scalar?
|
6838
6880
|
def_delegator :@type, :integer?
|
6839
6881
|
def_delegator :@type, :floating?
|
data/lib/adlint/cpp/util.rb
CHANGED
@@ -79,6 +79,35 @@ module Cpp #:nodoc:
|
|
79
79
|
string.chars.to_a - select_adapted(string)
|
80
80
|
end
|
81
81
|
|
82
|
+
# NOTE: The ISO C99 standard saids;
|
83
|
+
#
|
84
|
+
# 5.2 Environmental considerations
|
85
|
+
# 5.2.1 Character sets
|
86
|
+
#
|
87
|
+
# 1 Two sets of characters and their associated collating sequences shall
|
88
|
+
# be defined: the set in which source files are written (the source
|
89
|
+
# character set), and the set interpreted in the execution environment
|
90
|
+
# (the execution character set). Each set is further divided into a basic
|
91
|
+
# character set, whose contents are given by this subclause, and a set of
|
92
|
+
# zero or more locale-specific members (which are not members of the
|
93
|
+
# basic character set) called extended characters. The combined set is
|
94
|
+
# also called the extended character set. The values of the members of
|
95
|
+
# the execution character set are implementation-defined.
|
96
|
+
#
|
97
|
+
# 3 Both the basic source and basic execution character sets shall have the
|
98
|
+
# following members: the 26 uppercase letters of the Latin alphabet
|
99
|
+
# A B C D E F G H I J K L M
|
100
|
+
# N O P Q R S T U V W X Y Z
|
101
|
+
# the 26 lowercase letters of the Latin alphabet
|
102
|
+
# a b c d e f g h i j k l m
|
103
|
+
# n o p q r s t u v w x y z
|
104
|
+
# the 10 decimal digits
|
105
|
+
# 0 1 2 3 4 5 6 7 8 9
|
106
|
+
# the following 29 graphic characters
|
107
|
+
# ! " # % & ' ( ) * + , - . / :
|
108
|
+
# ; < = > ? [ \ ] ^ _ { | } ~
|
109
|
+
# the space character, and control characters representing horizontal
|
110
|
+
# tab, vertical tab, and form feed.
|
82
111
|
CHARS = [
|
83
112
|
" ", "\t", "\v", "\f", "\n",
|
84
113
|
"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m",
|
data/lib/adlint/version.rb
CHANGED
data/share/demo/Makefile
CHANGED
@@ -0,0 +1,17 @@
|
|
1
|
+
/* ADLINT:TUNIT:[-W0118,-W0414,-W0425,-W0947,-W0948] */
|
2
|
+
|
3
|
+
#define EOF (-1)
|
4
|
+
|
5
|
+
extern int getchar(void);
|
6
|
+
extern int printf(const char *, ...);
|
7
|
+
|
8
|
+
int main(void)
|
9
|
+
{
|
10
|
+
unsigned char c; /* ADLINT::[-W0100] */
|
11
|
+
|
12
|
+
while ((c = getchar()) != EOF) {
|
13
|
+
if ((int) c != '\n') printf("%d\n", (int) c);
|
14
|
+
}
|
15
|
+
|
16
|
+
return 0;
|
17
|
+
}
|
@@ -1,8 +1,8 @@
|
|
1
1
|
<html lang="ja">
|
2
2
|
<head>
|
3
|
-
<title>AdLint 1.8.
|
3
|
+
<title>AdLint 1.8.10 開発者ガイド</title>
|
4
4
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
5
|
-
<meta name="description" content="AdLint 1.8.
|
5
|
+
<meta name="description" content="AdLint 1.8.10 開発者ガイド">
|
6
6
|
<meta name="generator" content="makeinfo 4.13">
|
7
7
|
<link title="Top" rel="top" href="#Top">
|
8
8
|
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
@@ -44,7 +44,7 @@ td { border: 1px solid black; }
|
|
44
44
|
--></style>
|
45
45
|
</head>
|
46
46
|
<body>
|
47
|
-
<h1 class="settitle">AdLint 1.8.
|
47
|
+
<h1 class="settitle">AdLint 1.8.10 開発者ガイド</h1>
|
48
48
|
<div class="contents">
|
49
49
|
<h2>Table of Contents</h2>
|
50
50
|
<ul>
|
@@ -1,8 +1,8 @@
|
|
1
1
|
<html lang="en">
|
2
2
|
<head>
|
3
|
-
<title>AdLint 1.8.
|
3
|
+
<title>AdLint 1.8.10 User's Guide</title>
|
4
4
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
5
|
-
<meta name="description" content="AdLint 1.8.
|
5
|
+
<meta name="description" content="AdLint 1.8.10 User's Guide">
|
6
6
|
<meta name="generator" content="makeinfo 4.13">
|
7
7
|
<link title="Top" rel="top" href="#Top">
|
8
8
|
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
@@ -44,7 +44,7 @@ td { border: 1px solid black; }
|
|
44
44
|
--></style>
|
45
45
|
</head>
|
46
46
|
<body>
|
47
|
-
<h1 class="settitle">AdLint 1.8.
|
47
|
+
<h1 class="settitle">AdLint 1.8.10 User's Guide</h1>
|
48
48
|
<div class="node">
|
49
49
|
<a name="Top"></a>
|
50
50
|
<p><hr>
|
@@ -1,8 +1,8 @@
|
|
1
1
|
<html lang="ja">
|
2
2
|
<head>
|
3
|
-
<title>AdLint 1.8.
|
3
|
+
<title>AdLint 1.8.10 利用者ガイド</title>
|
4
4
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
5
|
-
<meta name="description" content="AdLint 1.8.
|
5
|
+
<meta name="description" content="AdLint 1.8.10 利用者ガイド">
|
6
6
|
<meta name="generator" content="makeinfo 4.13">
|
7
7
|
<link title="Top" rel="top" href="#Top">
|
8
8
|
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
@@ -44,7 +44,7 @@ td { border: 1px solid black; }
|
|
44
44
|
--></style>
|
45
45
|
</head>
|
46
46
|
<body>
|
47
|
-
<h1 class="settitle">AdLint 1.8.
|
47
|
+
<h1 class="settitle">AdLint 1.8.10 利用者ガイド</h1>
|
48
48
|
<div class="node">
|
49
49
|
<a name="Top"></a>
|
50
50
|
<p><hr>
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: adlint
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.8.
|
4
|
+
version: 1.8.10
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-05-
|
12
|
+
date: 2012-05-18 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: ! 'AdLint is a source code static analyzer.
|
15
15
|
|
@@ -181,6 +181,7 @@ files:
|
|
181
181
|
- share/demo/indirect_recur/indirect_recur_3.h
|
182
182
|
- share/demo/indirect_recur/indirect_recur_4.c
|
183
183
|
- share/demo/inline_asm/inline_asm.c
|
184
|
+
- share/demo/integer_promotion/integer_promotion.c
|
184
185
|
- share/demo/intro_demo/intro_demo.c
|
185
186
|
- share/demo/intro_demo/intro_demo.h
|
186
187
|
- share/demo/intro_demo/useless_header.h
|