
C109 Unneeded boolean comparison
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;
....
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?

Warning for unneeded FixInsight ignores
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.

Better handling of invalid .ficfg files
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.

Fatal parser error
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.

Occurred O801 warning at the method of property getter.
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.

[W504] not detected when class is declared in the implementation part
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...

[W521] false positive when SetString is used
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
It should not.

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

W510 False positive
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;
until lCounter > 1000;
end;

[W517] Regression from 2015.11 to 2016.04: Too much classes hide warning
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.
Customer support service by UserEcho