summaryrefslogtreecommitdiff
path: root/tests/old/testsuite/gst-lint
diff options
context:
space:
mode:
Diffstat (limited to 'tests/old/testsuite/gst-lint')
-rwxr-xr-xtests/old/testsuite/gst-lint571
1 files changed, 0 insertions, 571 deletions
diff --git a/tests/old/testsuite/gst-lint b/tests/old/testsuite/gst-lint
deleted file mode 100755
index a924f052..00000000
--- a/tests/old/testsuite/gst-lint
+++ /dev/null
@@ -1,571 +0,0 @@
-#!/usr/bin/perl -w
-# vi: set ts=4:
-#
-
-#
-# GStreamer developers: please add comments on any tests you think
-# are dumb or have too many false positives.
-#
-
-#
-# Future ideas:
-# - spell check comments
-# - check each function for at least one assertion (?)
-# - check parameters that init/set/get have consistent types
-# - check for gst_caps_set() without check for writeability
-# - check .so files for stray symbols
-#
-
-#
-# Random "other" testing ideas
-# - load each plugin individually
-#
-
-sub check_copyright();
-sub check_license();
-sub check_buffer_alloc();
-sub check_bad_includes();
-sub check_begin_decls();
-sub check_c99_comments();
-sub check_carriage_returns();
-sub check_printf_lld();
-sub check_glibisms();
-sub check_indentation();
-sub check_no_ignore();
-sub check_deprecated();
-sub check_config_h();
-sub check_varargs_functions();
-sub check_debugging();
-sub check_old_typefind();
-sub check_bad_casts();
-sub check_old_plugin();
-sub check_signal_new();
-sub check_gnuc_const();
-sub check_caps();
-sub check_lib_deprecated();
-sub check_typo();
-sub check_explicit_caps();
-sub check_signals();
-sub check_gettext();
-sub check_padtemplate();
-sub check_parent_class();
-
-sub m_check_plugindir();
-sub m_check_interfaces();
-
-open FIND, "find . -name \"*.[ch]\" -print|";
-
-foreach $filename (<FIND>) {
- chomp $filename;
- open FILE, "$filename";
- @lines = <FILE>;
- close FILE;
-
- print "I: $filename\n";
-
- # important stuff
- check_bad_includes();
- check_printf_lld();
- check_no_ignore();
- check_deprecated();
- check_config_h();
- check_old_typefind();
- check_old_plugin();
- check_caps();
- check_lib_deprecated();
- check_typo();
- check_glibisms();
- check_explicit_caps();
- check_signals();
- check_gettext();
- check_padtemplate();
- check_parent_class();
-
- # less important stuff
- check_license();
-
-if (0) {
- check_copyright();
-
- check_gnuc_const();
- check_begin_decls();
- check_buffer_alloc();
- check_c99_comments();
- check_carriage_returns();
- #check_indentation();
- check_varargs_functions();
- check_debugging();
- check_bad_casts();
- check_signal_new();
-}
-}
-
-open FIND, "find . -name \"Makefile.am\" -print|";
-
-foreach $filename (<FIND>) {
- chomp $filename;
- open FILE, "$filename";
- @lines = <FILE>;
- close FILE;
-
- print "I: $filename\n";
-
- m_check_plugindir();
- m_check_interfaces();
-}
-
-#
-# Every source file must have a copyright block
-#
-sub check_copyright()
-{
- if (! grep { /copyright/i; } @lines) {
- print "E: no copyright block\n";
- }
-}
-
-#
-# Every source file should have a license statement
-#
-sub check_license()
-{
- if (grep { /Lesser General Public License/; } @lines) {
- print "I: license is LGPL\n";
- } elsif (grep { /Library General Public License/; } @lines) {
- print "I: license is LGPL\n";
- print "W: copyright header uses \"Library\" LGPL\n";
- } elsif (grep { /General Public License/; } @lines) {
- print "I: license is GPL\n";
- } else {
- print "E: unknown license or no copyright block\n";
- }
-}
-
-#
-# Suggest usage of gst_buffer_new_and_alloc()
-#
-sub check_buffer_alloc()
-{
- my $n = 0;
- my $lineno = 1;
-
- foreach $line (@lines){
- if($line =~ /gst_buffer_new/){
- $n=5;
- }
- if($n>0 && $line =~ /malloc/){
- print "W: ($lineno) gst_buffer_new() followed by malloc(), suggest gst_buffer_new_and_alloc()\n";
- return;
- }
- $n--;
- $lineno++;
- }
-}
-
-sub check_bad_includes()
-{
- #
- # malloc.h is non-standard (and probably not what is indended)
- #
- if (grep { /^#include\s+<malloc.h>/; } @lines) {
- print "E: bad header: malloc.h\n"
- }
-}
-
-sub check_begin_decls()
-{
- #
- # Prefer "G_BEGIN_DECLS" to 'extern "C" {'
- #
- if($filename =~ /\.h$/){
- if (grep { /extern\s*\"C\"\s*/; } @lines) {
- print "W: extern \"C\" { should be changed to G_BEGIN_DECLS,G_END_DECLS\n";
- }elsif (!grep { /G_BEGIN_DECLS/; } @lines) {
- print "E: header doesn't use G_BEGIN_DECLS\n";
- }
- }
-}
-
-#
-# Prefer c89-style comments
-#
-sub check_c99_comments()
-{
- if (grep { /\/\//; } @lines) {
- print "W: //-style comments should be converted to /* */\n"
- }
-}
-
-#
-# DOS end-of-line characters are just wrong
-#
-sub check_carriage_returns()
-{
- if (grep { /\r/; } @lines) {
- print "E: source has carriage returns (DOS-style files)\n"
- }
-}
-
-#
-# Many uses of %lld are wrong. This could have a lot of false-positives
-#
-sub check_printf_lld()
-{
- if (grep { /\".*\%\d*ll[du].*\"/; } @lines) {
- print "W: Possible \%lld or \%llu in printf format\n"
- }
-}
-
-#
-# Glib functions are preferred
-#
-sub check_glibisms()
-{
- if (grep { /\bcalloc\s*\(/; } @lines) {
- print "E: use g_malloc0() instead of calloc()\n"
- }
- if (grep { /\bfree\s*\(/; } @lines) {
- print "E: use g_free() instead of free()\n"
- }
- if (grep { /\bmalloc\s*\(/; } @lines) {
- print "E: use g_malloc() instead of malloc()\n"
- }
- if (grep { /\bprintf\s*\(/; } @lines) {
- print "E: use g_print() instead of printf()\n"
- }
- if (grep { /\brealloc\s*\(/; } @lines) {
- print "E: use g_realloc() instead of realloc()\n"
- }
- if (grep { /^#include\s+<ctype.h>/; } @lines) {
- print "E: ctype.h functions are not locale-independent and don't work in UTF-8 locales. Use g_ascii_is*()\n"
- }
-}
-
-#
-# I don't think that indentation necessarily needs to be fixed, since
-# it causes problems with patching and cvs annotate.
-#
-# This takes forever and isn't very useful
-#
-sub check_indentation()
-{
- my $changed_lines;
- my $percent;
-
- `indent -br -bad -cbi0 -cli2 -bls -l80 -ut -ce $filename -o .check_plugin.tmp`;
- $changed_lines = `diff $filename .check_plugin.tmp | grep '^>' | wc -l`;
- `rm -f .check_plugin.tmp`;
-
- $percent = int(100 * $changed_lines / $#lines);
-
- if($percent < 10){
- print "I: indent changed $percent % of the lines\n";
- }elsif($percent <20){
- print "W: indent changed $percent % of the lines\n";
- }else{
- print "E: indent changed $percent % of the lines\n";
- }
-}
-
-
-#
-# Check (roughly) for functions whose value should not be ignored
-#
-sub check_no_ignore()
-{
- if (grep { /^\s+gst_buffer_merge\s*\(/; } @lines) {
- print "E: return value of gst_buffer_merge () possibly ignored\n";
- }
- if (grep { /^\s+malloc\s*\(/; } @lines) {
- print "E: return value of malloc() possibly ignored\n";
- }
- if (grep { /^\s+gst_buffer_new\s*\(/; } @lines) {
- print "E: return value of gst_buffer_new() possibly ignored\n";
- }
-}
-
-#
-# Check for some deprecated stuff (that _shouldn't_ be around anymore)
-#
-sub check_deprecated()
-{
- #
- # Check for old GST_DEBUG() usage
- # (none found)
- #
- if (grep { /GST_DEBUG\s*\(\s+\d/; } @lines) {
- print "E: old-style GST_DEBUG()\n";
- }
- if (grep { /GST_INFO\s*\(\s+\d/; } @lines) {
- print "E: old-style GST_DEBUG()\n";
- }
- if (grep { /GstEventFlags/; } @lines) {
- print "W: who uses GstEventFlags\n";
- }
- if (grep { /g_type_class_ref/ } @lines) {
- print "W: g_type_class_ref should be changed to g_type_class_peek_parent\n";
- }
-
-}
-
-#
-# Every .c file should include config.h before any other headers
-# No .h file should include config.h
-#
-sub check_config_h()
-{
- if($filename =~ /\.c$/){
- #
- # config.h should be wrapped
- #
- my @includes = grep { /^#include/; } @lines;
-
- if (!grep { /^#include\s+["<]config.h[">]/; } @includes) {
- print "E: #include <config.h> missing\n";
- }else{
- if (!($includes[0] =~ /^#include\s+["<]config.h[">]/)){
- print "E: #include <config.h> is not first include\n";
- }
- if(!grep { /^#ifdef HAVE_CONFIG_H/; } @lines) {
- print "E: #include <config.h> not surrounded by #ifdef HAVE_CONFIG_H\n";
- }
- }
- }
-
- if($filename =~ /\.h$/){
- if (grep { /^#include\s+["<]config.h[">]/; } @lines) {
- print "E: headers should not #include <config.h>\n";
- }
- }
-
-}
-
-#
-# Check for functions that take varargs to make sure they are
-# named correctly
-#
-sub check_varargs_functions()
-{
- if($filename =~ /\.h$/){
- if (grep { /varargs/; } @lines) {
- print "I: has varargs\n";
- }
- }
-}
-
-#
-# Debugging checks
-#
-sub check_debugging()
-{
- if (grep { /\Wg_print\W/ || /\Wprintf\W/ && /\Wfprintf\W/; } @lines) {
- print "W: friendly libraries don't print to stdio or stderr\n";
- }
-
- if (grep { /GST_DEBUG.*\\n"/; } @lines) {
- print "W: possible newline in GST_DEBUG()\n";
- }
-
-}
-
-#
-# check for plugindir=
-#
-sub m_check_plugindir()
-{
- if (grep { /plugindir\s*=/; } @lines) {
- print "E: plugindir= is no longer necessary\n";
- }
-}
-
-#
-# check for old typefinding code
-#
-sub check_old_typefind()
-{
- if (grep { /GstTypeDefinition/ || /GstTypeFactory/ } @lines) {
- print "E: old typefind interface has been removed\n";
- }
-}
-
-#
-# check for casts that we've deemed incorrect (fix the prototype)
-#
-sub check_bad_casts()
-{
- if (grep { /GBaseInitFunc/ || /GBaseFinalizeFunc/ ||
- /GClassInitFunc/ || /GClassFinalizeFunc/ ||
- /GInstanceInitFunc/ || /GInterfaceInitFunc/ ||
- /GInterfaceFinalizeFunc/ } @lines) {
- print "W: bad casts (fix prototype)\n";
- }
- if (grep { /\(\s*Gst[A-Z][A-Za-z]*\s*\*\s*\)/ } @lines ) {
- print "W: use GST_XXX() instead of (GstXxx *)\n";
- }
-
-}
-
-#
-# check for old plugin code
-#
-sub check_old_plugin()
-{
- if (grep { /plugin_init.*GModule.*GstPlugin/ } @lines) {
- print "E: old plugin interface detected\n";
- }
- if (grep { /GstPluginDesc.*plugin_desc/ } @lines) {
- print "W: should use GST_PLUGIN_DEFINE() instead of GstPluginDesc\n";
- }
-}
-
-#
-# Check for calls to g_signal_new() with a callback type of G_TYPE_POINTER
-#
-sub check_signal_new()
-{
- my $n = 0;
- my $lineno = 1;
-
- foreach $line (@lines){
- if($line =~ /g_signal_new/){
- $n=5;
- }
- if($n>0 && $line =~ /G_TYPE_POINTER/){
- print "W: ($lineno) g_signal_new() with callback type of G_TYPE_POINTER. Register and use a boxed type instead.\n";
- return;
- }
- $n--;
- $lineno++;
- }
-}
-
-#
-# Check that libgstinterfaces is in LDADD
-#
-sub m_check_interfaces()
-{
- if (grep { /libgstinterfaces.la/ } @lines) {
- if (! grep { /libgstinterfaces_la/ } @lines) {
- if (! grep { /_LDADD.*libgstinterfaces.la/ } @lines) {
- print "E: libgstinterfaces.la not in LDADD\n";
- }
- }
- }
-}
-
-#
-# Check that get_type() functions return G_CONST_RETURN GType
-#
-sub check_gnuc_const()
-{
- my $n = 0;
- my $lineno = 1;
-
- foreach $line (@lines){
- if($line =~ /GType.*get_type.*/ &&
- !($line =~ /GType.*get_type.*G_GNUC_CONST/)) {
-
- print "E: get_type function does not have G_GNUC_CONST attribute\n";
- }
- }
-}
-
-#
-# Check caps usage
-#
-sub check_caps()
-{
- if (grep { /gst_pad_get_caps/ } @lines) {
- print "E: elements should not call gst_pad_get_caps(), use gst_pad_get_allowed_caps()\n";
- }
-}
-
-#
-# Check for use of deprecated functions
-#
-sub check_lib_deprecated()
-{
- if (grep { /bzero/ } @lines) {
- print "E: change bzero() to memset()\n";
- }
-}
-
-#
-# Check for typos
-#
-sub check_typo()
-{
- if (grep { /;\s*;\s*$/ } @lines) {
- print "W: typo? \";;\"\n";
- }
-}
-
-#
-# set_explicit_caps() should preceed pad_add()
-#
-sub check_explicit_caps()
-{
- my $n = 0;
- my $lineno = 1;
-
- foreach $line (@lines){
- if($line =~ /gst_element_add_pad/){
- $n=10;
- }
- if($n>0 && $line =~ /gst_pad_set_explicit_caps/){
- print "W: ($lineno) explicit caps should be set before adding pad\n";
- return;
- }
- $n--;
- $lineno++;
- }
-}
-
-#
-# Check for - in signal names
-#
-sub check_signals()
-{
- if (grep { /g_signal_new.*\".*-.*\"/; } @lines) {
- print "E: g_signal_new() with a signal name with a - in it (we prefer _)\n"
- }
-}
-
-#
-# Check for things that gettext gets wrong
-#
-sub check_gettext()
-{
- if (grep { /\b_\(.*G_GU?INT64_FORMAT/ ||
- /\b_\(.*GST_TIME_FORMAT/ ||
- /\b_\(.*GST_FOURCC_FORMAT/ } @lines) {
- print "E: gettext doesn't handle format strings that are defines\n"
- }
-}
-
-#
-# Check that pad templates are statically scoped
-#
-sub check_padtemplate()
-{
- foreach $line (@lines){
- if ($line =~ /GstStaticPadTemplate/ && !($line =~ /static/)) {
- print "W: pad template definitions should be static\n";
- return;
- }
- }
-}
-
-#
-# Check that parent_class is statically scoped
-#
-sub check_parent_class()
-{
- foreach $line (@lines){
- if ($line =~ /Gst.*\*\s*parent_class/ && !($line =~ /static/)) {
- print "E: parent_class definitions should be static\n";
- return;
- }
- }
-}
-