Enter forum description here ...
0

C109 Unneeded boolean comparison

shahram_banazadeh 7 years ago 0

I have downloaded Trial Version of fixinsight.But there are too many false positive warnings.
for example

 if not( IdTelnet1.Connected ) then
  begin
    Timer1Lan.Enabled := false;
    Timerc.Enabled := True;
    exit;
  end;
or

   b := sepdate(logstr, 22, 8, log.month, log.Day, log.Year);
          if b = false then
          begin
            ok := false;
            exit;
          end;
         ....

both:C109 Unneeded boolean comparison

Or
O801 CONST missing for unmodified string parameter 'S' for function define
function SepTime(S: string; Var hour, minute: word): boolean;

am I do something wrong?
0

Warning for unneeded FixInsight ignores

Tommi Prami 8 years ago 0

IF some //FI:CODE will become obsolete by the changes into the file, there shoudl be warnign that there is Ignore rule added, but it is not needed anymore.

0
Planned

Better handling of invalid .ficfg files

Lübbe Onken 9 years ago updated by Roman 9 years ago 1

Today I upgraded our test system to FI 2016.9. When I copied settings from DefaultSettings.ficfg into our config, I accidentally added two closing xml tags.


This invalid ficfg file caused a crash of FixInsight with an access violation in FixInsight.Services.dll. It was easy enough to solve, but a proper error message like "the configuration file '%s' is not a valid xml file" would be helpful.


0
Fixed

Fatal parser error

Kai Frentzel 9 years ago updated by Roman 9 years ago 3

With the current code, i got a fatal parser error:

unit Artikelmanager.OrmKonstanten;
interface
type
  TOrmFeldInfo = record
    Name: string;
    Laenge: Integer;
  end;
  KORMInfoDruckvorlage = class(TObject)
  public const
    Name: TOrmFeldInfo = (Name: string; Laenge: Integer);
  end;
  implementation
end.

0

Occurred O801 warning at the method of property getter.

JungHwan Jang 9 years ago updated 9 years ago 0

Hello This is JH Jang from Korea.

Thank you for great tools.


Actually, I wasn't care it before using the FixInsight. I work with Windows 10 and Berlin 10.1.


If the property has a index(e.g. property foo[Index: Integer]: String read GetFoo, property bar[Idx: Integer]: Integer index 1 read GetBar ...), the get method's parameter cannot declared with const type in a every case.


I hope to filtering it.

Best regard.

0
Fixed

[W504] not detected when class is declared in the implementation part

Lübbe Onken 9 years ago updated by Roman 9 years ago 2

There's a bug with the W504 detection in FixInsight 2016.04, when the class is declared in the implementation part of a unit.

In the following code, there should be a W504 and a W525 detected, but only the 504 is shown and it is shown in the wrong location.


unit W504Test;

interface

uses
  System.Classes;

// Declare class in implementation, only the 504 warning is thrown in destructor
// nothing is shown for constructor
implementation 

type
  TBinWriter = class
  end;

  TContentBuilder = class(TStringList)
  private
    FBinWriter: TBinWriter;
  public
    constructor Create(ABinWriter: TBinWriter);
    destructor Destroy; override;
  end;

// Declare class in interface, behaviour is correct
// implementation 

constructor TContentBuilder.Create(ABinWriter: TBinWriter);
begin
//  inherited Create;
  FBinWriter := ABinWriter;
end;

destructor TContentBuilder.Destroy;
begin
  FBinWriter := Nil;
//  inherited;
end;

end.

This FixInsight bug bit me really hard until I spotted the missing "inherited create" bug in my code...

0

[W521] false positive when SetString is used

dummzeuch 9 years ago updated by Lübbe Onken 9 years ago 1

The following code produces a W521: Return value of function xxx might be undefined:


function GetModuleFilename(const _Module: Cardinal): string;

var

Buffer: array[0..260] of Char;

begin

SetString(Result, Buffer, Windows.GetModuleFilename(_Module, Buffer, SizeOf(Buffer)))
end;

It should not.

0

Fatal parser error OleVariant call

Anton Shchyrov 9 years ago updated 9 years ago 0
FWordBasic: OleVariant;

procedure TMOWordReport.InsertSound(const AFileName: string);
begin
   FWordBasic.InsertObject(
     FileName := AFileName,
     Link := 0,
     Tab := 1,
     Class := 'SoundRec'  // Fatal parser error
  );
end;
0

W510 False positive

Anonymous 9 years ago 0

Sample code:


var

lCounter : Integer;

begin

lCounter := 0;

repeat

inc(lCounter);

if lCounter div 100 = lCounter / 100 then //<- false positive "[FixInsight Warning] frmLogowanie.pas(305): W510 Values on both sides of the operator are equal"

begin
ShowProgress;

end;
until lCounter > 1000;
end;
0

[W517] Regression from 2015.11 to 2016.04: Too much classes hide warning

Uwe Schuster 9 years ago 0

2016.04 does not issue in contrast to 2015.11 the W517 warning, when too much classes are defined.


Steps:

- run FixInsight against the following code with fifty additional classes

-> no W517 is issues

- remove five classes and run FixInsight again

-> W517 Variable 'View' hides a class field, method or property


unit W517ToMuchClasses;

interface
type
TCisDBGrid = class(TObject)
private
function GetView: TObject;
public
property View: TObject read GetView;
end;
TClass001 = class(TObject);
TClass002 = class(TObject);
TClass003 = class(TObject);
TClass004 = class(TObject);
TClass005 = class(TObject);
TClass006 = class(TObject);
TClass007 = class(TObject);
TClass008 = class(TObject);
TClass009 = class(TObject);
TClass010 = class(TObject);
TClass011 = class(TObject);
TClass012 = class(TObject);
TClass013 = class(TObject);
TClass014 = class(TObject);
TClass015 = class(TObject);
TClass016 = class(TObject);
TClass017 = class(TObject);
TClass018 = class(TObject);
TClass019 = class(TObject);
TClass020 = class(TObject);
TClass021 = class(TObject);
TClass022 = class(TObject);
TClass023 = class(TObject);
TClass024 = class(TObject);
TClass025 = class(TObject);
TClass026 = class(TObject);
TClass027 = class(TObject);
TClass028 = class(TObject);
TClass029 = class(TObject);
TClass030 = class(TObject);
TClass031 = class(TObject);
TClass032 = class(TObject);
TClass033 = class(TObject);
TClass034 = class(TObject);
TClass035 = class(TObject);
TClass036 = class(TObject);
TClass037 = class(TObject);
TClass038 = class(TObject);
TClass039 = class(TObject);
TClass040 = class(TObject);
TClass041 = class(TObject);
TClass042 = class(TObject);
TClass043 = class(TObject);
TClass044 = class(TObject);
TClass045 = class(TObject);
TClass046 = class(TObject);
TClass047 = class(TObject);
TClass048 = class(TObject);
TClass049 = class(TObject);
TClass050 = class(TObject);

implementation

function TCisDBGrid.GetView: TObject;
var
View: TObject;
begin
Result := nil;
end;

end.